#include <opennurbs_archive.h>

Inheritance diagram for ON_BinaryArchive:
ON_BinaryArchiveBuffer ON_BinaryFile ON_Read3dmBufferArchive ON_Write3dmBufferArchive

Public Types

enum  eStorageDeviceError : unsigned int {
  eStorageDeviceError::None = 0, eStorageDeviceError::WriteFailed = 0xFFFFFFF1, eStorageDeviceError::SeekFailedDuringWriting = 0xFFFFFFF2, eStorageDeviceError::ReadFailed = 0xFFFFFFF8,
  eStorageDeviceError::SeekFailedDuringReading = 0xFFFFFFF9, eStorageDeviceError::UnknownDeviceError = 0xFFFFFFFFU
}
 

Public Member Functions

 ON_BinaryArchive (ON::archive_mode)
 
virtual ~ON_BinaryArchive ()
 
ON_3dmArchiveTableType Active3dmTable () const
 
bool AddManifestMapItem (const class ON_ManifestMapItem &map_item)
 
const class ON_3dmPropertiesArchive3dmProperties () const
 
const class ON_3dmSettingsArchive3dmSettings () const
 
const ON_StringArchive3dmStartSectionComment () const
 
const ON_3dmArchiveTableStatus Archive3dmTableStatus (ON_3dmArchiveTableType table_type)
 
int Archive3dmVersion () const
 If a 3dm archive is being read or written, then this is the version of the 3dm archive format (1, 2, 3, 4, 5, 50, 60, ...). More...
 
bool ArchiveContains3dmTable (ON_3dmArchiveTableType table) const
 As time passes, more tables have been added to 3dm archives. More...
 
const ON_DimStyleArchiveCurrentDimStyle () const
 
const ON_UUID ArchiveCurrentDimStyleId () const
 
const int ArchiveCurrentDimStyleIndex () const
 
const ON_wStringArchiveDirectoryName () const
 
const wchar_t * ArchiveDirectoryNameAsPointer () const
 
bool ArchiveFileMoved () const
 
const ON_wStringArchiveFileName () const
 
const wchar_t * ArchiveFileNameAsPointer () const
 
const ON_wStringArchiveFullPath () const
 
const wchar_t * ArchiveFullPathAsPointer () const
 
unsigned int ArchiveOpenNURBSVersion () const
 If a 3dm archive is being read, then this is the version of openNURBS that was used to write the archive. This value is only available after ON_BinaryArchive::Read3dmProperties is called. More...
 
ON::RuntimeEnvironment ArchiveRuntimeEnvironment () const
 
const ON_wStringArchiveSavedAsFullPath () const
 
const wchar_t * ArchiveSavedAsFullPathPointer () const
 
size_t ArchiveStartOffset () const
 When a 3dm archive is saved from an MFC application that supports Windows linking/embedding, the first 5kb to 1mb of the file contains information that is put there by MFC. ArchiveStartOffset() returns the offset into the file where the 3dm archive actually begins. The call to ON_BinaryArchive::Read3dmStartSection() calculates this offset and stores the value in m_3dm_start_section_offset. More...
 
const ON_TextStyleArchiveTextStyleFromArchiveTextStyleIndex (int archive_text_style_index) const
 When reading version 5 and earlier files that contain a text style table, this function can be used to get the archive text style from the archive text style index. This function is used when reading V5 and pre August 2016 V6 ON_DimStyle information. More...
 
virtual bool AtEnd () const =0
 
unsigned int BadCRCCount () const
 
bool BeginRead3dmAnonymousChunk (int *version)
 Calls BeginWRead3dmChunk(TCODE_ANONYMOUS_CHUNK,&major_version,&minor_version), checks that 1 == major_version, minor_version >= 0 and returns the value of minor_version as version. More...
 
bool BeginRead3dmBigChunk (unsigned int *, ON__INT64 *)
 
bool BeginRead3dmBitmapTable ()
 
bool BeginRead3dmChunk (unsigned int expected_tcode, int *major_version, int *minor_version)
 Begins reading a chunk that must be in the archive at this location. More...
 
bool BeginRead3dmDimStyleTable ()
 
bool BeginRead3dmGroupTable ()
 
bool BeginRead3dmHatchPatternTable ()
 
bool BeginRead3dmHistoryRecordTable ()
 
bool BeginRead3dmInstanceDefinitionTable ()
 
bool BeginRead3dmLayerTable ()
 
bool BeginRead3dmLightTable ()
 
bool BeginRead3dmLinetypeTable ()
 
bool BeginRead3dmMaterialTable ()
 
bool BeginRead3dmObjectTable ()
 
bool BeginRead3dmTextureMappingTable ()
 
bool BeginRead3dmUserTable (ON_UUID &plugin_id, bool *bLastSavedAsGoo, int *archive_3dm_version, unsigned int *archive_opennurbs_version)
 
bool BeginReadDictionary (ON_UUID *dictionary_id, unsigned int *version, ON_wString &dictionary_name)
 
int BeginReadDictionaryEntry (int *de_type, ON_wString &entry_name)
 Begin reading a dictionary entry. More...
 
bool BeginWrite3dmAnonymousChunk (int version)
 If version >= 0, calls BeginWrite3dmChunk(TCODE_ANONYMOUS_CHUNK,1,version). More...
 
bool BeginWrite3dmBigChunk (ON__UINT32 typecode, ON__INT64 value)
 
bool BeginWrite3dmBitmapTable ()
 
bool BeginWrite3dmChunk (unsigned int, int)
 Writes a chunk header containing 4 byte typecode and value. More...
 
bool BeginWrite3dmChunk (unsigned int tcode, int major_version, int minor_version)
 Begins writing a chunk. More...
 
bool BeginWrite3dmDimStyleTable ()
 
bool BeginWrite3dmGroupTable ()
 
bool BeginWrite3dmHatchPatternTable ()
 
bool BeginWrite3dmHistoryRecordTable ()
 
bool BeginWrite3dmInstanceDefinitionTable ()
 
bool BeginWrite3dmLayerTable ()
 
bool BeginWrite3dmLightTable ()
 
bool BeginWrite3dmLinetypeTable ()
 
bool BeginWrite3dmMaterialTable ()
 
bool BeginWrite3dmObjectTable ()
 
bool BeginWrite3dmTextureMappingTable ()
 
bool BeginWrite3dmUserTable (ON_UUID plugin_id, bool bSavingGoo, int goo_3dm_version, unsigned int goo_opennurbs_version)
 Write the user table header information that must precede the user table information written by a plug-in. More...
 
bool BeginWrite3dmUserTable (const ON_UUID &)
 
bool BeginWriteDictionary (ON_UUID dictionary_id, unsigned int version, const wchar_t *dictionary_name)
 Begins writing a dictionary. More...
 
bool BeginWriteDictionaryEntry (int de_type, const wchar_t *entry_name)
 Begins writing a dictionary entry. More...
 
bool ChunkBoundaryCheck () const
 
void ClearModelSerialNumber ()
 Clear() information set by SetModelSerialNumber() do not modify ON_ModelComponent model serial number information when the classes are read. More...
 
unsigned int CriticalErrorCount () const
 
ON__UINT64 CurrentPosition () const
 
unsigned int Dump3dmChunk (ON_TextLog &text_log, int recursion_depth=0)
 Expert user function for studying contents of a file. The primary use is as an aid to help dig through files that have been damaged (bad disks, transmission errors, etc.) If an error is found, a line that begins with the word "ERROR" is printed. More...
 
bool EnableCRCCalculation (bool bEnable)
 Expert user function to control CRC calculation while reading and writing. Typically this is used when seeking around and reading/writing information in non-serial order. More...
 
void EnableSave3dmAnalysisMeshes (unsigned int object_type_flags, bool bSave3dmAnalysisMeshes)
 Specify which types of objects (ON_Brep, ON_Extrusion, ON_SubD, ...) save analysis meshes in the 3dm file. More...
 
void EnableSave3dmRenderMeshes (unsigned int object_type_flags, bool bSave3dmRenderMeshes)
 Specify which types of objects (ON_Brep, ON_Extrusion, ON_SubD, ...) save render meshes in the 3dm file. More...
 
ON::endian Endian () const
 
bool EndRead3dmBitmapTable ()
 
bool EndRead3dmChunk ()
 Calling this will skip rest of stuff in chunk if it was only partially read. More...
 
bool EndRead3dmChunk (bool bSupressPartiallyReadChunkWarning)
 
bool EndRead3dmDimStyleTable ()
 
bool EndRead3dmGroupTable ()
 
bool EndRead3dmHatchPatternTable ()
 
bool EndRead3dmHistoryRecordTable ()
 
bool EndRead3dmInstanceDefinitionTable ()
 
bool EndRead3dmLayerTable ()
 
bool EndRead3dmLightTable ()
 
bool EndRead3dmLinetypeTable ()
 
bool EndRead3dmMaterialTable ()
 
bool EndRead3dmObjectTable ()
 
bool EndRead3dmTextureMappingTable ()
 
bool EndRead3dmUserTable ()
 
bool EndReadDictionary ()
 
bool EndReadDictionaryEntry ()
 
bool EndWrite3dmBitmapTable ()
 
bool EndWrite3dmChunk ()
 updates length in chunk header More...
 
bool EndWrite3dmDimStyleTable ()
 
bool EndWrite3dmGroupTable ()
 
bool EndWrite3dmHatchPatternTable ()
 
bool EndWrite3dmHistoryRecordTable ()
 
bool EndWrite3dmInstanceDefinitionTable ()
 
bool EndWrite3dmLayerTable ()
 
bool EndWrite3dmLightTable ()
 
bool EndWrite3dmLinetypeTable ()
 
bool EndWrite3dmMaterialTable ()
 
bool EndWrite3dmObjectTable ()
 
bool EndWrite3dmTextureMappingTable ()
 
bool EndWrite3dmUserTable ()
 
bool EndWriteDictionary ()
 Begins writing a dictionary entry. More...
 
bool EndWriteDictionaryEntry ()
 
bool FindTableInDamagedArchive (unsigned int tcode_table, unsigned int tcode_record, ON_UUID class_uuid, int min_length_data)
 Expert user function for reading damaged files. The search starts at the beginning of the file. More...
 
ON_3dmArchiveTableType FirstFailed3dmTable () const
 
virtual bool Flush ()=0
 Force Write() to flush any buffered data to physical archive. More...
 
int GetCurrentChunk (ON_3DM_CHUNK &chunk) const
 Expert user function for reading damaged files. More...
 
int GetCurrentChunk (ON_3DM_BIG_CHUNK &big_chunk) const
 
unsigned int InstanceDefinitionModelSerialNumber () const
 
bool Internal_Read3dmDimStyleOverrides (class ON_Annotation &annotation, bool bFromDimStyleTable)
 
bool Internal_Write3dmDimStyleOverrides (const class ON_Annotation &annotation, const class ON_DimStyle *dim_style_overrides)
 
virtual int LoadUserDataApplication (ON_UUID application_id)
 When ON_BinaryArchive::ReadObject() encounters userdata and the user data class id is not present, LoadUserDataApplication is called to load the application that created user data. More...
 
const class ON_ComponentManifestManifest () const
 
const class ON_ManifestMapManifestMap () const
 
ON::archive_mode Mode () const
 
unsigned int ModelSerialNumber () const
 
bool ObjectHasUserDataToWrite (const class ON_Object *object) const
 Determine if an object has user data that should be written. More...
 
 ON_DEPRECATED_MSG ("Use either ReadStringUTF8ElementCount() or ReadStringUTF16ElementCount()") bool ReadStringSize(size_t *str_array_count)
 
bool PeekAt3dmBigChunkType (ON__UINT32 *typecode, ON__INT64 *big_value)
 
bool PeekAt3dmChunkType (unsigned int *, int *)
 
ON_3dmArchiveTableType Previous3dmTable () const
 
bool Read3dmAnonymousUserTable (int archive_3dm_version, unsigned int archive_opennurbs_version, ON_3dmGoo &goo)
 If the plug-in that wrote the user table is not present and you need to read and resave the user table, then use Read3dmAnonymousUserTable() to load the information into "goo". If you do not need to resave the information, then simply call EndRead3dmUserTable() to skip over this table. More...
 
int Read3dmBitmap (class ON_Bitmap **)
 
bool Read3dmChunkVersion (int *, int *)
 
int Read3dmDimStyle (class ON_DimStyle **ppDimStyle)
 Reads annotation dimension styles from dimension style table. If the dimension style definition is read, a dimension style is created by calling new ON_DimStyle(), initialized with values stored in the archive, and returned. More...
 
bool Read3dmEndMark (size_t *)
 Checks for a TCODE_ENDOFFILE chunk at the current position. If it finds one, it reads it and returns the number of bytes in the archive. Comparing this number with the current file position can help detect files that have been damaged by loosing sections. More...
 
bool Read3dmGoo (ON_3dmGoo &)
 
int Read3dmGroup (class ON_Group **)
 Reads groups from group table. If the group definition is read, a group is created by calling new ON_Group(), initialized with values stored in the archive, and returned. More...
 
int Read3dmHatchPattern (class ON_HatchPattern **)
 
int Read3dmHistoryRecord (class ON_HistoryRecord *&)
 
int Read3dmInstanceDefinition (class ON_InstanceDefinition **)
 Reads instance definitions from instance defintion table. More...
 
int Read3dmLayer (ON_Layer **)
 
int Read3dmLight (class ON_Light **light, class ON_3dmObjectAttributes *attributes)
 
int Read3dmLinetype (class ON_Linetype **)
 
int Read3dmMaterial (class ON_Material **)
 
int Read3dmModelGeometry (class ON_ModelGeometryComponent **model_geometry, unsigned int object_filter=0)
 
int Read3dmModelGeometryForExperts (bool bManageGeometry, bool bManageAttributes, class ON_ModelGeometryComponent **model_geometry, unsigned int object_filter)
 
int Read3dmModelLight (class ON_ModelGeometryComponent **model_light)
 
int Read3dmObject (ON_Object **model_object, ON_3dmObjectAttributes *attributes, unsigned int object_filter=0)
 
bool Read3dmProperties (class ON_3dmProperties &)
 
bool Read3dmReferencedComponentId (ON_ModelComponent::Type component_type, ON_UUID *component_id)
 When reading 3dm archives, the model component ID in the archive and in the destination model are often identical, but sometimes different. For example, the when the same template is used to create multiple models and files and the models from those files are merged into a single file, there will be ID collisions. For components that are identified by name, like layers and dimension styles, this is not a problem. For components like instance definitions that have a more complicated set of merging rules, it is critical that references to instance definition ids be updated from values in the arcive to values in the model. uses to adjust and write a model component Id. More...
 
bool Read3dmReferencedComponentIndex (ON_ModelComponent::Type component_type, int *component_index)
 When reading 3dm archives, model component indexes in the archive and in the destination model are typically different. This function basically reads and reverses the steps that WriteArchiveComponentIndex() uses to adjust and write a model component index. More...
 
bool Read3dmReferencedComponentIndexArray (ON_ModelComponent::Type component_type, ON_SimpleArray< int > &component_index_array)
 
bool Read3dmSettings (class ON_3dmSettings &)
 
bool Read3dmStartSection (int *version, ON_String &sStartSectionComment)
 
int Read3dmTextureMapping (class ON_TextureMapping **)
 
bool ReadArc (ON_Arc &)
 
bool ReadArray (ON_SimpleArray< bool > &)
 
bool ReadArray (ON_SimpleArray< char > &)
 
bool ReadArray (ON_SimpleArray< short > &)
 
bool ReadArray (ON_SimpleArray< int > &)
 
bool ReadArray (ON_SimpleArray< float > &)
 
bool ReadArray (ON_SimpleArray< double > &)
 
bool ReadArray (ON_SimpleArray< ON_Color > &)
 
bool ReadArray (ON_SimpleArray< ON_2dPoint > &)
 
bool ReadArray (ON_SimpleArray< ON_3dPoint > &)
 
bool ReadArray (ON_SimpleArray< ON_4dPoint > &)
 
bool ReadArray (ON_SimpleArray< ON_2dVector > &)
 
bool ReadArray (ON_SimpleArray< ON_3dVector > &)
 
bool ReadArray (ON_SimpleArray< ON_Xform > &)
 
bool ReadArray (ON_SimpleArray< ON_2fPoint > &)
 
bool ReadArray (ON_SimpleArray< ON_3fPoint > &)
 
bool ReadArray (ON_SimpleArray< ON_4fPoint > &)
 
bool ReadArray (ON_SimpleArray< ON_2fVector > &)
 
bool ReadArray (ON_SimpleArray< ON_3fVector > &)
 
bool ReadArray (ON_SimpleArray< ON_UUID > &)
 
bool ReadArray (ON_SimpleArray< ON_UuidIndex > &)
 
bool ReadArray (ON_SimpleArray< ON_UuidPtr > &)
 
bool ReadArray (ON_SimpleArray< ON_SurfaceCurvature > &)
 
bool ReadArray (ON_ClassArray< ON_String > &)
 
bool ReadArray (ON_ClassArray< ON_wString > &)
 
bool ReadArray (ON_SimpleArray< ON_DisplayMaterialRef > &)
 
bool ReadArray (ON_SimpleArray< ON_LinetypeSegment > &)
 
bool ReadArray (ON_SimpleArray< ON_MappingChannel > &)
 
bool ReadArray (ON_ClassArray< ON_MaterialRef > &)
 
bool ReadArray (ON_ClassArray< ON_MappingRef > &)
 
bool ReadArray (ON_ClassArray< class ON_ObjRef > &)
 
bool ReadArray (ON_SimpleArray< class ON_ObjRef_IRefID > &)
 
bool ReadArray (ON_SimpleArray< class ON_ClippingPlaneInfo > &)
 
bool ReadArray (ON_ObjectArray< class ON_Layer > &)
 
bool ReadArray (ON_SimpleArray< class ON_Layer *> &)
 
bool ReadBigInt (size_t, ON__INT64 *)
 
bool ReadBigInt (size_t, ON__UINT64 *)
 
bool ReadBigInt (ON__INT64 *)
 
bool ReadBigInt (ON__UINT64 *)
 
bool ReadBigSize (size_t *)
 
bool ReadBigTime (time_t *)
 
bool ReadBool (bool *)
 
bool ReadBoundingBox (ON_BoundingBox &)
 
ON__UINT64 ReadBuffer (ON__UINT64 sizeof_buffer, void *buffer)
 Expert user function that uses Read() to load a buffer. Paramters: sizeof_buffer - [in] number of bytes to attempt to read. buffer - [out] read bytes are stored in this buffer More...
 
bool ReadByte (size_t, void *)
 
bool ReadChar (size_t, char *)
 
bool ReadChar (size_t, unsigned char *)
 
bool ReadChar (char *)
 
bool ReadChar (unsigned char *)
 
bool ReadCircle (ON_Circle &)
 
bool ReadColor (ON_Color &)
 
bool ReadComponentIndex (ON_COMPONENT_INDEX &)
 
bool ReadCompressedBuffer (size_t sizeof__outbuffer, void *outbuffer, bool *bFailedCRC)
 Read compressed information from an archive and uncompress it. More...
 
bool ReadCompressedBufferSize (size_t *sizeof__outbuffer)
 Red the size of a compressed buffer. More...
 
bool ReadDisplayMaterialRef (ON_DisplayMaterialRef &)
 
bool ReadDouble (size_t, double *)
 
bool ReadDouble (double *)
 
bool ReadFloat (size_t, float *)
 
bool ReadFloat (float *)
 
bool ReadInt (size_t, int *)
 
bool ReadInt (size_t, unsigned int *)
 
bool ReadInt (int *)
 
bool ReadInt (unsigned int *)
 
bool ReadInterval (ON_Interval &)
 
bool ReadLine (ON_Line &)
 
bool ReadLinetypeSegment (ON_LinetypeSegment &)
 
bool ReadLong (size_t, long *)
 
bool ReadLong (size_t, unsigned long *)
 
bool ReadLong (long *)
 
bool ReadLong (unsigned long *)
 
bool ReadMode () const
 
bool ReadModelComponentAttributes (ON_ModelComponent &model_component, unsigned int *attributes_filter)
 Reads the attributes the Write() function writes. More...
 
int ReadObject (ON_Object **ppObject)
 Reads and object from a 3dm archive; More...
 
int ReadObject (ON_Object &object)
 Reads and object from a 3dm archive. More...
 
bool ReadObjectUserData (ON_Object &object)
 Low level tool to read user data and attach it to the object. This function should never be called directly. More...
 
bool ReadPlane (ON_Plane &)
 
bool ReadPlaneEquation (ON_PlaneEquation &)
 
bool ReadPoint (ON_2dPoint &)
 
bool ReadPoint (ON_3dPoint &)
 
bool ReadPoint (ON_4dPoint &)
 
bool ReadShort (size_t, short *)
 
bool ReadShort (size_t, unsigned short *)
 
bool ReadShort (short *)
 
bool ReadShort (unsigned short *)
 
bool ReadSize (size_t *)
 
bool ReadString (size_t str_array_count, char *str_array)
 
bool ReadString (size_t str_array_count, unsigned char *str_array)
 
bool ReadString (size_t str_array_count, unsigned short *str_array)
 
bool ReadString (ON_String &sUTF8)
 
bool ReadString (ON_wString &s)
 
bool ReadStringUTF16ElementCount (size_t *string_utf16_element_count)
 
bool ReadStringUTF8ElementCount (size_t *string_utf8_element_count)
 
bool ReadTime (struct tm &)
 
bool ReadUuid (ON_UUID &)
 
bool ReadV1_TCODE_ANNOTATION (unsigned int, ON_Object **, ON_3dmObjectAttributes *)
 
bool ReadV1_TCODE_LEGACY_CRV (ON_Object **, ON_3dmObjectAttributes *)
 
bool ReadV1_TCODE_LEGACY_FAC (ON_Object **, ON_3dmObjectAttributes *)
 
bool ReadV1_TCODE_LEGACY_SHL (ON_Object **, ON_3dmObjectAttributes *)
 
bool ReadV1_TCODE_MESH_OBJECT (ON_Object **, ON_3dmObjectAttributes *)
 
bool ReadV1_TCODE_RH_POINT (ON_Object **, ON_3dmObjectAttributes *)
 helpers for reading V1 objects More...
 
bool ReadV1_TCODE_RHINOIO_OBJECT_BREP (ON_Object **, ON_3dmObjectAttributes *)
 
bool ReadV1_TCODE_RHINOIO_OBJECT_NURBS_CURVE (ON_Object **, ON_3dmObjectAttributes *)
 
bool ReadV1_TCODE_RHINOIO_OBJECT_NURBS_SURFACE (ON_Object **, ON_3dmObjectAttributes *)
 
bool ReadVector (ON_2dVector &)
 
bool ReadVector (ON_3dVector &)
 
bool ReadWideString (ON_wString &wide_string)
 Read a wide string written with the WriteWideString() function. More...
 
bool ReadXform (ON_Xform &)
 
bool ReferencedComponentIdMapping () const
 
bool ReferencedComponentIndexMapping () const
 
unsigned int ReferenceModelSerialNumber () const
 
bool Save3dmAnalysisMesh (ON::object_type object_type) const
 
unsigned int Save3dmAnalysisMeshObjectTypeFlags () const
 Specify which types of objects (ON_Brep, ON_Extrusion, ON_SubD, ...) save analysis meshes in the 3dm file. More...
 
bool Save3dmPreviewImage () const
 
bool Save3dmRenderMesh (ON::object_type object_type) const
 
unsigned int Save3dmRenderMeshObjectTypeFlags () const
 Specify which types of objects (ON_Brep, ON_Extrusion, ON_SubD, ...) save render meshes in the 3dm file. More...
 
bool Seek3dmChunkFromCurrentPosition (unsigned int)
 
bool Seek3dmChunkFromStart (unsigned int)
 
bool SeekBackward (ON__UINT64 bytes_backward)
 Reduce the archive's current position by bytes_backward from the current position. More...
 
bool SeekForward (ON__UINT64 bytes_forward)
 Increase the archive's current position to bytes_forward from the current position. More...
 
bool SeekFromStart (ON__UINT64 bytes_from_start)
 Set current position to bytes_from_start many bytes from the start of the archive. More...
 
bool SetArchive3dmVersion (int)
 
void SetArchiveFullPath (const wchar_t *archive_full_path)
 
void SetArchiveFullPath (const wchar_t *archive_directory_name, const wchar_t *archive_file_name)
 
void SetChunkBoundaryCheck (bool bChunkBoundaryCheck)
 
void SetModelSerialNumber (unsigned int model_serial_number, unsigned int reference_model_serial_number, unsigned int instance_definition_model_serial_number)
 Specify model serial number attributes to assign to ON_ModelComponent classes when they are read. More...
 
void SetReferencedComponentIdMapping (bool bEnableReferenceComponentIdMapping)
 Set the archive's ReferencedComponentIdMapping() state. More...
 
void SetReferencedComponentIndexMapping (bool bEnableReferenceComponentIndexMapping)
 Set the archive's ReferencedComponentIndexMapping() state. More...
 
void SetSave3dmPreviewImage (bool bSave3dmPreviewImage)
 
bool SetShouldSerializeUserDataDefault (bool bSerialize)
 Specify the serialization option for object user data and user tables that are not explicity set by SetShouldSerializeUserDataItem(). More...
 
bool SetShouldSerializeUserDataItem (ON_UUID application_id, ON_UUID item_id, bool bSerializeUserDataItem)
 Specify if an application's (plug-in's) object user data or user table should be read or written. More...
 
void SetStorageDeviceError (ON_BinaryArchive::eStorageDeviceError storage_device_error)
 A non-zero storage device error terminates reading or writing. See the ON_BinaryArchive::eStorageDeviceError for values. Parameter: storage_device_error - [in] A non-zero code that identifies an error the terminates reading or writing. See ON_BinaryArchive::CriticalErrorCodes for values More...
 
void SetStorageDeviceError (unsigned int storage_device_error)
 
void SetUseBufferCompression (bool bUseBufferCompression)
 Control when some information, like preview images and mesh information, is compressed when writing 3dm archives. The default is true. In special situations when the storage media is extremely fast and large file size is not a concern, disabling buffer compression can reduce file write time. More...
 
bool ShouldSerializeAllUserData () const
 
bool ShouldSerializeNoUserData () const
 
bool ShouldSerializeSomeUserData () const
 
bool ShouldSerializeUserDataDefault () const
 
bool ShouldSerializeUserDataItem (ON_UUID application_id, ON_UUID item_id) const
 Determine if an application's (plug-in's) object user data or user table should be read or written. More...
 
bool ShouldWriteUserDataItem (const class ON_Object *object, const class ON_UserData *object_user_data) const
 
size_t SizeofChunkLength () const
 
unsigned int StorageDeviceError () const
 An error terminated reading or writing More...
 
bool UnsetMode () const
 
bool UpdateManifestMapItemDestination (const class ON_ManifestMapItem &map_item)
 When an application is reading an archive and changes the index or id of a model component as it is added to the model, then it needs to update the manifest map item destination settings. More...
 
bool UseBufferCompression () const
 
bool Write3dmAnonymousUserTable (const class ON_3dmGoo &)
 
bool Write3dmAnonymousUserTableRecord (ON_UUID plugin_id, int goo_3dm_version, unsigned int goo_opennurbs_version, const class ON_3dmGoo &goo)
 If Read3dmAnaonymousUserTable() was used to read ON_3dmGoo because a plug-in was not present, then use Write3dmAnonymousUserTableRecord() to put than information back into the archive. Write3dmAnonymousUserTableRecord() writes the entire record. Do NOT call BeginWrite3dmUserTable() / EndWrite3dmUserTable() when using Write3dmAnonymousUserTableRecord(). More...
 
bool Write3dmBitmap (const class ON_Bitmap &)
 
bool Write3dmChunkVersion (int, int)
 
bool Write3dmDimStyle (const class ON_DimStyle &)
 
bool Write3dmDimStyleComponent (const class ON_ModelComponentReference &model_component_reference)
 
bool Write3dmDimStyleComponent (const class ON_ModelComponent *model_component)
 
bool Write3dmEndMark ()
 Writes a TCODE_ENDOFFILE chunk that contains the number of bytes in the archive. More...
 
bool Write3dmGoo (const ON_3dmGoo &)
 
bool Write3dmGroup (const class ON_Group &)
 
bool Write3dmGroupComponent (const class ON_ModelComponentReference &model_component_reference)
 
bool Write3dmGroupComponent (const class ON_ModelComponent *model_component)
 
bool Write3dmHatchPattern (const class ON_HatchPattern &)
 
bool Write3dmHatchPatternComponent (const class ON_ModelComponentReference &model_component_reference)
 
bool Write3dmHatchPatternComponent (const class ON_ModelComponent *model_component)
 
bool Write3dmHistoryRecord (const class ON_HistoryRecord &)
 
bool Write3dmHistoryRecordComponent (const class ON_ModelComponentReference &model_component_reference)
 
bool Write3dmHistoryRecordComponent (const class ON_ModelComponent *model_component)
 
bool Write3dmImageComponent (const class ON_ModelComponentReference &model_component_reference)
 
bool Write3dmImageComponent (const class ON_ModelComponent *model_component)
 
bool Write3dmInstanceDefinition (const class ON_InstanceDefinition &)
 
bool Write3dmInstanceDefinitionComponent (const class ON_ModelComponentReference &model_component_reference)
 
bool Write3dmInstanceDefinitionComponent (const class ON_ModelComponent *model_component)
 
bool Write3dmLayer (const ON_Layer &)
 
bool Write3dmLayerComponent (const class ON_ModelComponentReference &model_component_reference)
 
bool Write3dmLayerComponent (const class ON_ModelComponent *model_component)
 
bool Write3dmLight (const class ON_Light &, const class ON_3dmObjectAttributes *)
 
bool Write3dmLinePatternComponent (const class ON_ModelComponentReference &model_component_reference)
 
bool Write3dmLinePatternComponent (const class ON_ModelComponent *model_component)
 
bool Write3dmLinetype (const class ON_Linetype &line_pattern)
 
bool Write3dmMaterial (const class ON_Material &)
 
bool Write3dmMaterialComponent (const class ON_ModelComponentReference &model_component_reference)
 
bool Write3dmMaterialComponent (const class ON_ModelComponent *model_component)
 
bool Write3dmModelGeometryComponent (const class ON_ModelComponentReference &model_component_reference)
 
bool Write3dmModelGeometryComponent (const class ON_ModelGeometryComponent *model_geometry)
 
bool Write3dmModelLightComponent (const class ON_ModelComponentReference &model_component_reference)
 
bool Write3dmModelLightComponent (const class ON_ModelGeometryComponent *model_light)
 
bool Write3dmObject (const ON_Object &, const ON_3dmObjectAttributes *)
 
bool Write3dmProperties (const class ON_3dmProperties &)
 
bool Write3dmReferencedComponentId (ON_ModelComponent::Type component_type, ON_UUID model_component_id)
 WriteComponentId converts the model ID into an archive ID and writes the archive Id value. Generally, the ID of the component in the model is identical to the ID of the component in the archive. In rare situations this is not the case. More...
 
bool Write3dmReferencedComponentId (const ON_ModelComponent &model_component)
 
bool Write3dmReferencedComponentIndex (ON_ModelComponent::Type component_type, int model_component_index)
 When writing archives, the index of the component in the model is often different than the index of the component in the archive. WriteComponentIndex converts the model id or index into an archive index and writes the archive index value. More...
 
bool Write3dmReferencedComponentIndex (ON_ModelComponent::Type component_type, ON_UUID model_component_id)
 When writing archives, the index of the component in the model is often different than the index of the component in the archive. WriteComponentIndex converts the model id or index into an archive index and writes the archive index value. More...
 
bool Write3dmReferencedComponentIndex (const ON_ModelComponent &model_component)
 When writing archives, the index of the component in the model is often different than the index of the component in the archive. WriteComponentIndex converts the model id or index into an archive index and writes the archive index value. More...
 
bool Write3dmSettings (const class ON_3dmSettings &)
 
bool Write3dmStartSection (int version, const char *sStartSectionComment)
 
bool Write3dmTextureMapping (const class ON_TextureMapping &)
 
bool Write3dmTextureMappingComponent (const class ON_ModelComponentReference &model_component_reference)
 
bool Write3dmTextureMappingComponent (const class ON_ModelComponent *model_component)
 
bool WriteArc (const ON_Arc &)
 
bool WriteArray (const ON_SimpleArray< bool > &)
 
bool WriteArray (const ON_SimpleArray< char > &)
 
bool WriteArray (const ON_SimpleArray< short > &)
 
bool WriteArray (const ON_SimpleArray< int > &)
 
bool WriteArray (const ON_SimpleArray< float > &)
 
bool WriteArray (const ON_SimpleArray< double > &)
 
bool WriteArray (const ON_SimpleArray< ON_Color > &)
 
bool WriteArray (const ON_SimpleArray< ON_2dPoint > &)
 
bool WriteArray (const ON_SimpleArray< ON_3dPoint > &)
 
bool WriteArray (const ON_SimpleArray< ON_4dPoint > &)
 
bool WriteArray (const ON_SimpleArray< ON_2dVector > &)
 
bool WriteArray (const ON_SimpleArray< ON_3dVector > &)
 
bool WriteArray (const ON_SimpleArray< ON_2fPoint > &)
 
bool WriteArray (const ON_SimpleArray< ON_3fPoint > &)
 
bool WriteArray (const ON_SimpleArray< ON_4fPoint > &)
 
bool WriteArray (const ON_SimpleArray< ON_2fVector > &)
 
bool WriteArray (const ON_SimpleArray< ON_3fVector > &)
 
bool WriteArray (const ON_SimpleArray< ON_Xform > &)
 
bool WriteArray (const ON_SimpleArray< ON_UUID > &)
 
bool WriteArray (const ON_SimpleArray< ON_UuidIndex > &)
 
bool WriteArray (const ON_SimpleArray< ON_UuidPtr > &)
 
bool WriteArray (const ON_SimpleArray< ON_SurfaceCurvature > &)
 
bool WriteArray (const ON_ClassArray< ON_String > &)
 
bool WriteArray (const ON_ClassArray< ON_wString > &)
 
bool WriteArray (const ON_SimpleArray< ON_DisplayMaterialRef > &)
 
bool WriteArray (const ON_SimpleArray< ON_LinetypeSegment > &)
 
bool WriteArray (const ON_SimpleArray< ON_MappingChannel > &)
 
bool WriteArray (const ON_ClassArray< ON_MaterialRef > &)
 
bool WriteArray (const ON_ClassArray< ON_MappingRef > &)
 
bool WriteArray (const ON_ClassArray< class ON_ObjRef > &)
 
bool WriteArray (const ON_SimpleArray< class ON_ObjRef_IRefID > &)
 
bool WriteArray (const ON_SimpleArray< class ON_ClippingPlaneInfo > &)
 
bool WriteArray (int count, const class ON_Layer *)
 
bool WriteArray (int count, const class ON_Layer *const *)
 
bool WriteBigInt (size_t, const ON__INT64 *)
 
bool WriteBigInt (size_t, const ON__UINT64 *)
 
bool WriteBigInt (ON__INT64)
 
bool WriteBigInt (ON__UINT64)
 
bool WriteBigSize (size_t)
 
bool WriteBigTime (time_t)
 
bool WriteBool (bool)
 
bool WriteBoolFalse ()
 
bool WriteBoolTrue ()
 
bool WriteBoundingBox (const ON_BoundingBox &)
 
bool WriteByte (size_t, const void *)
 
bool WriteChar (size_t, const char *)
 
bool WriteChar (size_t, const unsigned char *)
 
bool WriteChar (char)
 
bool WriteChar (unsigned char)
 
bool WriteCircle (const ON_Circle &)
 
bool WriteColor (const ON_Color &)
 
bool WriteComponentIndex (const ON_COMPONENT_INDEX &)
 
bool WriteCompressedBuffer (size_t sizeof__inbuffer, const void *inbuffer)
 Compress buffer and write the compressed information to the archive. More...
 
bool WriteDisplayMaterialRef (const ON_DisplayMaterialRef &)
 
bool WriteDouble (size_t, const double *)
 
bool WriteDouble (double)
 
bool WriteFloat (size_t, const float *)
 
bool WriteFloat (float)
 
bool WriteInt (size_t, const int *)
 
bool WriteInt (size_t, const unsigned int *)
 
bool WriteInt (int)
 
bool WriteInt (unsigned int)
 
bool WriteInterval (const ON_Interval &)
 
bool WriteLine (const ON_Line &)
 
bool WriteLinetypeSegment (const ON_LinetypeSegment &)
 
bool WriteLong (size_t, const long *)
 
bool WriteLong (size_t, const unsigned long *)
 
bool WriteLong (long)
 
bool WriteLong (unsigned long)
 
bool WriteMode () const
 
bool WriteModelComponentAttributes (const class ON_ModelComponent &model_component, unsigned int attributes_filter)
 Writes the attributes identified by the component_filter parameter. More...
 
bool WriteModelComponentName (const ON_ModelComponent &model_component)
 
bool WriteObject (const ON_Object *)
 
bool WriteObject (const ON_Object &)
 
bool WriteObjectUserData (const ON_Object &object)
 Low level tool to writes user data attached to the object. This function should never be called directly. More...
 
bool WritePlane (const ON_Plane &)
 
bool WritePlaneEquation (const ON_PlaneEquation &)
 
bool WritePoint (const ON_2dPoint &)
 
bool WritePoint (const ON_3dPoint &)
 
bool WritePoint (const ON_4dPoint &)
 
bool WriteShort (size_t, const short *)
 
bool WriteShort (size_t, const unsigned short *)
 
bool WriteShort (short)
 
bool WriteShort (unsigned short)
 
bool WriteSize (size_t)
 
bool WriteString (const char *sUTF8)
 
bool WriteString (const unsigned char *sUTF8)
 
bool WriteString (const ON_String &sUTF8)
 
bool WriteString (const ON_wString &s)
 
bool WriteTime (const struct tm &)
 
bool WriteUTF16String (const unsigned short *sUTF16)
 
bool WriteUuid (const ON_UUID &)
 
bool WriteVector (const ON_2dVector &)
 
bool WriteVector (const ON_3dVector &)
 
bool WriteWideString (const wchar_t *sWideChar, int sWideChar_count)
 Write a wide string as a UTF-8 encoded string. More...
 
bool WriteWideString (const ON_wString &wide_string)
 Write a wide string as a UTF-8 encoded string. More...
 
bool WriteXform (const ON_Xform &)
 

Static Public Member Functions

static bool ArchiveContains3dmTable (ON_3dmArchiveTableType table, unsigned int archive_3dm_version, unsigned int opennurbs_library_version)
 
static unsigned int ArchiveOpenNURBSVersionToWrite (unsigned int archive_3dm_version, unsigned int opennurbs_version)
 If a 3dm archive is being written to a version 2,3,4 or 50 format, then new format opennurbs version numbers need to be saved in the old YYYYMMDDN format. This function returns the value that should be written in the file. More...
 
static int CurrentArchiveVersion ()
 
static char * ON_TypecodeParse (unsigned int tcode, char *typecode_name, size_t max_length)
 
static ON_BinaryArchive::eStorageDeviceError StorageDeviceErrorFromUnsigned (unsigned int storage_device_error_as_unsigned)
 
static ON_ModelComponent::Type TableComponentType (ON_3dmArchiveTableType table_type)
 
static bool ToggleByteOrder (size_t, size_t, const void *, void *)
 Tool for swapping bytes when doing I/O on using big endian CPUs. More...
 
static const char * TypecodeName (unsigned int tcode)
 

Protected Member Functions

unsigned int ErrorMessageMask () const
 
virtual ON__UINT64 Internal_CurrentPositionOverride () const =0
 
virtual size_t Internal_ReadOverride (size_t, void *)=0
 
virtual bool Internal_SeekFromCurrentPositionOverride (int)=0
 
virtual bool Internal_SeekToStartOverride ()=0
 
virtual size_t Internal_WriteOverride (size_t, const void *)=0
 
bool MaskReadError (ON__UINT64 sizeof_request, ON__UINT64 sizeof_read) const
 

Friends

void ON_SetBinaryArchiveOpenNURBSVersion (ON_BinaryArchive &, unsigned int)
 

Member Enumeration Documentation

◆ eStorageDeviceError

enum ON_BinaryArchive::eStorageDeviceError : unsigned int
strong
Enumerator
None 
WriteFailed 
SeekFailedDuringWriting 
ReadFailed 
SeekFailedDuringReading 
UnknownDeviceError 

Constructor & Destructor Documentation

◆ ON_BinaryArchive()

ON_BinaryArchive::ON_BinaryArchive ( ON::archive_mode  )

◆ ~ON_BinaryArchive()

virtual ON_BinaryArchive::~ON_BinaryArchive ( )
virtual

Member Function Documentation

◆ Active3dmTable()

ON_3dmArchiveTableType ON_BinaryArchive::Active3dmTable ( ) const
Returns
If a 3dm archive is being read or written, the value of the archive section (table) being read is returned. ON_3dmArchiveTableType::Unset is returned if a table is not actively being read or written.

Use ON_BinaryArchive::Mode() to determine if a binary archive is being read or written. Use ON_BinaryArchive::Previous3dmTable() to determine the most recent table that was successfully read and finished.

◆ AddManifestMapItem()

bool ON_BinaryArchive::AddManifestMapItem ( const class ON_ManifestMapItem map_item)

◆ Archive3dmProperties()

const class ON_3dmProperties& ON_BinaryArchive::Archive3dmProperties ( ) const
Returns
A copy of the ON_3dmProperties information written to or read from the archive. If this function is called before Write3dmProperties() or Read3dmProperties(), it returns ON_3dmProperties:Empty;

◆ Archive3dmSettings()

const class ON_3dmSettings& ON_BinaryArchive::Archive3dmSettings ( ) const
Returns
A copy of the ON_3dmSettings information written to or read from the archive. If this function is called before Write3dmSettings() or Read3dmSettings(), it returns ON_3dmSettings:Default;

◆ Archive3dmStartSectionComment()

const ON_String& ON_BinaryArchive::Archive3dmStartSectionComment ( ) const
Returns
A copy of the start section comment written to or read from the archive. If this function is called before Write3dmStartSection() or Read3dmStartSection(), it returns ON_String:EmptyString;

◆ Archive3dmTableStatus()

const ON_3dmArchiveTableStatus ON_BinaryArchive::Archive3dmTableStatus ( ON_3dmArchiveTableType  table_type)

◆ Archive3dmVersion()

int ON_BinaryArchive::Archive3dmVersion ( ) const

If a 3dm archive is being read or written, then this is the version of the 3dm archive format (1, 2, 3, 4, 5, 50, 60, ...).

Returns
table 0 a 3dm archive is not being read/written 1 a version 1 3dm archive is being read/written 2 a version 2 3dm archive is being read/written 3 a version 3 3dm archive is being read/written 4 a version 4 3dm archive is being read/written 5 an old version 5 3dm archive is being read 50 a version 5 3dm archive is being read/written 60 a version 6 3dm archive is being read/written ...
See also
ON_BinaryArchive::ArchiveOpenNURBSVersion

◆ ArchiveContains3dmTable() [1/2]

bool ON_BinaryArchive::ArchiveContains3dmTable ( ON_3dmArchiveTableType  table) const

As time passes, more tables have been added to 3dm archives.

Parameters
table[in]
Returns
True if this archive has the specified table

◆ ArchiveContains3dmTable() [2/2]

static bool ON_BinaryArchive::ArchiveContains3dmTable ( ON_3dmArchiveTableType  table,
unsigned int  archive_3dm_version,
unsigned int  opennurbs_library_version 
)
static
Parameters
archive_3dm_version[in] 1,2,3,4,5,50,60,...
opennurbs_library_version[in] a number > 100000000

◆ ArchiveCurrentDimStyle()

const ON_DimStyle& ON_BinaryArchive::ArchiveCurrentDimStyle ( ) const

◆ ArchiveCurrentDimStyleId()

const ON_UUID ON_BinaryArchive::ArchiveCurrentDimStyleId ( ) const

◆ ArchiveCurrentDimStyleIndex()

const int ON_BinaryArchive::ArchiveCurrentDimStyleIndex ( ) const

◆ ArchiveDirectoryName()

const ON_wString& ON_BinaryArchive::ArchiveDirectoryName ( ) const

◆ ArchiveDirectoryNameAsPointer()

const wchar_t* ON_BinaryArchive::ArchiveDirectoryNameAsPointer ( ) const

◆ ArchiveFileMoved()

bool ON_BinaryArchive::ArchiveFileMoved ( ) const
Returns
true if the 3dm archive being read is not in the same file system location as where is was saved.

◆ ArchiveFileName()

const ON_wString& ON_BinaryArchive::ArchiveFileName ( ) const

◆ ArchiveFileNameAsPointer()

const wchar_t* ON_BinaryArchive::ArchiveFileNameAsPointer ( ) const

◆ ArchiveFullPath()

const ON_wString& ON_BinaryArchive::ArchiveFullPath ( ) const

◆ ArchiveFullPathAsPointer()

const wchar_t* ON_BinaryArchive::ArchiveFullPathAsPointer ( ) const

◆ ArchiveOpenNURBSVersion()

unsigned int ON_BinaryArchive::ArchiveOpenNURBSVersion ( ) const

If a 3dm archive is being read, then this is the version of openNURBS that was used to write the archive. This value is only available after ON_BinaryArchive::Read3dmProperties is called.

Returns
Version of openNURBS used to write the archive. The openNURBS version is the value returned by ON::Version.

This value is rarely needed. You probably want to use ON_BinaryArchive::Archive3dmVersion.

See also
ON::Version, ON_BinaryArchive::Read3dmProperties, ON_BinaryArchive::Archive3dmVersion

◆ ArchiveOpenNURBSVersionToWrite()

static unsigned int ON_BinaryArchive::ArchiveOpenNURBSVersionToWrite ( unsigned int  archive_3dm_version,
unsigned int  opennurbs_version 
)
static

If a 3dm archive is being written to a version 2,3,4 or 50 format, then new format opennurbs version numbers need to be saved in the old YYYYMMDDN format. This function returns the value that should be written in the file.

Parameters
archive_3dm_version[in] Version of the file that is being written (2, 3, 4, 50, 60, ...)
opennurbs_version[in] opennurbs version number
Returns
Value to save in the file.

◆ ArchiveRuntimeEnvironment()

ON::RuntimeEnvironment ON_BinaryArchive::ArchiveRuntimeEnvironment ( ) const
Returns
The runtime environment where the archive was created.

When reading an archive, compare the values of ON_BinaryArchive::ArchiveRuntimeEnvironment() and ON::CurrentRuntimeEnvironment() to determine if adjustments need to be made to resources provided by runtime enviroments, like fonts.

◆ ArchiveSavedAsFullPath()

const ON_wString& ON_BinaryArchive::ArchiveSavedAsFullPath ( ) const

◆ ArchiveSavedAsFullPathPointer()

const wchar_t* ON_BinaryArchive::ArchiveSavedAsFullPathPointer ( ) const

◆ ArchiveStartOffset()

size_t ON_BinaryArchive::ArchiveStartOffset ( ) const

When a 3dm archive is saved from an MFC application that supports Windows linking/embedding, the first 5kb to 1mb of the file contains information that is put there by MFC. ArchiveStartOffset() returns the offset into the file where the 3dm archive actually begins. The call to ON_BinaryArchive::Read3dmStartSection() calculates this offset and stores the value in m_3dm_start_section_offset.

Returns
Offset into the binary "file" where the actual 3dm archive begins.

Generally, this value can be ignored. This function is a diagnostice tool that is used to analyzed damaged files.

◆ ArchiveTextStyleFromArchiveTextStyleIndex()

const ON_TextStyle* ON_BinaryArchive::ArchiveTextStyleFromArchiveTextStyleIndex ( int  archive_text_style_index) const

When reading version 5 and earlier files that contain a text style table, this function can be used to get the archive text style from the archive text style index. This function is used when reading V5 and pre August 2016 V6 ON_DimStyle information.

◆ AtEnd()

virtual bool ON_BinaryArchive::AtEnd ( ) const
pure virtual
Returns
True if current position is at the end of the archive.

Implemented in ON_Write3dmBufferArchive, ON_Read3dmBufferArchive, ON_BinaryArchiveBuffer, and ON_BinaryFile.

◆ BadCRCCount()

unsigned int ON_BinaryArchive::BadCRCCount ( ) const
Returns
Number of chunks read with a bad CRC

◆ BeginRead3dmAnonymousChunk()

bool ON_BinaryArchive::BeginRead3dmAnonymousChunk ( int *  version)

Calls BeginWRead3dmChunk(TCODE_ANONYMOUS_CHUNK,&major_version,&minor_version), checks that 1 == major_version, minor_version >= 0 and returns the value of minor_version as version.

Parameters
version[out]

◆ BeginRead3dmBigChunk()

bool ON_BinaryArchive::BeginRead3dmBigChunk ( unsigned int *  ,
ON__INT64 *   
)

◆ BeginRead3dmBitmapTable()

bool ON_BinaryArchive::BeginRead3dmBitmapTable ( )

◆ BeginRead3dmChunk()

bool ON_BinaryArchive::BeginRead3dmChunk ( unsigned int  expected_tcode,
int *  major_version,
int *  minor_version 
)

Begins reading a chunk that must be in the archive at this location.

Parameters
expected_tcode[in] chunk's typecode from opennurbs_3dm.h
major_version[out]
minor_version[out]
Returns
True if beginning of the chunk was read. In this case You must call EndRead3dmChunk(), even if something goes wrong while you attempt to read the interior of the chunk. False if the chunk did not exist at the current location in the file.

◆ BeginRead3dmDimStyleTable()

bool ON_BinaryArchive::BeginRead3dmDimStyleTable ( )

◆ BeginRead3dmGroupTable()

bool ON_BinaryArchive::BeginRead3dmGroupTable ( )

◆ BeginRead3dmHatchPatternTable()

bool ON_BinaryArchive::BeginRead3dmHatchPatternTable ( )

◆ BeginRead3dmHistoryRecordTable()

bool ON_BinaryArchive::BeginRead3dmHistoryRecordTable ( )

◆ BeginRead3dmInstanceDefinitionTable()

bool ON_BinaryArchive::BeginRead3dmInstanceDefinitionTable ( )

◆ BeginRead3dmLayerTable()

bool ON_BinaryArchive::BeginRead3dmLayerTable ( )

◆ BeginRead3dmLightTable()

bool ON_BinaryArchive::BeginRead3dmLightTable ( )

◆ BeginRead3dmLinetypeTable()

bool ON_BinaryArchive::BeginRead3dmLinetypeTable ( )

◆ BeginRead3dmMaterialTable()

bool ON_BinaryArchive::BeginRead3dmMaterialTable ( )

◆ BeginRead3dmObjectTable()

bool ON_BinaryArchive::BeginRead3dmObjectTable ( )

◆ BeginRead3dmTextureMappingTable()

bool ON_BinaryArchive::BeginRead3dmTextureMappingTable ( )

◆ BeginRead3dmUserTable()

bool ON_BinaryArchive::BeginRead3dmUserTable ( ON_UUID plugin_id,
bool *  bLastSavedAsGoo,
int *  archive_3dm_version,
unsigned int *  archive_opennurbs_version 
)
Parameters
plugin_id[out] id of plug-in that wrote the user table
bLastSavedAsGoo[out] True if this table was saved into this archive as goo because the plug-in was not present at the time of the save.
archive_3dm_version[out] Version of the archive the plug-in wrote to. When bLastSavedAsGoo is true, this number can be different from Archive3dmVersion().
archive_opennurbs_version[out] Version of opennurbs the plug-in used to write the archive. When bLastSavedAsGoo is true, this number can be different from ArchiveOpenNURBSVersion().
Returns
False when there are no more user tables or an IO error occurs.

◆ BeginReadDictionary()

bool ON_BinaryArchive::BeginReadDictionary ( ON_UUID dictionary_id,
unsigned int *  version,
ON_wString dictionary_name 
)

◆ BeginReadDictionaryEntry()

int ON_BinaryArchive::BeginReadDictionaryEntry ( int *  de_type,
ON_wString entry_name 
)

Begin reading a dictionary entry.

Parameters
de_type[out]
entry_name[out]
Returns
0: serious IO error 1: success read information and then call EndReadDictionaryEntry() 2: at end of dictionary

◆ BeginWrite3dmAnonymousChunk()

bool ON_BinaryArchive::BeginWrite3dmAnonymousChunk ( int  version)

If version >= 0, calls BeginWrite3dmChunk(TCODE_ANONYMOUS_CHUNK,1,version).

◆ BeginWrite3dmBigChunk()

bool ON_BinaryArchive::BeginWrite3dmBigChunk ( ON__UINT32  typecode,
ON__INT64  value 
)

◆ BeginWrite3dmBitmapTable()

bool ON_BinaryArchive::BeginWrite3dmBitmapTable ( )

◆ BeginWrite3dmChunk() [1/2]

bool ON_BinaryArchive::BeginWrite3dmChunk ( unsigned  int,
int   
)

Writes a chunk header containing 4 byte typecode and value.

Parameters
typecode[in] a TCODE_* number from opennurbs_3dm.h
value[in] if (typecode&TCODE_SHORT) is nonzero, then this is the value to be saved. Othewise, pass a zero and the EndWrite3dmChunk() call will store the length of the chunk.
Returns
true if write was successful.

◆ BeginWrite3dmChunk() [2/2]

bool ON_BinaryArchive::BeginWrite3dmChunk ( unsigned int  tcode,
int  major_version,
int  minor_version 
)

Begins writing a chunk.

Parameters
tcode[in] chunk's typecode from opennurbs_3dm.h. This cannot be a short tcode.
major_version[in] ( >= 1)
minor_version[in] ( >= 0 )
Returns
True if input was valid and chunk was started. In this case You must call EndWrite3dmChunk(), even if something goes wrong while you attempt to write the contents of the chunk. False if input was not valid or the write failed.

◆ BeginWrite3dmDimStyleTable()

bool ON_BinaryArchive::BeginWrite3dmDimStyleTable ( )

◆ BeginWrite3dmGroupTable()

bool ON_BinaryArchive::BeginWrite3dmGroupTable ( )

◆ BeginWrite3dmHatchPatternTable()

bool ON_BinaryArchive::BeginWrite3dmHatchPatternTable ( )

◆ BeginWrite3dmHistoryRecordTable()

bool ON_BinaryArchive::BeginWrite3dmHistoryRecordTable ( )

◆ BeginWrite3dmInstanceDefinitionTable()

bool ON_BinaryArchive::BeginWrite3dmInstanceDefinitionTable ( )

◆ BeginWrite3dmLayerTable()

bool ON_BinaryArchive::BeginWrite3dmLayerTable ( )

◆ BeginWrite3dmLightTable()

bool ON_BinaryArchive::BeginWrite3dmLightTable ( )

◆ BeginWrite3dmLinetypeTable()

bool ON_BinaryArchive::BeginWrite3dmLinetypeTable ( )

◆ BeginWrite3dmMaterialTable()

bool ON_BinaryArchive::BeginWrite3dmMaterialTable ( )

◆ BeginWrite3dmObjectTable()

bool ON_BinaryArchive::BeginWrite3dmObjectTable ( )

◆ BeginWrite3dmTextureMappingTable()

bool ON_BinaryArchive::BeginWrite3dmTextureMappingTable ( )

◆ BeginWrite3dmUserTable() [1/2]

bool ON_BinaryArchive::BeginWrite3dmUserTable ( ON_UUID  plugin_id,
bool  bSavingGoo,
int  goo_3dm_version,
unsigned int  goo_opennurbs_version 
)

Write the user table header information that must precede the user table information written by a plug-in.

Parameters
plugin_id[in]
bSavingGoo[in] Set to false if a plug-in will be used to write the user table. Set to true if a user table written by a missing plug-in is being resaved. In this case, goo_3dm_version and goo_opennurbs_version must also be set. In practice, you should use Write3dmAnonymousUserTableRecord() to handle writing "goo" and use this function only when the plug-in in present.
goo_3dm_version[in] If bSavingGoo is false, this parameter must be zero and ON_BinaryArchive::Archive3dmVersion() will be used. If bSavingGoo is true, this parameter must be the version of the 3dm archive (1,2,3,4,5,50,...) the plug-in code used to write the user table.
goo_opennurbs_version[in] If bSavingGoo is false, this parameter must be zero and ON_BinaryArchive::ArchiveOpenNURBSVersion() will be used. If bSavingGoo is true, this parameter must be the version of the opennurbs the plug-in code used to write the user table.
Returns
True if the the user information can be written. False if user informtion should not be written.

◆ BeginWrite3dmUserTable() [2/2]

bool ON_BinaryArchive::BeginWrite3dmUserTable ( const ON_UUID )

◆ BeginWriteDictionary()

bool ON_BinaryArchive::BeginWriteDictionary ( ON_UUID  dictionary_id,
unsigned int  version,
const wchar_t *  dictionary_name 
)

Begins writing a dictionary.

Parameters
dictionary_id[in]
version[in] It is suggested that you use ON_VersionNumberConstruct() to create a version number.
dictionary_name[in] You may pass nullptr.

Begins a new chunk with tcode TCODE_DICTIONARY and then writes a TCODE_DICTIONARY_ID chunk containing the id, version and name. After calling this function, you may either write entries by calling BeginWriteDictionaryEntry(); write entry definition... EndWriteDictionaryEntry(); or you may finish writing the dictionay by calling EndWriteDictionary();

◆ BeginWriteDictionaryEntry()

bool ON_BinaryArchive::BeginWriteDictionaryEntry ( int  de_type,
const wchar_t *  entry_name 
)

Begins writing a dictionary entry.

Parameters
de_type[in]
entry_name[in]
Returns
true Entry header was written and you must call EndWriteDictionary() after writing the entry data. false Failed to write entry header. Do not call EndWriteDictionary().

Begins a new chunk with tcode TCODE_DICTIONARY_ENTRY, then writes the int, and then writes the string.

◆ ChunkBoundaryCheck()

bool ON_BinaryArchive::ChunkBoundaryCheck ( ) const
Returns
true: All read, write, and seek operations check to make sure they stay within the current chunk boundary.

◆ ClearModelSerialNumber()

void ON_BinaryArchive::ClearModelSerialNumber ( )

Clear() information set by SetModelSerialNumber() do not modify ON_ModelComponent model serial number information when the classes are read.

◆ CriticalErrorCount()

unsigned int ON_BinaryArchive::CriticalErrorCount ( ) const
Returns
Number of critical errors

◆ CurrentArchiveVersion()

static int ON_BinaryArchive::CurrentArchiveVersion ( )
static
Returns
10*OPENNURBS_VERSION_MAJOR (The Rhino <OPENNURBS_VERSION_MAJOR> opennurbs file version.) This is the value of version to pass to ON_BinaryArchive functions like Write3dmStartSection() when you want to use the the current opennurbs version number and you do not want to have to update your code when this version number changes.

◆ CurrentPosition()

ON__UINT64 ON_BinaryArchive::CurrentPosition ( ) const
Returns
Number of bytes from start of archive to the current position.

◆ Dump3dmChunk()

unsigned int ON_BinaryArchive::Dump3dmChunk ( ON_TextLog text_log,
int  recursion_depth = 0 
)

Expert user function for studying contents of a file. The primary use is as an aid to help dig through files that have been damaged (bad disks, transmission errors, etc.) If an error is found, a line that begins with the word "ERROR" is printed.

Parameters
text_log[in] place to print informtion
recursion_depth[in] simply a counter to aid in debugging.
Returns
0 if something went wrong, otherwise the typecode of the chunk that was just studied.

◆ EnableCRCCalculation()

bool ON_BinaryArchive::EnableCRCCalculation ( bool  bEnable)

Expert user function to control CRC calculation while reading and writing. Typically this is used when seeking around and reading/writing information in non-serial order.

Parameters
bEnable[in]
Returns
Current state of CRC calculation. Use the returned value to restore the CRC calculation setting after you are finished doing your fancy pants expert IO.

◆ EnableSave3dmAnalysisMeshes()

void ON_BinaryArchive::EnableSave3dmAnalysisMeshes ( unsigned int  object_type_flags,
bool  bSave3dmAnalysisMeshes 
)

Specify which types of objects (ON_Brep, ON_Extrusion, ON_SubD, ...) save analysis meshes in the 3dm file.

Parameters
object_type_flags[in] The bits in object_type_flags correspond to ON::object_type values and identify the object types the setting will be applied to.

Saving analysis meshes increases file size, sometimes dramatically.

Creating ON_Brep analysis meshes is often slow. Disable saving ON_Brep analysis meshes when IO speed or file size is a critical issue, the time expense of recreating the ON_Brep meshes when the file is read is acceptable, and the file will be read by Rhino. Enable when the file size is not an issue or the file will be used by other applications that may not be able to create meshes.

Creating ON_Extrusion meshes is fast. Disable when IO speed or file size is an issue and the file will be read by Rhino. Enable when the file will be used by other applications that may not be able to create meshes.

Creating ON_SubD meshes is fast. Disable when IO speed or file size is an issue and the file will be read by Rhino. Enable when the file will be used by other applications that may not be able to create meshes.

◆ EnableSave3dmRenderMeshes()

void ON_BinaryArchive::EnableSave3dmRenderMeshes ( unsigned int  object_type_flags,
bool  bSave3dmRenderMeshes 
)

Specify which types of objects (ON_Brep, ON_Extrusion, ON_SubD, ...) save render meshes in the 3dm file.

Parameters
object_type_flags[in] The bits in object_type_flags correspond to ON::object_type values and identify the object types the setting will be applied to.

Saving render meshes increases file size, sometimes dramatically.

Creating ON_Brep analysis meshes is often slow. Disable saving ON_Brep analysis meshes when IO speed or file size is a critical issue, the time expense of recreating the ON_Brep meshes when the file is read is acceptable, and the file will be read by Rhino. Enable when the file size is not an issue or the file will be used by other applications that may not be able to create meshes.

Creating ON_Extrusion meshes is fast. Disable when IO speed or file size is an issue and the file will be read by Rhino. Enable when the file will be used by other applications that may not be able to create meshes.

Creating ON_SubD meshes is fast. Disable when IO speed or file size is an issue and the file will be read by Rhino. Enable when the file will be used by other applications that may not be able to create meshes.

◆ Endian()

ON::endian ON_BinaryArchive::Endian ( ) const
Returns
Endian-ness of the cpu reading this file.

3dm files are alwasy saved with little endian byte order.

◆ EndRead3dmBitmapTable()

bool ON_BinaryArchive::EndRead3dmBitmapTable ( )

◆ EndRead3dmChunk() [1/2]

bool ON_BinaryArchive::EndRead3dmChunk ( )

Calling this will skip rest of stuff in chunk if it was only partially read.

Parameters
bSupressPartiallyReadChunkWarning[in] Generally, a call to ON_WARNING is made when a chunk is partially read. If bSupressPartiallyReadChunkWarning is true, then no warning is issued for partially read chunks.

◆ EndRead3dmChunk() [2/2]

bool ON_BinaryArchive::EndRead3dmChunk ( bool  bSupressPartiallyReadChunkWarning)

◆ EndRead3dmDimStyleTable()

bool ON_BinaryArchive::EndRead3dmDimStyleTable ( )

◆ EndRead3dmGroupTable()

bool ON_BinaryArchive::EndRead3dmGroupTable ( )

◆ EndRead3dmHatchPatternTable()

bool ON_BinaryArchive::EndRead3dmHatchPatternTable ( )

◆ EndRead3dmHistoryRecordTable()

bool ON_BinaryArchive::EndRead3dmHistoryRecordTable ( )

◆ EndRead3dmInstanceDefinitionTable()

bool ON_BinaryArchive::EndRead3dmInstanceDefinitionTable ( )

◆ EndRead3dmLayerTable()

bool ON_BinaryArchive::EndRead3dmLayerTable ( )

◆ EndRead3dmLightTable()

bool ON_BinaryArchive::EndRead3dmLightTable ( )

◆ EndRead3dmLinetypeTable()

bool ON_BinaryArchive::EndRead3dmLinetypeTable ( )

◆ EndRead3dmMaterialTable()

bool ON_BinaryArchive::EndRead3dmMaterialTable ( )

◆ EndRead3dmObjectTable()

bool ON_BinaryArchive::EndRead3dmObjectTable ( )

◆ EndRead3dmTextureMappingTable()

bool ON_BinaryArchive::EndRead3dmTextureMappingTable ( )

◆ EndRead3dmUserTable()

bool ON_BinaryArchive::EndRead3dmUserTable ( )

◆ EndReadDictionary()

bool ON_BinaryArchive::EndReadDictionary ( )

◆ EndReadDictionaryEntry()

bool ON_BinaryArchive::EndReadDictionaryEntry ( )

◆ EndWrite3dmBitmapTable()

bool ON_BinaryArchive::EndWrite3dmBitmapTable ( )

◆ EndWrite3dmChunk()

bool ON_BinaryArchive::EndWrite3dmChunk ( )

updates length in chunk header

◆ EndWrite3dmDimStyleTable()

bool ON_BinaryArchive::EndWrite3dmDimStyleTable ( )

◆ EndWrite3dmGroupTable()

bool ON_BinaryArchive::EndWrite3dmGroupTable ( )

◆ EndWrite3dmHatchPatternTable()

bool ON_BinaryArchive::EndWrite3dmHatchPatternTable ( )

◆ EndWrite3dmHistoryRecordTable()

bool ON_BinaryArchive::EndWrite3dmHistoryRecordTable ( )

◆ EndWrite3dmInstanceDefinitionTable()

bool ON_BinaryArchive::EndWrite3dmInstanceDefinitionTable ( )

◆ EndWrite3dmLayerTable()

bool ON_BinaryArchive::EndWrite3dmLayerTable ( )

◆ EndWrite3dmLightTable()

bool ON_BinaryArchive::EndWrite3dmLightTable ( )

◆ EndWrite3dmLinetypeTable()

bool ON_BinaryArchive::EndWrite3dmLinetypeTable ( )

◆ EndWrite3dmMaterialTable()

bool ON_BinaryArchive::EndWrite3dmMaterialTable ( )

◆ EndWrite3dmObjectTable()

bool ON_BinaryArchive::EndWrite3dmObjectTable ( )

◆ EndWrite3dmTextureMappingTable()

bool ON_BinaryArchive::EndWrite3dmTextureMappingTable ( )

◆ EndWrite3dmUserTable()

bool ON_BinaryArchive::EndWrite3dmUserTable ( )

◆ EndWriteDictionary()

bool ON_BinaryArchive::EndWriteDictionary ( )

Begins writing a dictionary entry.

Parameters
de_type[in]
entry_name[in]
Returns
true Entry header was written and you must call EndWriteDictionary() after writing the entry data. false Failed to write entry header. Do not call EndWriteDictionary().

Begins a new chunk with tcode TCODE_DICTIONARY_ENTRY, then writes the int, and then writes the string.

◆ EndWriteDictionaryEntry()

bool ON_BinaryArchive::EndWriteDictionaryEntry ( )

◆ ErrorMessageMask()

unsigned int ON_BinaryArchive::ErrorMessageMask ( ) const
protected

◆ FindTableInDamagedArchive()

bool ON_BinaryArchive::FindTableInDamagedArchive ( unsigned int  tcode_table,
unsigned int  tcode_record,
ON_UUID  class_uuid,
int  min_length_data 
)

Expert user function for reading damaged files. The search starts at the beginning of the file.

Parameters
tcode_table[in] typecode of the table
tcode_record[in] typecode of the record
class_uuid[in] id of the opennurbs class in the record
min_length_data[in] minimum size of the opennurbs class data
Returns
True if the table start is found. In this case the current position of the archive is at the start of the table and the standared BeginRead3dm...Table() function can be used. False if the table start is not found.

◆ FirstFailed3dmTable()

ON_3dmArchiveTableType ON_BinaryArchive::FirstFailed3dmTable ( ) const
Returns
If a 3dm archive is being read or written and a failure occurs, the first archive section (table) that failed to read or write is returned.

◆ Flush()

virtual bool ON_BinaryArchive::Flush ( )
pure virtual

Force Write() to flush any buffered data to physical archive.

Returns
True if succesful or if there is nothing to flush. False if information could not be flushed.

Implemented in ON_Write3dmBufferArchive, ON_Read3dmBufferArchive, ON_BinaryArchiveBuffer, and ON_BinaryFile.

◆ GetCurrentChunk() [1/2]

int ON_BinaryArchive::GetCurrentChunk ( ON_3DM_CHUNK chunk) const

Expert user function for reading damaged files.

Parameters
chunk[out] current chunk.
Returns
Level of the chunk or 0 if there is no current chunk.

◆ GetCurrentChunk() [2/2]

int ON_BinaryArchive::GetCurrentChunk ( ON_3DM_BIG_CHUNK big_chunk) const

◆ InstanceDefinitionModelSerialNumber()

unsigned int ON_BinaryArchive::InstanceDefinitionModelSerialNumber ( ) const

◆ Internal_CurrentPositionOverride()

virtual ON__UINT64 ON_BinaryArchive::Internal_CurrentPositionOverride ( ) const
protectedpure virtual

◆ Internal_Read3dmDimStyleOverrides()

bool ON_BinaryArchive::Internal_Read3dmDimStyleOverrides ( class ON_Annotation annotation,
bool  bFromDimStyleTable 
)

◆ Internal_ReadOverride()

virtual size_t ON_BinaryArchive::Internal_ReadOverride ( size_t  ,
void *   
)
protectedpure virtual

◆ Internal_SeekFromCurrentPositionOverride()

virtual bool ON_BinaryArchive::Internal_SeekFromCurrentPositionOverride ( int  )
protectedpure virtual

◆ Internal_SeekToStartOverride()

virtual bool ON_BinaryArchive::Internal_SeekToStartOverride ( )
protectedpure virtual

◆ Internal_Write3dmDimStyleOverrides()

bool ON_BinaryArchive::Internal_Write3dmDimStyleOverrides ( const class ON_Annotation annotation,
const class ON_DimStyle dim_style_overrides 
)

◆ Internal_WriteOverride()

virtual size_t ON_BinaryArchive::Internal_WriteOverride ( size_t  ,
const void *   
)
protectedpure virtual

◆ LoadUserDataApplication()

virtual int ON_BinaryArchive::LoadUserDataApplication ( ON_UUID  application_id)
virtual

When ON_BinaryArchive::ReadObject() encounters userdata and the user data class id is not present, LoadUserDataApplication is called to load the application that created user data.

Returns
0 - could not load the application 1 - successfully loaded the application 2 - the application was already loaded

◆ Manifest()

const class ON_ComponentManifest& ON_BinaryArchive::Manifest ( ) const

◆ ManifestMap()

const class ON_ManifestMap& ON_BinaryArchive::ManifestMap ( ) const

◆ MaskReadError()

bool ON_BinaryArchive::MaskReadError ( ON__UINT64  sizeof_request,
ON__UINT64  sizeof_read 
) const
protected
Returns
True if a call to Read() is permitted to ask for more bytes than are left in the file. This value varies as the file is read and must be checked at each failure.

◆ Mode()

ON::archive_mode ON_BinaryArchive::Mode ( ) const
Returns
Archive read/write mode

◆ ModelSerialNumber()

unsigned int ON_BinaryArchive::ModelSerialNumber ( ) const

◆ ObjectHasUserDataToWrite()

bool ON_BinaryArchive::ObjectHasUserDataToWrite ( const class ON_Object object) const

Determine if an object has user data that should be written.

Parameters
object[in]
Returns
True if object has user data that should be written.

◆ ON_DEPRECATED_MSG()

ON_BinaryArchive::ON_DEPRECATED_MSG ( "Use either ReadStringUTF8ElementCount() or ReadStringUTF16ElementCount()"  )
Parameters
str_array_count[out] Number of elements in the string array. All ON_BinaryArchive string WriteString() functions write a null terminator to the file and the null terminator is included in the count. This means that if a string has a non-zero element, then str_array_count >= 2.

Modify your code to use ReadStringUTF8ElementCount() when reading UTF-8 encoded strings and ReadStringUTF16ElementCount() when reading UTF-16 encoded strings.

◆ ON_TypecodeParse()

static char* ON_BinaryArchive::ON_TypecodeParse ( unsigned int  tcode,
char *  typecode_name,
size_t  max_length 
)
static

◆ PeekAt3dmBigChunkType()

bool ON_BinaryArchive::PeekAt3dmBigChunkType ( ON__UINT32 *  typecode,
ON__INT64 *  big_value 
)

◆ PeekAt3dmChunkType()

bool ON_BinaryArchive::PeekAt3dmChunkType ( unsigned int *  ,
int *   
)

◆ Previous3dmTable()

ON_3dmArchiveTableType ON_BinaryArchive::Previous3dmTable ( ) const
Returns
If a 3dm archive is being read or written, the value of the most recently read or written archive section (table) is returned.

Use ON_BinaryArchive::Mode() to determine if a binary archive is being read or written.

◆ Read3dmAnonymousUserTable()

bool ON_BinaryArchive::Read3dmAnonymousUserTable ( int  archive_3dm_version,
unsigned int  archive_opennurbs_version,
ON_3dmGoo goo 
)

If the plug-in that wrote the user table is not present and you need to read and resave the user table, then use Read3dmAnonymousUserTable() to load the information into "goo". If you do not need to resave the information, then simply call EndRead3dmUserTable() to skip over this table.

◆ Read3dmBitmap()

int ON_BinaryArchive::Read3dmBitmap ( class ON_Bitmap **  )

◆ Read3dmChunkVersion()

bool ON_BinaryArchive::Read3dmChunkVersion ( int *  ,
int *   
)

◆ Read3dmDimStyle()

int ON_BinaryArchive::Read3dmDimStyle ( class ON_DimStyle **  ppDimStyle)

Reads annotation dimension styles from dimension style table. If the dimension style definition is read, a dimension style is created by calling new ON_DimStyle(), initialized with values stored in the archive, and returned.

Parameters
ppDimStyleIf the dimstyle definition is read, a dimstyle is created by calling new ON_DimStyle(), initialized with values stored in the archive, and a pointer to the new dimstyle is returned in *ppDimStyle.
Returns

table 0 at the end of the dimension style table 1 dimension style definition was successfully read -1 archive is corrupt at this point

Calls to Read3dmDimStyle need to be bracketed by calls
@verbatim
archive.BeginRead3dmDimStyleTable();
int rc = 1;
ON_DimStyle* pDimStyle;
while(rc==1)
{ //
pDimStyle = 0;
archive.Read3dmDimStyle(&pDimStyle);
if ( pDimStyle )
do something with pDimStyle
} //
archive.EndRead3dmDimStyleTable();
@endverbatim

◆ Read3dmEndMark()

bool ON_BinaryArchive::Read3dmEndMark ( size_t *  )

Checks for a TCODE_ENDOFFILE chunk at the current position. If it finds one, it reads it and returns the number of bytes in the archive. Comparing this number with the current file position can help detect files that have been damaged by loosing sections.

Parameters
sizeof_archive[out] number of bytes written to archive
Returns
true if successful, false if unable to find or read a TCODE_ENDOFFILE chunk.

◆ Read3dmGoo()

bool ON_BinaryArchive::Read3dmGoo ( ON_3dmGoo )

◆ Read3dmGroup()

int ON_BinaryArchive::Read3dmGroup ( class ON_Group **  )

Reads groups from group table. If the group definition is read, a group is created by calling new ON_Group(), initialized with values stored in the archive, and returned.

Parameters
ppGroupIf the group definition is read, a group is created by calling new ON_Group(), initialized with values stored in the archive, and a pointer to the new group is returned in *ppGroup.
Returns

table 0 at the end of the group table 1 group definition was successfully read -1 archive is corrupt at this point

Calls to Read3dmGroup need to be bracketed by calls
@verbatim
archive.BeginRead3dmGroupTable();
ON_Group* pGroup;
int rc = 1;
while(rc==1)
{ //
pGroup = 0;
archive.Read3dmGroup(&pGroup);
if ( pGroup )
do something with pGroup
} //
archive.EndRead3dmGroupTable();
@endverbatim

◆ Read3dmHatchPattern()

int ON_BinaryArchive::Read3dmHatchPattern ( class ON_HatchPattern **  )

◆ Read3dmHistoryRecord()

int ON_BinaryArchive::Read3dmHistoryRecord ( class ON_HistoryRecord *&  )
Returns
0 at end of object table 1 if object is read -1 if file is corrupt

◆ Read3dmInstanceDefinition()

int ON_BinaryArchive::Read3dmInstanceDefinition ( class ON_InstanceDefinition **  )

Reads instance definitions from instance defintion table.

Parameters
ppInstanceDefinitionIf an instance defintion is read, an instance defintion is created by calling new ON_InstanceDefinition(), initialized with values stored in the archive, and a pointer to the new instance defintion is returned in *ppInstanceDefinition.
Returns

table 0 at the end of the instance defintion table 1 instance defintion was successfully read -1 archive is corrupt at this point

Calls to Read3dmInstanceDefinition need to be bracketed by calls
@verbatim
archive.BeginRead3dmInstanceDefinitionTable();
int rc = 1;
ON_InstanceDefinition* pInstanceDefinition;
while(rc==1)
{
pInstanceDefinition = 0;
archive.Read3dmInstanceDefinition(&pInstanceDefinition);
if ( pInstanceDefinition )
do something with pInstanceDefinition
}
archive.EndRead3dmInstanceDefinitionTable();
@endverbatim

◆ Read3dmLayer()

int ON_BinaryArchive::Read3dmLayer ( ON_Layer **  )

◆ Read3dmLight()

int ON_BinaryArchive::Read3dmLight ( class ON_Light **  light,
class ON_3dmObjectAttributes attributes 
)

◆ Read3dmLinetype()

int ON_BinaryArchive::Read3dmLinetype ( class ON_Linetype **  )

◆ Read3dmMaterial()

int ON_BinaryArchive::Read3dmMaterial ( class ON_Material **  )

◆ Read3dmModelGeometry()

int ON_BinaryArchive::Read3dmModelGeometry ( class ON_ModelGeometryComponent **  model_geometry,
unsigned int  object_filter = 0 
)

Call either Read3dmModelGeometry or Read3dmObject

Parameters
model_geometry[out] ON_ModelGeometryComponent returned here. nullptr returned at end of the table.
object_filter[in] optional filter made by setting ON::object_type bits
Returns
0 at end of object table 1 if object is read 2 if object is skipped because it does not match filter -1 if file is corrupt

◆ Read3dmModelGeometryForExperts()

int ON_BinaryArchive::Read3dmModelGeometryForExperts ( bool  bManageGeometry,
bool  bManageAttributes,
class ON_ModelGeometryComponent **  model_geometry,
unsigned int  object_filter 
)
Parameters
bManageGeometry[in] true: model_geometry will reference count and delete the ON_Geometry pointer. false: The caller must delete the ON_Geometry pointer.
bManageAttributes[in] true: model_geometry will reference count and delete the ON_3dmObjectAttributes pointer. false: The caller must delete the ON_3dmObjectAttributes pointer.
model_geometry[out] ON_ModelGeometryComponent returned here. nullptr returned at end of the table.
object_filter[in] optional filter made by setting ON::object_type bits 0 = no filter.
Returns
0 at end of object table 1 if object is read 2 if object is skipped because it does not match filter -1 if file is corrupt

◆ Read3dmModelLight()

int ON_BinaryArchive::Read3dmModelLight ( class ON_ModelGeometryComponent **  model_light)

Call either Read3dmModelLight or Read3dmLight

Parameters
model_light[out] ON_ModelGeometryComponent returned here. nullptr returned at end of the table.
object_filter[in] optional filter made by setting ON::object_type bits
Returns
0 at end of object table 1 if object is read 2 if object is skipped because it does not match filter -1 if file is corrupt

◆ Read3dmObject()

int ON_BinaryArchive::Read3dmObject ( ON_Object **  model_object,
ON_3dmObjectAttributes attributes,
unsigned int  object_filter = 0 
)
Parameters
model_object[out] nullptr returned at end of the table.
attributes[out] If not nullptr, then attributes are returned here
object_filter[in] optional filter made by setting ON::object_type bits
Returns
0 at end of object table 1 if object is read 2 if object is skipped because it does not match filter -1 if file is corrupt

◆ Read3dmProperties()

bool ON_BinaryArchive::Read3dmProperties ( class ON_3dmProperties )

◆ Read3dmReferencedComponentId()

bool ON_BinaryArchive::Read3dmReferencedComponentId ( ON_ModelComponent::Type  component_type,
ON_UUID component_id 
)

When reading 3dm archives, the model component ID in the archive and in the destination model are often identical, but sometimes different. For example, the when the same template is used to create multiple models and files and the models from those files are merged into a single file, there will be ID collisions. For components that are identified by name, like layers and dimension styles, this is not a problem. For components like instance definitions that have a more complicated set of merging rules, it is critical that references to instance definition ids be updated from values in the arcive to values in the model. uses to adjust and write a model component Id.

Parameters
component_type[in] Type of the referenced component.
component_id[out] component reference ID
Returns
false - catestrophic read failure.

◆ Read3dmReferencedComponentIndex()

bool ON_BinaryArchive::Read3dmReferencedComponentIndex ( ON_ModelComponent::Type  component_type,
int *  component_index 
)

When reading 3dm archives, model component indexes in the archive and in the destination model are typically different. This function basically reads and reverses the steps that WriteArchiveComponentIndex() uses to adjust and write a model component index.

Parameters
component_type[in] Type of the referenced component.
component_index[out] component reference index
Returns
false - catestrophic read failure.

◆ Read3dmReferencedComponentIndexArray()

bool ON_BinaryArchive::Read3dmReferencedComponentIndexArray ( ON_ModelComponent::Type  component_type,
ON_SimpleArray< int > &  component_index_array 
)

◆ Read3dmSettings()

bool ON_BinaryArchive::Read3dmSettings ( class ON_3dmSettings )

◆ Read3dmStartSection()

bool ON_BinaryArchive::Read3dmStartSection ( int *  version,
ON_String sStartSectionComment 
)
Parameters
version[out] .3dm file version (2, 3, 4, 5, 50, 60)
sStartSectionComment[out]
UTF8 encoded string passed to Write3dmStartSection()
destination_manifest[in] manifest of the destination model

◆ Read3dmTextureMapping()

int ON_BinaryArchive::Read3dmTextureMapping ( class ON_TextureMapping **  )

◆ ReadArc()

bool ON_BinaryArchive::ReadArc ( ON_Arc )

◆ ReadArray() [1/34]

bool ON_BinaryArchive::ReadArray ( ON_SimpleArray< bool > &  )

◆ ReadArray() [2/34]

bool ON_BinaryArchive::ReadArray ( ON_SimpleArray< char > &  )

◆ ReadArray() [3/34]

bool ON_BinaryArchive::ReadArray ( ON_SimpleArray< short > &  )

◆ ReadArray() [4/34]

bool ON_BinaryArchive::ReadArray ( ON_SimpleArray< int > &  )

◆ ReadArray() [5/34]

bool ON_BinaryArchive::ReadArray ( ON_SimpleArray< float > &  )

◆ ReadArray() [6/34]

bool ON_BinaryArchive::ReadArray ( ON_SimpleArray< double > &  )

◆ ReadArray() [7/34]

bool ON_BinaryArchive::ReadArray ( ON_SimpleArray< ON_Color > &  )

◆ ReadArray() [8/34]

bool ON_BinaryArchive::ReadArray ( ON_SimpleArray< ON_2dPoint > &  )

◆ ReadArray() [9/34]

bool ON_BinaryArchive::ReadArray ( ON_SimpleArray< ON_3dPoint > &  )

◆ ReadArray() [10/34]

bool ON_BinaryArchive::ReadArray ( ON_SimpleArray< ON_4dPoint > &  )

◆ ReadArray() [11/34]

bool ON_BinaryArchive::ReadArray ( ON_SimpleArray< ON_2dVector > &  )

◆ ReadArray() [12/34]

bool ON_BinaryArchive::ReadArray ( ON_SimpleArray< ON_3dVector > &  )

◆ ReadArray() [13/34]

bool ON_BinaryArchive::ReadArray ( ON_SimpleArray< ON_Xform > &  )

◆ ReadArray() [14/34]

bool ON_BinaryArchive::ReadArray ( ON_SimpleArray< ON_2fPoint > &  )

◆ ReadArray() [15/34]

bool ON_BinaryArchive::ReadArray ( ON_SimpleArray< ON_3fPoint > &  )

◆ ReadArray() [16/34]

bool ON_BinaryArchive::ReadArray ( ON_SimpleArray< ON_4fPoint > &  )

◆ ReadArray() [17/34]

bool ON_BinaryArchive::ReadArray ( ON_SimpleArray< ON_2fVector > &  )

◆ ReadArray() [18/34]

bool ON_BinaryArchive::ReadArray ( ON_SimpleArray< ON_3fVector > &  )

◆ ReadArray() [19/34]

bool ON_BinaryArchive::ReadArray ( ON_SimpleArray< ON_UUID > &  )

◆ ReadArray() [20/34]

bool ON_BinaryArchive::ReadArray ( ON_SimpleArray< ON_UuidIndex > &  )

◆ ReadArray() [21/34]

bool ON_BinaryArchive::ReadArray ( ON_SimpleArray< ON_UuidPtr > &  )

◆ ReadArray() [22/34]

bool ON_BinaryArchive::ReadArray ( ON_SimpleArray< ON_SurfaceCurvature > &  )

◆ ReadArray() [23/34]

bool ON_BinaryArchive::ReadArray ( ON_ClassArray< ON_String > &  )

◆ ReadArray() [24/34]

bool ON_BinaryArchive::ReadArray ( ON_ClassArray< ON_wString > &  )

◆ ReadArray() [25/34]

bool ON_BinaryArchive::ReadArray ( ON_SimpleArray< ON_DisplayMaterialRef > &  )

◆ ReadArray() [26/34]

bool ON_BinaryArchive::ReadArray ( ON_SimpleArray< ON_LinetypeSegment > &  )

◆ ReadArray() [27/34]

bool ON_BinaryArchive::ReadArray ( ON_SimpleArray< ON_MappingChannel > &  )

◆ ReadArray() [28/34]

bool ON_BinaryArchive::ReadArray ( ON_ClassArray< ON_MaterialRef > &  )

◆ ReadArray() [29/34]

bool ON_BinaryArchive::ReadArray ( ON_ClassArray< ON_MappingRef > &  )

◆ ReadArray() [30/34]

bool ON_BinaryArchive::ReadArray ( ON_ClassArray< class ON_ObjRef > &  )

◆ ReadArray() [31/34]

bool ON_BinaryArchive::ReadArray ( ON_SimpleArray< class ON_ObjRef_IRefID > &  )

◆ ReadArray() [32/34]

bool ON_BinaryArchive::ReadArray ( ON_SimpleArray< class ON_ClippingPlaneInfo > &  )

◆ ReadArray() [33/34]

bool ON_BinaryArchive::ReadArray ( ON_ObjectArray< class ON_Layer > &  )

◆ ReadArray() [34/34]

bool ON_BinaryArchive::ReadArray ( ON_SimpleArray< class ON_Layer *> &  )

◆ ReadBigInt() [1/4]

bool ON_BinaryArchive::ReadBigInt ( size_t  ,
ON__INT64 *   
)

◆ ReadBigInt() [2/4]

bool ON_BinaryArchive::ReadBigInt ( size_t  ,
ON__UINT64 *   
)

◆ ReadBigInt() [3/4]

bool ON_BinaryArchive::ReadBigInt ( ON__INT64 *  )

◆ ReadBigInt() [4/4]

bool ON_BinaryArchive::ReadBigInt ( ON__UINT64 *  )

◆ ReadBigSize()

bool ON_BinaryArchive::ReadBigSize ( size_t *  )

◆ ReadBigTime()

bool ON_BinaryArchive::ReadBigTime ( time_t *  )

◆ ReadBool()

bool ON_BinaryArchive::ReadBool ( bool *  )

◆ ReadBoundingBox()

bool ON_BinaryArchive::ReadBoundingBox ( ON_BoundingBox )

◆ ReadBuffer()

ON__UINT64 ON_BinaryArchive::ReadBuffer ( ON__UINT64  sizeof_buffer,
void *  buffer 
)

Expert user function that uses Read() to load a buffer. Paramters: sizeof_buffer - [in] number of bytes to attempt to read. buffer - [out] read bytes are stored in this buffer

Returns
Number of bytes actually read, which may be less than sizeof_buffer if the end of file is encountered.

◆ ReadByte()

bool ON_BinaryArchive::ReadByte ( size_t  ,
void *   
)

◆ ReadChar() [1/4]

bool ON_BinaryArchive::ReadChar ( size_t  ,
char *   
)

◆ ReadChar() [2/4]

bool ON_BinaryArchive::ReadChar ( size_t  ,
unsigned char *   
)

◆ ReadChar() [3/4]

bool ON_BinaryArchive::ReadChar ( char *  )

◆ ReadChar() [4/4]

bool ON_BinaryArchive::ReadChar ( unsigned char *  )

◆ ReadCircle()

bool ON_BinaryArchive::ReadCircle ( ON_Circle )

◆ ReadColor()

bool ON_BinaryArchive::ReadColor ( ON_Color )

◆ ReadComponentIndex()

bool ON_BinaryArchive::ReadComponentIndex ( ON_COMPONENT_INDEX &  )

◆ ReadCompressedBuffer()

bool ON_BinaryArchive::ReadCompressedBuffer ( size_t  sizeof__outbuffer,
void *  outbuffer,
bool *  bFailedCRC 
)

Read compressed information from an archive and uncompress it.

Parameters
sizeof__outbuffer[in] size of the uncompressed buffer in bytes
outbuffer[out] uncompressed buffer returned here
bFailedCRC[out] true if cyclic redundancy check fails on uncompressed buffer
Returns
True if read was successful. You need to check the value of bFailedCRC to see if the information that was read is valid.

Write your archive write/read code as if compression is always enabled. Do not vary what get written or read based on the value of UseBufferCompression().

@verbatim
size_t sizeof_buffer = 0;
ReadCompressedBufferSize(&sizeof_buffer);
buffer = ...; // something with sizeof_buffer bytes.
int bFailedCRC = false;
bool ok = ReadCompressedBuffer( sizeof_buffer, buffer, &bFailedCRC );
@endverbatim

◆ ReadCompressedBufferSize()

bool ON_BinaryArchive::ReadCompressedBufferSize ( size_t *  sizeof__outbuffer)

Red the size of a compressed buffer.

Parameters
sizeof__outbuffer[out] size of the uncompressed buffer in bytes
Returns
True if read was successful.

◆ ReadDisplayMaterialRef()

bool ON_BinaryArchive::ReadDisplayMaterialRef ( ON_DisplayMaterialRef )

◆ ReadDouble() [1/2]

bool ON_BinaryArchive::ReadDouble ( size_t  ,
double *   
)

◆ ReadDouble() [2/2]

bool ON_BinaryArchive::ReadDouble ( double *  )

◆ ReadFloat() [1/2]

bool ON_BinaryArchive::ReadFloat ( size_t  ,
float *   
)

◆ ReadFloat() [2/2]

bool ON_BinaryArchive::ReadFloat ( float *  )

◆ ReadInt() [1/4]

bool ON_BinaryArchive::ReadInt ( size_t  ,
int *   
)

◆ ReadInt() [2/4]

bool ON_BinaryArchive::ReadInt ( size_t  ,
unsigned int *   
)

◆ ReadInt() [3/4]

bool ON_BinaryArchive::ReadInt ( int *  )

◆ ReadInt() [4/4]

bool ON_BinaryArchive::ReadInt ( unsigned int *  )

◆ ReadInterval()

bool ON_BinaryArchive::ReadInterval ( ON_Interval )

◆ ReadLine()

bool ON_BinaryArchive::ReadLine ( ON_Line )

◆ ReadLinetypeSegment()

bool ON_BinaryArchive::ReadLinetypeSegment ( ON_LinetypeSegment )

◆ ReadLong() [1/4]

bool ON_BinaryArchive::ReadLong ( size_t  ,
long *   
)

◆ ReadLong() [2/4]

bool ON_BinaryArchive::ReadLong ( size_t  ,
unsigned long *   
)

◆ ReadLong() [3/4]

bool ON_BinaryArchive::ReadLong ( long *  )

◆ ReadLong() [4/4]

bool ON_BinaryArchive::ReadLong ( unsigned long *  )

◆ ReadMode()

bool ON_BinaryArchive::ReadMode ( ) const
Returns
True if Mode() is an archive reading mode.

◆ ReadModelComponentAttributes()

bool ON_BinaryArchive::ReadModelComponentAttributes ( ON_ModelComponent model_component,
unsigned int *  attributes_filter 
)

Reads the attributes the Write() function writes.

Parameters
model_component[in/out]
component_filter[out] A bitfield that reports which attributes were read. If the corresponding component on model_component is locked, the read value is discared.
Returns
false: critical failure. true: reading can continue.

If locked attributes are read, thire values are ignored.

◆ ReadObject() [1/2]

int ON_BinaryArchive::ReadObject ( ON_Object **  ppObject)

Reads and object from a 3dm archive;

Parameters
ppObject[out] object is allocated and a pointer to the allocated object is returned as *ppObject;
Returns
0: failure - unable to read object because of file IO problems 1: success 3: unable to read object because it's UUID is not registered this could happen in cases where old code is attempting to read new objects.

◆ ReadObject() [2/2]

int ON_BinaryArchive::ReadObject ( ON_Object object)

Reads and object from a 3dm archive.

Parameters
object[in] The value of object.ON_ClassId()->Uuid() must exactly match the class uuid in of the next object in the archive.
Returns
0: failure - unable to read object because of file IO problems. 1: success 2: unable to read object because the class id in the archive did not match pObject->ClassId.

◆ ReadObjectUserData()

bool ON_BinaryArchive::ReadObjectUserData ( ON_Object object)

Low level tool to read user data and attach it to the object. This function should never be called directly.

Parameters
object[in/out]
Returns
True if successful.

◆ ReadPlane()

bool ON_BinaryArchive::ReadPlane ( ON_Plane )

◆ ReadPlaneEquation()

bool ON_BinaryArchive::ReadPlaneEquation ( ON_PlaneEquation )

◆ ReadPoint() [1/3]

bool ON_BinaryArchive::ReadPoint ( ON_2dPoint )

◆ ReadPoint() [2/3]

bool ON_BinaryArchive::ReadPoint ( ON_3dPoint )

◆ ReadPoint() [3/3]

bool ON_BinaryArchive::ReadPoint ( ON_4dPoint )

◆ ReadShort() [1/4]

bool ON_BinaryArchive::ReadShort ( size_t  ,
short *   
)

◆ ReadShort() [2/4]

bool ON_BinaryArchive::ReadShort ( size_t  ,
unsigned short *   
)

◆ ReadShort() [3/4]

bool ON_BinaryArchive::ReadShort ( short *  )

◆ ReadShort() [4/4]

bool ON_BinaryArchive::ReadShort ( unsigned short *  )

◆ ReadSize()

bool ON_BinaryArchive::ReadSize ( size_t *  )

◆ ReadString() [1/5]

bool ON_BinaryArchive::ReadString ( size_t  str_array_count,
char *  str_array 
)
Parameters
str_array_count[in] Number of char elements in str_array[], including the null terminator. The value of str_array_count is returned by ReadCharStringElementCount().
str_array[in/out] Pass in an array with at least str_array_count elements. If true is returned and str_array_count > 0, then str_array[str_array_count-1] = 0. All strings with char elements written by Rhino are UTF-8 encoded unicode strings.

◆ ReadString() [2/5]

bool ON_BinaryArchive::ReadString ( size_t  str_array_count,
unsigned char *  str_array 
)
Parameters
str_array_count[in] Number of unsignd char elements in str_array[], including the null terminator. The value of str_array_count is returned by ReadCharStringElementCount().
str_array[in/out] Pass in an array with at least str_array_count elements. If true is returned and str_array_count > 0, then str_array[str_array_count-1] = 0. All strings with unsigned char elements written by Rhino are UTF-8 encoded unicode strings.

◆ ReadString() [3/5]

bool ON_BinaryArchive::ReadString ( size_t  str_array_count,
unsigned short *  str_array 
)
Parameters
str_array_count[in] Number of unsigned short elements in str_array[], including the null terminator. The value of str_array_count is returned by ReadWideCharStringElementCount().
str_array[in/out] Pass in an array with at least str_array_count elements. If true is returned and str_array_count > 0, then str_array[str_array_count-1] = 0. All strings with unsigned short elements written by Rhino are UTF-16 encoded unicode strings.

◆ ReadString() [4/5]

bool ON_BinaryArchive::ReadString ( ON_String sUTF8)

◆ ReadString() [5/5]

bool ON_BinaryArchive::ReadString ( ON_wString s)

◆ ReadStringUTF16ElementCount()

bool ON_BinaryArchive::ReadStringUTF16ElementCount ( size_t *  string_utf16_element_count)
Parameters
string_utf16_element_count[out] Number of elements in the string array. All ON_BinaryArchive string WriteString() functions write a null terminator to the file and the null terminator is included in string_element_count. This means that if opennurbs wrote the string, either string_element_count = 0 or string_element_count >= 2.

◆ ReadStringUTF8ElementCount()

bool ON_BinaryArchive::ReadStringUTF8ElementCount ( size_t *  string_utf8_element_count)
Parameters
string_utf8_element_count[out] Number of bytes in the string array. All ON_BinaryArchive string WriteString() functions write a null terminator to the file and the null terminator is included in string_element_count. This means that if opennurbs wrote the string, either string_element_count = 0 or string_element_count >= 2.

◆ ReadTime()

bool ON_BinaryArchive::ReadTime ( struct tm &  )

◆ ReadUuid()

bool ON_BinaryArchive::ReadUuid ( ON_UUID )

◆ ReadV1_TCODE_ANNOTATION()

bool ON_BinaryArchive::ReadV1_TCODE_ANNOTATION ( unsigned  int,
ON_Object **  ,
ON_3dmObjectAttributes  
)

◆ ReadV1_TCODE_LEGACY_CRV()

bool ON_BinaryArchive::ReadV1_TCODE_LEGACY_CRV ( ON_Object **  ,
ON_3dmObjectAttributes  
)

◆ ReadV1_TCODE_LEGACY_FAC()

bool ON_BinaryArchive::ReadV1_TCODE_LEGACY_FAC ( ON_Object **  ,
ON_3dmObjectAttributes  
)

◆ ReadV1_TCODE_LEGACY_SHL()

bool ON_BinaryArchive::ReadV1_TCODE_LEGACY_SHL ( ON_Object **  ,
ON_3dmObjectAttributes  
)

◆ ReadV1_TCODE_MESH_OBJECT()

bool ON_BinaryArchive::ReadV1_TCODE_MESH_OBJECT ( ON_Object **  ,
ON_3dmObjectAttributes  
)

◆ ReadV1_TCODE_RH_POINT()

bool ON_BinaryArchive::ReadV1_TCODE_RH_POINT ( ON_Object **  ,
ON_3dmObjectAttributes  
)

helpers for reading V1 objects

◆ ReadV1_TCODE_RHINOIO_OBJECT_BREP()

bool ON_BinaryArchive::ReadV1_TCODE_RHINOIO_OBJECT_BREP ( ON_Object **  ,
ON_3dmObjectAttributes  
)

◆ ReadV1_TCODE_RHINOIO_OBJECT_NURBS_CURVE()

bool ON_BinaryArchive::ReadV1_TCODE_RHINOIO_OBJECT_NURBS_CURVE ( ON_Object **  ,
ON_3dmObjectAttributes  
)

◆ ReadV1_TCODE_RHINOIO_OBJECT_NURBS_SURFACE()

bool ON_BinaryArchive::ReadV1_TCODE_RHINOIO_OBJECT_NURBS_SURFACE ( ON_Object **  ,
ON_3dmObjectAttributes  
)

◆ ReadVector() [1/2]

bool ON_BinaryArchive::ReadVector ( ON_2dVector )

◆ ReadVector() [2/2]

bool ON_BinaryArchive::ReadVector ( ON_3dVector )

◆ ReadWideString()

bool ON_BinaryArchive::ReadWideString ( ON_wString wide_string)

Read a wide string written with the WriteWideString() function.

◆ ReadXform()

bool ON_BinaryArchive::ReadXform ( ON_Xform )

◆ ReferencedComponentIdMapping()

bool ON_BinaryArchive::ReferencedComponentIdMapping ( ) const
Returns
True: (default state) Read3dmReferencedComponentId() and Write3dmReferencedComponentId() will automatically adjust compoents Id references so they are valid. False: (uncommon) Read3dmReferencedComponentId() and Write3dmReferencedComponentId() will not adjust compoents Id references so they are valid.

◆ ReferencedComponentIndexMapping()

bool ON_BinaryArchive::ReferencedComponentIndexMapping ( ) const
Returns
True: (default state) Read3dmReferencedComponentIndex() and Write3dmReferencedComponentIndex() will automatically adjust compoents index references so they are valid. False: (uncommon) Read3dmReferencedComponentIndex() and Write3dmReferencedComponentIndex() will not adjust compoents index references so they are valid.

◆ ReferenceModelSerialNumber()

unsigned int ON_BinaryArchive::ReferenceModelSerialNumber ( ) const

◆ Save3dmAnalysisMesh()

bool ON_BinaryArchive::Save3dmAnalysisMesh ( ON::object_type  object_type) const
Parameters
object_type[in]
Returns
true if analysis meshes for the specified object type will be saved in the .3dm file.

◆ Save3dmAnalysisMeshObjectTypeFlags()

unsigned int ON_BinaryArchive::Save3dmAnalysisMeshObjectTypeFlags ( ) const

Specify which types of objects (ON_Brep, ON_Extrusion, ON_SubD, ...) save analysis meshes in the 3dm file.

Returns
The bits in the return value correspond to ON::object_type values and identify the object types save analysis meshes in the 3dm file.

◆ Save3dmPreviewImage()

bool ON_BinaryArchive::Save3dmPreviewImage ( ) const
Returns
true: (default) If a preview image is included in the ON_3dmProperties information, it will be saved. false: A preview imae, if it exists, will not be saved in the 3dm archive. This reduces archive size. When Save3dmPreviewImage() is false, generating a preview image can be skipped.

◆ Save3dmRenderMesh()

bool ON_BinaryArchive::Save3dmRenderMesh ( ON::object_type  object_type) const
Parameters
object_type[in]
Returns
true if render meshes for the specified object type will be saved in the .3dm file.

◆ Save3dmRenderMeshObjectTypeFlags()

unsigned int ON_BinaryArchive::Save3dmRenderMeshObjectTypeFlags ( ) const

Specify which types of objects (ON_Brep, ON_Extrusion, ON_SubD, ...) save render meshes in the 3dm file.

Returns
The bits in the return value correspond to ON::object_type values and identify the object types save analysis meshes in the 3dm file.

◆ Seek3dmChunkFromCurrentPosition()

bool ON_BinaryArchive::Seek3dmChunkFromCurrentPosition ( unsigned  int)

◆ Seek3dmChunkFromStart()

bool ON_BinaryArchive::Seek3dmChunkFromStart ( unsigned  int)

◆ SeekBackward()

bool ON_BinaryArchive::SeekBackward ( ON__UINT64  bytes_backward)

Reduce the archive's current position by bytes_backward from the current position.

Parameters
bytes_backward[in]
Returns
True: successful False: failure

◆ SeekForward()

bool ON_BinaryArchive::SeekForward ( ON__UINT64  bytes_forward)

Increase the archive's current position to bytes_forward from the current position.

Parameters
bytes_forward[in]
Returns
True: successful False: failure

◆ SeekFromStart()

bool ON_BinaryArchive::SeekFromStart ( ON__UINT64  bytes_from_start)

Set current position to bytes_from_start many bytes from the start of the archive.

Parameters
bytes_from_start[in]
Returns
True: successful False: failure

Similar to fseek( ,SEEK_SET)

◆ SetArchive3dmVersion()

bool ON_BinaryArchive::SetArchive3dmVersion ( int  )

◆ SetArchiveFullPath() [1/2]

void ON_BinaryArchive::SetArchiveFullPath ( const wchar_t *  archive_full_path)
Parameters
archive_full_path[in] full path to file being read or written

◆ SetArchiveFullPath() [2/2]

void ON_BinaryArchive::SetArchiveFullPath ( const wchar_t *  archive_directory_name,
const wchar_t *  archive_file_name 
)
Parameters
archive_directory_name[in] full path file being written
archive_file_name[in] name of file being written

◆ SetChunkBoundaryCheck()

void ON_BinaryArchive::SetChunkBoundaryCheck ( bool  bChunkBoundaryCheck)
Parameters
bChunkBoundaryCheck[in] true: All read, write, and seek operations check to make sure they stay within the current chunk boundary.

◆ SetModelSerialNumber()

void ON_BinaryArchive::SetModelSerialNumber ( unsigned int  model_serial_number,
unsigned int  reference_model_serial_number,
unsigned int  instance_definition_model_serial_number 
)

Specify model serial number attributes to assign to ON_ModelComponent classes when they are read.

◆ SetReferencedComponentIdMapping()

void ON_BinaryArchive::SetReferencedComponentIdMapping ( bool  bEnableReferenceComponentIdMapping)

Set the archive's ReferencedComponentIdMapping() state.

Parameters
bEnableReferenceComponentIdMapping[in] True: (default state) Read3dmReferencedComponentId() and Write3dmReferencedComponentId() will automatically adjust compoents Id references so they are valid. False: (uncommon) Read3dmReferencedComponentId() and Write3dmReferencedComponentId() will not adjust compoents Id references so they are valid. This is only used with the component being read or written is not the model but is a copy of one in a different model (linked instance definitions being the common situation).

◆ SetReferencedComponentIndexMapping()

void ON_BinaryArchive::SetReferencedComponentIndexMapping ( bool  bEnableReferenceComponentIndexMapping)

Set the archive's ReferencedComponentIndexMapping() state.

Parameters
bEnableReferenceComponentIndexMapping[in] True: (default state) Read3dmReferencedComponentIndex() and Write3dmReferencedComponentIndex() will automatically adjust compoents index references so they are valid. False: (uncommon) Read3dmReferencedComponentIndex() and Write3dmReferencedComponentIndex() will not adjust compoents index references so they are valid. This is only used with the component being read or written is not the model but is a copy of one in a different model (linked instance definitions being the common situation).

◆ SetSave3dmPreviewImage()

void ON_BinaryArchive::SetSave3dmPreviewImage ( bool  bSave3dmPreviewImage)

◆ SetShouldSerializeUserDataDefault()

bool ON_BinaryArchive::SetShouldSerializeUserDataDefault ( bool  bSerialize)

Specify the serialization option for object user data and user tables that are not explicity set by SetShouldSerializeUserDataItem().

Parameters
bSerialize[in]

If no setting is specified, all user data is read and written.

◆ SetShouldSerializeUserDataItem()

bool ON_BinaryArchive::SetShouldSerializeUserDataItem ( ON_UUID  application_id,
ON_UUID  item_id,
bool  bSerializeUserDataItem 
)

Specify if an application's (plug-in's) object user data or user table should be read or written.

Parameters
application_id[in] The application id (often a plug-in id) for the object user data or user table.
item_id[in] item_id identifies which user data items should be read or written.
  • To determine if a specific type of object user data should be read or written, pass the value of ON_UserData.m_userdata_uuid.
  • To determine if the user table for the application should be read or written, pass application_id.
  • To determine if all object user data and the user table for the application should be read or written, pass nil.
bSerializeUserDataItem[in] True to enable reading and writing of the specified item. False to disable reading and writing of the specified item.
Returns
True if the input was valid and the setting was applied. This function will not apply any settings after reading or writing begins.

◆ SetStorageDeviceError() [1/2]

void ON_BinaryArchive::SetStorageDeviceError ( ON_BinaryArchive::eStorageDeviceError  storage_device_error)

A non-zero storage device error terminates reading or writing. See the ON_BinaryArchive::eStorageDeviceError for values. Parameter: storage_device_error - [in] A non-zero code that identifies an error the terminates reading or writing. See ON_BinaryArchive::CriticalErrorCodes for values

Once set, the storage_device_error value cannot be changed.

◆ SetStorageDeviceError() [2/2]

void ON_BinaryArchive::SetStorageDeviceError ( unsigned int  storage_device_error)

◆ SetUseBufferCompression()

void ON_BinaryArchive::SetUseBufferCompression ( bool  bUseBufferCompression)

Control when some information, like preview images and mesh information, is compressed when writing 3dm archives. The default is true. In special situations when the storage media is extremely fast and large file size is not a concern, disabling buffer compression can reduce file write time.

Parameters
bUseBufferCompression[in]

The default is true.

◆ ShouldSerializeAllUserData()

bool ON_BinaryArchive::ShouldSerializeAllUserData ( ) const
Returns
True if all user data and user tables should be read or written. False if some or no user data or user tables should be read or written.

AllUserDataSerializationIsEnabled() = (false == ShouldSerializeNoUserData() && false == ShouldSerializeSomeUserData())

◆ ShouldSerializeNoUserData()

bool ON_BinaryArchive::ShouldSerializeNoUserData ( ) const
Returns
True if no user data and user tables should be read or written. False if some or all user data or user tables should be read or written.

SerializeNoUserData() = (false == ShouldSerializeAllUserData() && false == ShouldSerializeSomeUserData())

◆ ShouldSerializeSomeUserData()

bool ON_BinaryArchive::ShouldSerializeSomeUserData ( ) const
Returns
True if some but not all user data or user tables should be read or written. False if all user data or no user data should be read or written.

SerializeSomeUserData() = (false == ShouldSerializeAllUserData() && false == ShouldSerializeNoUserData())

Use ShouldSerializeUserDataItem(application_id,item_id) to determine if a specific object user data or user table should be read or written.

◆ ShouldSerializeUserDataDefault()

bool ON_BinaryArchive::ShouldSerializeUserDataDefault ( ) const

◆ ShouldSerializeUserDataItem()

bool ON_BinaryArchive::ShouldSerializeUserDataItem ( ON_UUID  application_id,
ON_UUID  item_id 
) const

Determine if an application's (plug-in's) object user data or user table should be read or written.

Parameters
application_id[in] The application id (often a plug-in id) for the object user data or user table.
item_id[in] item_id identifies which user data items should be read or written.
  • To determine if a specific type of object user data should be read or written, pass the value of ON_UserData.m_userdata_uuid.
  • To determine if the user table for the application should be read or written, pass application_id.
  • To determine if all object user data and the user table for the application should be read or written, pass nil.
Returns
True if the identified user data or user table should be read or written.

◆ ShouldWriteUserDataItem()

bool ON_BinaryArchive::ShouldWriteUserDataItem ( const class ON_Object object,
const class ON_UserData object_user_data 
) const

◆ SizeofChunkLength()

size_t ON_BinaryArchive::SizeofChunkLength ( ) const

◆ StorageDeviceError()

unsigned int ON_BinaryArchive::StorageDeviceError ( ) const

An error terminated reading or writing

Returns
0: no error terminiated reading or writing !=0: See the ON_BinaryArchive::DeviceErrorType for values

◆ StorageDeviceErrorFromUnsigned()

static ON_BinaryArchive::eStorageDeviceError ON_BinaryArchive::StorageDeviceErrorFromUnsigned ( unsigned int  storage_device_error_as_unsigned)
static

◆ TableComponentType()

static ON_ModelComponent::Type ON_BinaryArchive::TableComponentType ( ON_3dmArchiveTableType  table_type)
static

◆ ToggleByteOrder()

static bool ON_BinaryArchive::ToggleByteOrder ( size_t  ,
size_t  ,
const void *  ,
void *   
)
static

Tool for swapping bytes when doing I/O on using big endian CPUs.

3dm files are always saved with little endian byte order.

See also
ON_BinaryArchive::Endian

◆ TypecodeName()

static const char* ON_BinaryArchive::TypecodeName ( unsigned int  tcode)
static

◆ UnsetMode()

bool ON_BinaryArchive::UnsetMode ( ) const
Returns
True if Mode() is not set to a valid read or write mode.

◆ UpdateManifestMapItemDestination()

bool ON_BinaryArchive::UpdateManifestMapItemDestination ( const class ON_ManifestMapItem map_item)

When an application is reading an archive and changes the index or id of a model component as it is added to the model, then it needs to update the manifest map item destination settings.

Parameters
map_item[in] The source type, index and id match what was read from the 3dm archive. The destination index and id are the values assigned by the application reading the 3dm archive.

◆ UseBufferCompression()

bool ON_BinaryArchive::UseBufferCompression ( ) const
Returns
true: (default) Some information, including preview images and mesh information is compressed when writing 3dm archives. This reduces, sometimes dramatically, the size of the 3dm archive. false: No compression is performed. This increases, sometimes dramatically, the size of the 3dm archive. In special situations when the storage media is extremely fast and large file size is not a concern, disabling buffer compression can reduce file write time.

◆ Write3dmAnonymousUserTable()

bool ON_BinaryArchive::Write3dmAnonymousUserTable ( const class ON_3dmGoo )

◆ Write3dmAnonymousUserTableRecord()

bool ON_BinaryArchive::Write3dmAnonymousUserTableRecord ( ON_UUID  plugin_id,
int  goo_3dm_version,
unsigned int  goo_opennurbs_version,
const class ON_3dmGoo goo 
)

If Read3dmAnaonymousUserTable() was used to read ON_3dmGoo because a plug-in was not present, then use Write3dmAnonymousUserTableRecord() to put than information back into the archive. Write3dmAnonymousUserTableRecord() writes the entire record. Do NOT call BeginWrite3dmUserTable() / EndWrite3dmUserTable() when using Write3dmAnonymousUserTableRecord().

Parameters
plugin_id[in]
goo_version[in] The version of the archive (1,2,3,4,5,50,...) that was used when the plug-in wrote the user table.
goo_opennurbs_version[in] The version of opennurbs ( YYYMMDDN ) that was used when the
plugin wrote the user table.
goo[in]
Returns
True if the goo was written or skipped because it could not be robustly saved. False if a catastrophic IO error occured.

◆ Write3dmBitmap()

bool ON_BinaryArchive::Write3dmBitmap ( const class ON_Bitmap )

◆ Write3dmChunkVersion()

bool ON_BinaryArchive::Write3dmChunkVersion ( int  ,
int   
)

◆ Write3dmDimStyle()

bool ON_BinaryArchive::Write3dmDimStyle ( const class ON_DimStyle )

◆ Write3dmDimStyleComponent() [1/2]

bool ON_BinaryArchive::Write3dmDimStyleComponent ( const class ON_ModelComponentReference model_component_reference)

◆ Write3dmDimStyleComponent() [2/2]

bool ON_BinaryArchive::Write3dmDimStyleComponent ( const class ON_ModelComponent model_component)

◆ Write3dmEndMark()

bool ON_BinaryArchive::Write3dmEndMark ( )

Writes a TCODE_ENDOFFILE chunk that contains the number of bytes in the archive.

Returns
true if successful, false if unable to write to archive.

◆ Write3dmGoo()

bool ON_BinaryArchive::Write3dmGoo ( const ON_3dmGoo )

◆ Write3dmGroup()

bool ON_BinaryArchive::Write3dmGroup ( const class ON_Group )

◆ Write3dmGroupComponent() [1/2]

bool ON_BinaryArchive::Write3dmGroupComponent ( const class ON_ModelComponentReference model_component_reference)

◆ Write3dmGroupComponent() [2/2]

bool ON_BinaryArchive::Write3dmGroupComponent ( const class ON_ModelComponent model_component)

◆ Write3dmHatchPattern()

bool ON_BinaryArchive::Write3dmHatchPattern ( const class ON_HatchPattern )

◆ Write3dmHatchPatternComponent() [1/2]

bool ON_BinaryArchive::Write3dmHatchPatternComponent ( const class ON_ModelComponentReference model_component_reference)

◆ Write3dmHatchPatternComponent() [2/2]

bool ON_BinaryArchive::Write3dmHatchPatternComponent ( const class ON_ModelComponent model_component)

◆ Write3dmHistoryRecord()

bool ON_BinaryArchive::Write3dmHistoryRecord ( const class ON_HistoryRecord )

◆ Write3dmHistoryRecordComponent() [1/2]

bool ON_BinaryArchive::Write3dmHistoryRecordComponent ( const class ON_ModelComponentReference model_component_reference)

◆ Write3dmHistoryRecordComponent() [2/2]

bool ON_BinaryArchive::Write3dmHistoryRecordComponent ( const class ON_ModelComponent model_component)

◆ Write3dmImageComponent() [1/2]

bool ON_BinaryArchive::Write3dmImageComponent ( const class ON_ModelComponentReference model_component_reference)

◆ Write3dmImageComponent() [2/2]

bool ON_BinaryArchive::Write3dmImageComponent ( const class ON_ModelComponent model_component)

◆ Write3dmInstanceDefinition()

bool ON_BinaryArchive::Write3dmInstanceDefinition ( const class ON_InstanceDefinition )

◆ Write3dmInstanceDefinitionComponent() [1/2]

bool ON_BinaryArchive::Write3dmInstanceDefinitionComponent ( const class ON_ModelComponentReference model_component_reference)

◆ Write3dmInstanceDefinitionComponent() [2/2]

bool ON_BinaryArchive::Write3dmInstanceDefinitionComponent ( const class ON_ModelComponent model_component)

◆ Write3dmLayer()

bool ON_BinaryArchive::Write3dmLayer ( const ON_Layer )

◆ Write3dmLayerComponent() [1/2]

bool ON_BinaryArchive::Write3dmLayerComponent ( const class ON_ModelComponentReference model_component_reference)

◆ Write3dmLayerComponent() [2/2]

bool ON_BinaryArchive::Write3dmLayerComponent ( const class ON_ModelComponent model_component)

◆ Write3dmLight()

bool ON_BinaryArchive::Write3dmLight ( const class ON_Light ,
const class ON_3dmObjectAttributes  
)

◆ Write3dmLinePatternComponent() [1/2]

bool ON_BinaryArchive::Write3dmLinePatternComponent ( const class ON_ModelComponentReference model_component_reference)

◆ Write3dmLinePatternComponent() [2/2]

bool ON_BinaryArchive::Write3dmLinePatternComponent ( const class ON_ModelComponent model_component)

◆ Write3dmLinetype()

bool ON_BinaryArchive::Write3dmLinetype ( const class ON_Linetype line_pattern)

◆ Write3dmMaterial()

bool ON_BinaryArchive::Write3dmMaterial ( const class ON_Material )

◆ Write3dmMaterialComponent() [1/2]

bool ON_BinaryArchive::Write3dmMaterialComponent ( const class ON_ModelComponentReference model_component_reference)

◆ Write3dmMaterialComponent() [2/2]

bool ON_BinaryArchive::Write3dmMaterialComponent ( const class ON_ModelComponent model_component)

◆ Write3dmModelGeometryComponent() [1/2]

bool ON_BinaryArchive::Write3dmModelGeometryComponent ( const class ON_ModelComponentReference model_component_reference)

◆ Write3dmModelGeometryComponent() [2/2]

bool ON_BinaryArchive::Write3dmModelGeometryComponent ( const class ON_ModelGeometryComponent model_geometry)

◆ Write3dmModelLightComponent() [1/2]

bool ON_BinaryArchive::Write3dmModelLightComponent ( const class ON_ModelComponentReference model_component_reference)

◆ Write3dmModelLightComponent() [2/2]

bool ON_BinaryArchive::Write3dmModelLightComponent ( const class ON_ModelGeometryComponent model_light)

◆ Write3dmObject()

bool ON_BinaryArchive::Write3dmObject ( const ON_Object ,
const ON_3dmObjectAttributes  
)

◆ Write3dmProperties()

bool ON_BinaryArchive::Write3dmProperties ( const class ON_3dmProperties )

◆ Write3dmReferencedComponentId() [1/2]

bool ON_BinaryArchive::Write3dmReferencedComponentId ( ON_ModelComponent::Type  component_type,
ON_UUID  model_component_id 
)

WriteComponentId converts the model ID into an archive ID and writes the archive Id value. Generally, the ID of the component in the model is identical to the ID of the component in the archive. In rare situations this is not the case.

During writing, the m_manifest member stores the model ID as the "Component" value and the 3dm archive ID as the "Manifest" value.

◆ Write3dmReferencedComponentId() [2/2]

bool ON_BinaryArchive::Write3dmReferencedComponentId ( const ON_ModelComponent model_component)

◆ Write3dmReferencedComponentIndex() [1/3]

bool ON_BinaryArchive::Write3dmReferencedComponentIndex ( ON_ModelComponent::Type  component_type,
int  model_component_index 
)

When writing archives, the index of the component in the model is often different than the index of the component in the archive. WriteComponentIndex converts the model id or index into an archive index and writes the archive index value.

During writing, the m_manifest member stores the model id and index as the "Component" value and the 3dm archive id index as the "Manifest" value.

◆ Write3dmReferencedComponentIndex() [2/3]

bool ON_BinaryArchive::Write3dmReferencedComponentIndex ( ON_ModelComponent::Type  component_type,
ON_UUID  model_component_id 
)

When writing archives, the index of the component in the model is often different than the index of the component in the archive. WriteComponentIndex converts the model id or index into an archive index and writes the archive index value.

During writing, the m_manifest member stores the model id and index as the "Component" value and the 3dm archive id index as the "Manifest" value.

◆ Write3dmReferencedComponentIndex() [3/3]

bool ON_BinaryArchive::Write3dmReferencedComponentIndex ( const ON_ModelComponent model_component)

When writing archives, the index of the component in the model is often different than the index of the component in the archive. WriteComponentIndex converts the model id or index into an archive index and writes the archive index value.

During writing, the m_manifest member stores the model id and index as the "Component" value and the 3dm archive id index as the "Manifest" value.

◆ Write3dmSettings()

bool ON_BinaryArchive::Write3dmSettings ( const class ON_3dmSettings )

◆ Write3dmStartSection()

bool ON_BinaryArchive::Write3dmStartSection ( int  version,
const char *  sStartSectionComment 
)
Parameters
version[in] 0, 2, 3, 4, 5, 50 or 60 (5 is treated as 50)

If version is 0, then the value of ON_BinaryArchive::CurrentArchiveVersion() is used.

Use either 0 or the value of ON_BinaryArchive::CurrentArchiveVersion() for the version parameter when you want your code to write the most up to date file version.

Parameters
sStartSectionComment[in] nullptr or a UTF-8 encoded string with application name, et cetera. This information is primarily used when debugging files that contain problems. McNeel and Associates stores application name, application version, compile date, and the OS in use when file was written.

◆ Write3dmTextureMapping()

bool ON_BinaryArchive::Write3dmTextureMapping ( const class ON_TextureMapping )

◆ Write3dmTextureMappingComponent() [1/2]

bool ON_BinaryArchive::Write3dmTextureMappingComponent ( const class ON_ModelComponentReference model_component_reference)

◆ Write3dmTextureMappingComponent() [2/2]

bool ON_BinaryArchive::Write3dmTextureMappingComponent ( const class ON_ModelComponent model_component)

◆ WriteArc()

bool ON_BinaryArchive::WriteArc ( const ON_Arc )

◆ WriteArray() [1/34]

bool ON_BinaryArchive::WriteArray ( const ON_SimpleArray< bool > &  )

◆ WriteArray() [2/34]

bool ON_BinaryArchive::WriteArray ( const ON_SimpleArray< char > &  )

◆ WriteArray() [3/34]

bool ON_BinaryArchive::WriteArray ( const ON_SimpleArray< short > &  )

◆ WriteArray() [4/34]

bool ON_BinaryArchive::WriteArray ( const ON_SimpleArray< int > &  )

◆ WriteArray() [5/34]

bool ON_BinaryArchive::WriteArray ( const ON_SimpleArray< float > &  )

◆ WriteArray() [6/34]

bool ON_BinaryArchive::WriteArray ( const ON_SimpleArray< double > &  )

◆ WriteArray() [7/34]

bool ON_BinaryArchive::WriteArray ( const ON_SimpleArray< ON_Color > &  )

◆ WriteArray() [8/34]

bool ON_BinaryArchive::WriteArray ( const ON_SimpleArray< ON_2dPoint > &  )

◆ WriteArray() [9/34]

bool ON_BinaryArchive::WriteArray ( const ON_SimpleArray< ON_3dPoint > &  )

◆ WriteArray() [10/34]

bool ON_BinaryArchive::WriteArray ( const ON_SimpleArray< ON_4dPoint > &  )

◆ WriteArray() [11/34]

bool ON_BinaryArchive::WriteArray ( const ON_SimpleArray< ON_2dVector > &  )

◆ WriteArray() [12/34]

bool ON_BinaryArchive::WriteArray ( const ON_SimpleArray< ON_3dVector > &  )

◆ WriteArray() [13/34]

bool ON_BinaryArchive::WriteArray ( const ON_SimpleArray< ON_2fPoint > &  )

◆ WriteArray() [14/34]

bool ON_BinaryArchive::WriteArray ( const ON_SimpleArray< ON_3fPoint > &  )

◆ WriteArray() [15/34]

bool ON_BinaryArchive::WriteArray ( const ON_SimpleArray< ON_4fPoint > &  )

◆ WriteArray() [16/34]

bool ON_BinaryArchive::WriteArray ( const ON_SimpleArray< ON_2fVector > &  )

◆ WriteArray() [17/34]

bool ON_BinaryArchive::WriteArray ( const ON_SimpleArray< ON_3fVector > &  )

◆ WriteArray() [18/34]

bool ON_BinaryArchive::WriteArray ( const ON_SimpleArray< ON_Xform > &  )

◆ WriteArray() [19/34]

bool ON_BinaryArchive::WriteArray ( const ON_SimpleArray< ON_UUID > &  )

◆ WriteArray() [20/34]

bool ON_BinaryArchive::WriteArray ( const ON_SimpleArray< ON_UuidIndex > &  )

◆ WriteArray() [21/34]

bool ON_BinaryArchive::WriteArray ( const ON_SimpleArray< ON_UuidPtr > &  )

◆ WriteArray() [22/34]

bool ON_BinaryArchive::WriteArray ( const ON_SimpleArray< ON_SurfaceCurvature > &  )

◆ WriteArray() [23/34]

bool ON_BinaryArchive::WriteArray ( const ON_ClassArray< ON_String > &  )

◆ WriteArray() [24/34]

bool ON_BinaryArchive::WriteArray ( const ON_ClassArray< ON_wString > &  )

◆ WriteArray() [25/34]

bool ON_BinaryArchive::WriteArray ( const ON_SimpleArray< ON_DisplayMaterialRef > &  )

◆ WriteArray() [26/34]

bool ON_BinaryArchive::WriteArray ( const ON_SimpleArray< ON_LinetypeSegment > &  )

◆ WriteArray() [27/34]

bool ON_BinaryArchive::WriteArray ( const ON_SimpleArray< ON_MappingChannel > &  )

◆ WriteArray() [28/34]

bool ON_BinaryArchive::WriteArray ( const ON_ClassArray< ON_MaterialRef > &  )

◆ WriteArray() [29/34]

bool ON_BinaryArchive::WriteArray ( const ON_ClassArray< ON_MappingRef > &  )

◆ WriteArray() [30/34]

bool ON_BinaryArchive::WriteArray ( const ON_ClassArray< class ON_ObjRef > &  )

◆ WriteArray() [31/34]

bool ON_BinaryArchive::WriteArray ( const ON_SimpleArray< class ON_ObjRef_IRefID > &  )

◆ WriteArray() [32/34]

bool ON_BinaryArchive::WriteArray ( const ON_SimpleArray< class ON_ClippingPlaneInfo > &  )

◆ WriteArray() [33/34]

bool ON_BinaryArchive::WriteArray ( int  count,
const class ON_Layer  
)

◆ WriteArray() [34/34]

bool ON_BinaryArchive::WriteArray ( int  count,
const class ON_Layer *const *   
)

◆ WriteBigInt() [1/4]

bool ON_BinaryArchive::WriteBigInt ( size_t  ,
const ON__INT64 *   
)

◆ WriteBigInt() [2/4]

bool ON_BinaryArchive::WriteBigInt ( size_t  ,
const ON__UINT64 *   
)

◆ WriteBigInt() [3/4]

bool ON_BinaryArchive::WriteBigInt ( ON__INT64  )

◆ WriteBigInt() [4/4]

bool ON_BinaryArchive::WriteBigInt ( ON__UINT64  )

◆ WriteBigSize()

bool ON_BinaryArchive::WriteBigSize ( size_t  )

◆ WriteBigTime()

bool ON_BinaryArchive::WriteBigTime ( time_t  )

◆ WriteBool()

bool ON_BinaryArchive::WriteBool ( bool  )

◆ WriteBoolFalse()

bool ON_BinaryArchive::WriteBoolFalse ( )

◆ WriteBoolTrue()

bool ON_BinaryArchive::WriteBoolTrue ( )

◆ WriteBoundingBox()

bool ON_BinaryArchive::WriteBoundingBox ( const ON_BoundingBox )

◆ WriteByte()

bool ON_BinaryArchive::WriteByte ( size_t  ,
const void *   
)

◆ WriteChar() [1/4]

bool ON_BinaryArchive::WriteChar ( size_t  ,
const char *   
)

◆ WriteChar() [2/4]

bool ON_BinaryArchive::WriteChar ( size_t  ,
const unsigned char *   
)

◆ WriteChar() [3/4]

bool ON_BinaryArchive::WriteChar ( char  )

◆ WriteChar() [4/4]

bool ON_BinaryArchive::WriteChar ( unsigned  char)

◆ WriteCircle()

bool ON_BinaryArchive::WriteCircle ( const ON_Circle )

◆ WriteColor()

bool ON_BinaryArchive::WriteColor ( const ON_Color )

◆ WriteComponentIndex()

bool ON_BinaryArchive::WriteComponentIndex ( const ON_COMPONENT_INDEX &  )

◆ WriteCompressedBuffer()

bool ON_BinaryArchive::WriteCompressedBuffer ( size_t  sizeof__inbuffer,
const void *  inbuffer 
)

Compress buffer and write the compressed information to the archive.

Parameters
sizeof__inbuffer[in] size of the uncompressed buffer in bytes
inbuffer[in] uncompressed buffer
Returns
True if write was successful.

Write your archive write/read code as if compression is always enabled. Do not vary what get written or read based on the value of UseBufferCompression().

◆ WriteDisplayMaterialRef()

bool ON_BinaryArchive::WriteDisplayMaterialRef ( const ON_DisplayMaterialRef )

◆ WriteDouble() [1/2]

bool ON_BinaryArchive::WriteDouble ( size_t  ,
const double *   
)

◆ WriteDouble() [2/2]

bool ON_BinaryArchive::WriteDouble ( double  )

◆ WriteFloat() [1/2]

bool ON_BinaryArchive::WriteFloat ( size_t  ,
const float *   
)

◆ WriteFloat() [2/2]

bool ON_BinaryArchive::WriteFloat ( float  )

◆ WriteInt() [1/4]

bool ON_BinaryArchive::WriteInt ( size_t  ,
const int *   
)

◆ WriteInt() [2/4]

bool ON_BinaryArchive::WriteInt ( size_t  ,
const unsigned int *   
)

◆ WriteInt() [3/4]

bool ON_BinaryArchive::WriteInt ( int  )

◆ WriteInt() [4/4]

bool ON_BinaryArchive::WriteInt ( unsigned  int)

◆ WriteInterval()

bool ON_BinaryArchive::WriteInterval ( const ON_Interval )

◆ WriteLine()

bool ON_BinaryArchive::WriteLine ( const ON_Line )

◆ WriteLinetypeSegment()

bool ON_BinaryArchive::WriteLinetypeSegment ( const ON_LinetypeSegment )

◆ WriteLong() [1/4]

bool ON_BinaryArchive::WriteLong ( size_t  ,
const long *   
)

◆ WriteLong() [2/4]

bool ON_BinaryArchive::WriteLong ( size_t  ,
const unsigned long *   
)

◆ WriteLong() [3/4]

bool ON_BinaryArchive::WriteLong ( long  )

◆ WriteLong() [4/4]

bool ON_BinaryArchive::WriteLong ( unsigned  long)

◆ WriteMode()

bool ON_BinaryArchive::WriteMode ( ) const
Returns
True if Mode() is an archive writing mode.

◆ WriteModelComponentAttributes()

bool ON_BinaryArchive::WriteModelComponentAttributes ( const class ON_ModelComponent model_component,
unsigned int  attributes_filter 
)

Writes the attributes identified by the component_filter parameter.

Parameters
model_component[in]
attributes_filter[in] A bitfield that determines which attributes will be written.
Returns
false: critical failure. true: writing can continue.

◆ WriteModelComponentName()

bool ON_BinaryArchive::WriteModelComponentName ( const ON_ModelComponent model_component)

◆ WriteObject() [1/2]

bool ON_BinaryArchive::WriteObject ( const ON_Object )

◆ WriteObject() [2/2]

bool ON_BinaryArchive::WriteObject ( const ON_Object )

◆ WriteObjectUserData()

bool ON_BinaryArchive::WriteObjectUserData ( const ON_Object object)

Low level tool to writes user data attached to the object. This function should never be called directly.

Parameters
object[in]
Returns
True if successful.

◆ WritePlane()

bool ON_BinaryArchive::WritePlane ( const ON_Plane )

◆ WritePlaneEquation()

bool ON_BinaryArchive::WritePlaneEquation ( const ON_PlaneEquation )

◆ WritePoint() [1/3]

bool ON_BinaryArchive::WritePoint ( const ON_2dPoint )

◆ WritePoint() [2/3]

bool ON_BinaryArchive::WritePoint ( const ON_3dPoint )

◆ WritePoint() [3/3]

bool ON_BinaryArchive::WritePoint ( const ON_4dPoint )

◆ WriteShort() [1/4]

bool ON_BinaryArchive::WriteShort ( size_t  ,
const short *   
)

◆ WriteShort() [2/4]

bool ON_BinaryArchive::WriteShort ( size_t  ,
const unsigned short *   
)

◆ WriteShort() [3/4]

bool ON_BinaryArchive::WriteShort ( short  )

◆ WriteShort() [4/4]

bool ON_BinaryArchive::WriteShort ( unsigned  short)

◆ WriteSize()

bool ON_BinaryArchive::WriteSize ( size_t  )

◆ WriteString() [1/4]

bool ON_BinaryArchive::WriteString ( const char *  sUTF8)
Parameters
sUTF8[in] A null terminated UTF-8 encoded unicode string.

To read a string written with WriteString(const char*), call ReadStringUTF8ElementCount(&string_utf8_element_count) to get the number of char elements written in the file, obtain a buffer with at least string_utf8_element_count char elements and then call ReadString(string_utf8_element_count,buffer) to read the char elements.

If 0 == sUTF8 or 0 == SUTF8[0], a 4 byte int with value = 0 is written, otherwise a 4 byte int with value = strlen + 1 is written, followed by the string, followed by the null terminator.

◆ WriteString() [2/4]

bool ON_BinaryArchive::WriteString ( const unsigned char *  sUTF8)
Parameters
sUTF8[in] A null terminated UTF-8 encoded unicode string.

To read a string written with WriteString(const unsigned char*), call ReadStringUTF8ElementCount(&string_utf8_element_count) to get the number of unsigned char elements written in the file, obtain a buffer with at least string_utf8_element_count unsigned char elements and then call ReadString(string_utf8_element_count,buffer) to read the unsigned charelements.

If 0 == sUTF8 or 0 == SUTF8[0], a 4 byte int with value = 0 is written, otherwise a 4 byte int with value = strlen + 1 is written, followed by the string, followed by the null terminator.

◆ WriteString() [3/4]

bool ON_BinaryArchive::WriteString ( const ON_String sUTF8)

◆ WriteString() [4/4]

bool ON_BinaryArchive::WriteString ( const ON_wString s)

◆ WriteTime()

bool ON_BinaryArchive::WriteTime ( const struct tm &  )

◆ WriteUTF16String()

bool ON_BinaryArchive::WriteUTF16String ( const unsigned short *  sUTF16)
Parameters
sUTF16[in] A null terminated UTF-16 encoded unicode string.

To read a string written with WriteString(const unsigned short*), call ReadStringUTF16ElementCount(&string_utf16_element_count) to get the number of unsigned short elements written in the file, obtain a buffer with at least string_utf16_element_count unsigned short elements and then call ReadString(string_utf16_element_count,buffer) to read the unsigned short elements.

If 0 == sUTF8 or 0 == SUTF8[0], a 4 byte int with value = 0 is written, otherwise a 4 byte int with value = strlen + 1 is written, followed by the string, followed by the null terminator.

◆ WriteUuid()

bool ON_BinaryArchive::WriteUuid ( const ON_UUID )

◆ WriteVector() [1/2]

bool ON_BinaryArchive::WriteVector ( const ON_2dVector )

◆ WriteVector() [2/2]

bool ON_BinaryArchive::WriteVector ( const ON_3dVector )

◆ WriteWideString() [1/2]

bool ON_BinaryArchive::WriteWideString ( const wchar_t *  sWideChar,
int  sWideChar_count 
)

Write a wide string as a UTF-8 encoded string.

◆ WriteWideString() [2/2]

bool ON_BinaryArchive::WriteWideString ( const ON_wString wide_string)

Write a wide string as a UTF-8 encoded string.

◆ WriteXform()

bool ON_BinaryArchive::WriteXform ( const ON_Xform )

Friends And Related Function Documentation

◆ ON_SetBinaryArchiveOpenNURBSVersion

void ON_SetBinaryArchiveOpenNURBSVersion ( ON_BinaryArchive ,
unsigned  int 
)
friend