Pure virtual base class for all classes that must provide runtime class id or support object level 3DM serialization More...

#include <opennurbs_object.h>

Inheritance diagram for ON_Object:
ON_3dmObjectAttributes ON_3dmRenderSettings ON_BrepFaceSide ON_BrepRegion ON_DocumentUserStringList ON_Geometry ON_ModelComponent ON_Texture ON_UserData ON_UserDataHolder

Public Types

enum  UserDataConflictResolution : unsigned char {
  UserDataConflictResolution::destination_object = 0, UserDataConflictResolution::source_object = 1, UserDataConflictResolution::source_copycount_gt = 2, UserDataConflictResolution::source_copycount_ge = 3,
  UserDataConflictResolution::destination_copycount_gt = 4, UserDataConflictResolution::destination_copycount_ge = 5, UserDataConflictResolution::delete_item = 6
}
 When a userdata item is copied or moved from a source object to a destination object, the ON_Object::UserDataConflictResolution enum values specify how conficts are resolved. Remark: A userdata item "conflict" occurs when both the destination and source object have a user data item with the same value of ON_UserData::m_userdata_uuid. More...
 

Public Member Functions

 ON_Object () ON_NOEXCEPT
 
 ON_Object (const ON_Object &)
 
virtual ~ON_Object ()
 
virtual ON_AggregateComponentStatus AggregateComponentStatus () const
 Call whenever a component status setting is modifed by directly changing it on a component in a way that will result in any saved information about the parent object's aggretate component status becoming invalid. More...
 
bool AttachUserData (class ON_UserData *pUserData)
 Attach user data to an object. More...
 
unsigned int ClearAllComponentStates () const
 Set all active level component states to ON_ComponentStatus::NoneSet. More...
 
virtual unsigned int ClearComponentStates (ON_ComponentStatus states_to_clear) const
 Clear the specified states on every component. More...
 
virtual unsigned int ClearComponentStates (ON_COMPONENT_INDEX component_index, ON_ComponentStatus states_to_clear) const
 Clear states on an individual component. More...
 
unsigned int CopyUserData (const ON_Object &source_object, ON_UUID source_userdata_item_id, ON_Object::UserDataConflictResolution userdata_conflict_resolution)
 Expert user tool that copies user data items with positive values of ON_UserData.m_userdata_copycount from source_object to "this. More...
 
void CopyUserData (const ON_Object &source_object)
 Calls CopyUserData(source_object,ON_Object::UserDataConflictResolution::source_object). More...
 
virtual ON__UINT32 DataCRC (ON__UINT32 current_remainder) const
 Returns a CRC calculated from the information that defines the object. This CRC can be used as a quick way to see if two objects are not identical. More...
 
virtual bool DeleteComponents (const ON_COMPONENT_INDEX *ci_list, size_t ci_count)
 Delete the portions of the object identified in ci_list[]. More...
 
virtual void DestroyRuntimeCache (bool bDelete=true)
 Expert user function. If you are using openNURBS in its default configuration to read and write 3dm archives, you never need to call this function. Many objects employ lazy creation of (runtime) caches that save information to help speed geometric calculations. This function will destroy all runtime information. More...
 
bool DetachUserData (class ON_UserData *pUserData)
 Remove user data from an object. More...
 
virtual void Dump (ON_TextLog &) const
 Creates a text dump of the object. More...
 
void EmergencyDestroy ()
 Sets m_user_data_list = 0. More...
 
class ON_UserDataFirstUserData () const
 User data is stored as a linked list of ON_UserData classes. FirstUserData gets the first item in the linked list. This is the most recent item attached using AttachUserData(). Remark: To iterate through all the user data on an object, call FirstUserData() and then use ON_UserData::Next() to traverse the list. More...
 
virtual unsigned int GetComponentsWithSetStates (ON_ComponentStatus states_filter, bool bAllEqualStates, ON_SimpleArray< ON_COMPONENT_INDEX > &components) const
 
class ON_UserDataGetUserData (const ON_UUID &userdata_uuid) const
 Get a pointer to user data. More...
 
bool GetUserString (const wchar_t *key, ON_wString &string_value) const
 Get user string from the object. More...
 
int GetUserStringKeys (ON_ClassArray< ON_wString > &user_string_keys) const
 Get a list of all user string keys on the object. More...
 
int GetUserStrings (ON_ClassArray< ON_UserString > &user_strings) const
 Get a list of all user strings on the object. More...
 
bool IsKindOf (const ON_ClassId *pClassId) const
 Low level tool to test if an object is derived from a specified class. More...
 
virtual bool IsValid (class ON_TextLog *text_log=nullptr) const
 Tests an object to see if its data members are correctly initialized. More...
 
virtual void MarkAggregateComponentStatusAsNotCurrent () const
 Call whenever a component status setting is modifed by directly changing it on a component in a way that will result in any saved information about the parent object's aggretate component status becoming invalid. More...
 
virtual void MemoryRelocate ()
 The MemoryRelocate() function is called when an object's location in memory is changed. For example, if an object resides in a chunk of memory that is grown by calling a realloc that has to allocate a new chunk and copy the contents of the old chunk to the new chunk, then the location of the object's memory changes. In practice this happens when classes derived from ON_Object are stored in dynamic arrays, like the default implementation of ON_ObjectArray<>'s that use realloc to grow the dynamic array. More...
 
virtual ON_UUID ModelObjectId () const
 All objects in an opennurbs model have an id ( ON_Layer.m_layer_id, ON_Font.m_font_id, ON_Material.m_material_id, ON_3dmObjectAttributes.m_uuid ). More...
 
unsigned int MoveUserData (ON_Object &source_object, ON_UUID source_userdata_item_id, ON_Object::UserDataConflictResolution userdata_conflict_resolution, bool bDeleteAllSourceItems)
 Expert user tool that moves user data items from source_object to "this. More...
 
void MoveUserData (ON_Object &source_object)
 Calls MoveUserData(source_object,ON_Object::UserDataConflictResolution::source_object,true). More...
 
virtual ON::object_type ObjectType () const
 Useful for switch statements that need to differentiate between basic object types like points, curves, surfaces, and so on. More...
 
ON_Objectoperator= (const ON_Object &)
 
void PurgeUserData ()
 PurgeUserData() removes all user data from object. More...
 
virtual bool Read (ON_BinaryArchive &binary_archive)
 Low level archive writing tool used by ON_BinaryArchive::ReadObject(). More...
 
virtual unsigned int SetComponentStates (ON_COMPONENT_INDEX component_index, ON_ComponentStatus states_to_set) const
 Set states on an individual component. More...
 
virtual unsigned int SetComponentStatus (ON_COMPONENT_INDEX component_index, ON_ComponentStatus status_to_copy) const
 Copy status settings to an individual component. More...
 
bool SetUserString (const wchar_t *key, const wchar_t *string_value)
 Attach a user string to the object. This information will perisist through copy construction, operator=, and file IO. More...
 
int SetUserStrings (int count, const ON_UserString *user_strings, bool bReplace)
 Append entries to the user string list More...
 
virtual unsigned int SizeOf () const
 
void TransformUserData (const class ON_Xform &xform)
 Objects derived from ON_Geometry must call TransformUserData() in their Transform() member function. More...
 
virtual bool UpdateReferencedComponents (const class ON_ComponentManifest &source_manifest, const class ON_ComponentManifest &destination_manifest, const class ON_ManifestMap &manifest_map)
 Uses the destination_manifest to update references to other components. This is typically done when a component's references came from a "source" context and are being updated to the "destination" context. For example, inserting one model into another when index, id, and name conflicts need to be resolved at the time of insertion. More...
 
int UserStringCount () const
 
virtual bool Write (ON_BinaryArchive &binary_archive) const
 Low level archive writing tool used by ON_BinaryArchive::WriteObject(). More...
 

Detailed Description

Pure virtual base class for all classes that must provide runtime class id or support object level 3DM serialization

Member Enumeration Documentation

◆ UserDataConflictResolution

enum ON_Object::UserDataConflictResolution : unsigned char
strong

When a userdata item is copied or moved from a source object to a destination object, the ON_Object::UserDataConflictResolution enum values specify how conficts are resolved. Remark: A userdata item "conflict" occurs when both the destination and source object have a user data item with the same value of ON_UserData::m_userdata_uuid.

Enumerator
destination_object 
source_object 
source_copycount_gt 
source_copycount_ge 
destination_copycount_gt 
destination_copycount_ge 
delete_item 

Constructor & Destructor Documentation

◆ ON_Object() [1/2]

ON_Object::ON_Object ( )

◆ ~ON_Object()

virtual ON_Object::~ON_Object ( )
virtual

◆ ON_Object() [2/2]

ON_Object::ON_Object ( const ON_Object )

Member Function Documentation

◆ AggregateComponentStatus()

virtual ON_AggregateComponentStatus ON_Object::AggregateComponentStatus ( ) const
virtual

Call whenever a component status setting is modifed by directly changing it on a component in a way that will result in any saved information about the parent object's aggretate component status becoming invalid.

Returns
Aggregate information about the object's component states.

Reimplemented in ON_Brep.

◆ AttachUserData()

bool ON_Object::AttachUserData ( class ON_UserData pUserData)

Attach user data to an object.

Parameters
pUserData[in] user data to attach to object. The ON_UserData pointer passed to AttachUserData() must be created with new.
Returns
If true is returned, then ON_Object will delete the user data when appropriate. If false is returned, then data could not be attached and caller must delete.

AttachUserData() will fail if the user data's m_userdata_uuid field is nil or not unique.

◆ ClearAllComponentStates()

unsigned int ON_Object::ClearAllComponentStates ( ) const

Set all active level component states to ON_ComponentStatus::NoneSet.

Returns
Number of components where a state setting chanaged.

◆ ClearComponentStates() [1/2]

virtual unsigned int ON_Object::ClearComponentStates ( ON_ComponentStatus  states_to_clear) const
virtual

Clear the specified states on every component.

Parameters
states_to_clear[in] States to clear.
Returns
Number of components where a state setting chanaged.

Reimplemented in ON_Brep.

◆ ClearComponentStates() [2/2]

virtual unsigned int ON_Object::ClearComponentStates ( ON_COMPONENT_INDEX  component_index,
ON_ComponentStatus  states_to_clear 
) const
virtual

Clear states on an individual component.

Parameters
component_index[in] The states will be cleared on this component.
states_to_clear[in] If a state is set in the states_to_clear parameter, the same state will be cleared on the component.
Returns
0: no state settings changed on the component. 1: some state setting changed on the component.

Reimplemented in ON_Brep.

◆ CopyUserData() [1/2]

unsigned int ON_Object::CopyUserData ( const ON_Object source_object,
ON_UUID  source_userdata_item_id,
ON_Object::UserDataConflictResolution  userdata_conflict_resolution 
)

Expert user tool that copies user data items with positive values of ON_UserData.m_userdata_copycount from source_object to "this.

Parameters
source_object[in] source of user data to copy
source_userdata_item_id[in] If source_userdata_item_id is not nil, then only the user data item with a matching ON_UserData.m_userdata_uuid value will be copied.
userdata_conflict_resolution[in] method to resolve userdata item conficts.
Returns
Number of user data items that were copied.

Generally speaking you don't need to use CopyUserData(). Simply rely on ON_Object::operator=() or the copy constructor to do the right thing.

◆ CopyUserData() [2/2]

void ON_Object::CopyUserData ( const ON_Object source_object)

Calls CopyUserData(source_object,ON_Object::UserDataConflictResolution::source_object).

Parameters
source_object[in]

◆ DataCRC()

virtual ON__UINT32 ON_Object::DataCRC ( ON__UINT32  current_remainder) const
virtual

Returns a CRC calculated from the information that defines the object. This CRC can be used as a quick way to see if two objects are not identical.

Parameters
current_remainder[in];
Returns
CRC of the information the defines the object.

Reimplemented in ON_Mesh, ON_Brep, ON_NurbsCage, ON_BrepFace, ON_DocumentUserStringList, ON_ClippingPlaneSurface, ON_UserStringList, ON_BrepEdge, ON_SumSurface, ON_NurbsSurface, ON_RevSurface, ON_NurbsCurve, ON_BrepVertex, ON_PolyCurve, ON_SurfaceProxy, ON_Extrusion, ON_CurveProxy, ON_PolylineCurve, ON_LineCurve, ON_ArcCurve, ON_PlaneSurface, and ON_ModelComponent.

◆ DeleteComponents()

virtual bool ON_Object::DeleteComponents ( const ON_COMPONENT_INDEX *  ci_list,
size_t  ci_count 
)
virtual

Delete the portions of the object identified in ci_list[].

Parameters
ci_list[in] List of components to delete.
ci_list_count[in] Number of elements in the ci_list[] array.
Returns
True: succesful False: failure - no changes.

Reimplemented in ON_Mesh.

◆ DestroyRuntimeCache()

virtual void ON_Object::DestroyRuntimeCache ( bool  bDelete = true)
virtual

Expert user function. If you are using openNURBS in its default configuration to read and write 3dm archives, you never need to call this function. Many objects employ lazy creation of (runtime) caches that save information to help speed geometric calculations. This function will destroy all runtime information.

Parameters
bDelete[in] if true, any cached information is properly deleted. If false, any cached information is simply discarded. This is useful when the cached information may be in alternate memory pools that are managed in nonstandard ways.

Reimplemented in ON_Mesh, ON_MorphControl, ON_Brep, ON_NurbsCage, ON_BrepFace, ON_BrepLoop, ON_BrepTrim, ON_PolyEdgeSegment, ON_Curve, ON_Extrusion, ON_Surface, ON_CurveProxy, ON_PolyCurve, ON_PolyEdgeCurve, ON_SurfaceProxy, ON_SumSurface, and ON_RevSurface.

◆ DetachUserData()

bool ON_Object::DetachUserData ( class ON_UserData pUserData)

Remove user data from an object.

Parameters
pUserData[in] user data to attach to object. The ON_UserData pointer passed to DetachUserData() must have been previously attached using AttachUserData().
Returns
If true is returned, then the user data was attached to this object and it was detached. If false is returned, then the user data was not attached to this object to begin with. In all cases, you can be assured that the user data is no longer attached to "this".

Call delete pUserData if you want to destroy the user data.

◆ Dump()

◆ EmergencyDestroy()

void ON_Object::EmergencyDestroy ( )

Sets m_user_data_list = 0.

◆ FirstUserData()

class ON_UserData* ON_Object::FirstUserData ( ) const

User data is stored as a linked list of ON_UserData classes. FirstUserData gets the first item in the linked list. This is the most recent item attached using AttachUserData(). Remark: To iterate through all the user data on an object, call FirstUserData() and then use ON_UserData::Next() to traverse the list.

◆ GetComponentsWithSetStates()

virtual unsigned int ON_Object::GetComponentsWithSetStates ( ON_ComponentStatus  states_filter,
bool  bAllEqualStates,
ON_SimpleArray< ON_COMPONENT_INDEX > &  components 
) const
virtual
Parameters
states_filter[in]
bAllEqualStates[in] If a state is set in states_filter, all active level components with the same state set will be included in the components_with_set_states[] array.

If bAllEqualStates is true, then ON_ComponentStatus::AllEqualStates() is used to test for inclusion.

If bAllEqualStates is false, then ON_ComponentStatus::SomeEqualStates() is used to test for inclusion.

Parameters
components_with_set_states[out]
Returns
Number of returned components.

Reimplemented in ON_Brep.

◆ GetUserData()

class ON_UserData* ON_Object::GetUserData ( const ON_UUID userdata_uuid) const

Get a pointer to user data.

Parameters
userdata_uuid[in] value of the user data's m_userdata_uuid field.

The returned user data is still attached to the object. Deleting the returned user data will automatically remove the user data from the object.

◆ GetUserString()

bool ON_Object::GetUserString ( const wchar_t *  key,
ON_wString string_value 
) const

Get user string from the object.

Parameters
key[in] id used to retrieve the string.
string_value[out]
Returns
True if a string with id was found.

◆ GetUserStringKeys()

int ON_Object::GetUserStringKeys ( ON_ClassArray< ON_wString > &  user_string_keys) const

Get a list of all user string keys on the object.

Parameters
user_string_keys[out] user string keys are appended to this list.
Returns
Number of elements appended to the user_strings list.

◆ GetUserStrings()

int ON_Object::GetUserStrings ( ON_ClassArray< ON_UserString > &  user_strings) const

Get a list of all user strings on the object.

Parameters
user_strings[out] user strings are appended to this list.
Returns
Number of elements appended to the user_strings list.

◆ IsKindOf()

bool ON_Object::IsKindOf ( const ON_ClassId pClassId) const

Low level tool to test if an object is derived from a specified class.

Parameters
pClassId[in] use classname::ClassId()
Returns
true if the instantiated object is derived from the class whose id is passed as the argument.

The primary reason for IsKindOf() is to support the static Cast() members declared in the ON_OBJECT_DECLARE macro. If we determine that dynamic_cast is properly supported and implemented by all supported compilers, then IsKindOf() may dissappear. If an application needs to determine if a pointer points to a class derived from ON_SomeClassName, then call ON_SomeClassName::Cast(mystery pointer) and check for a non-null return.

@verbatim
ON_Object* p = ....;
if ( p->IsKindOf( ON_NurbsCurve::ClassId() ) )
{
it's a NURBS curve
}
@endverbatim

◆ IsValid()

virtual bool ON_Object::IsValid ( class ON_TextLog text_log = nullptr) const
virtual

Tests an object to see if its data members are correctly initialized.

Parameters
text_log[in] if the object is not valid and text_log is not nullptr, then a brief englis description of the reason the object is not valid is appened to the log. The information appended to text_log is suitable for
lowlevel debugging purposes by programmers and is not intended to be useful as a high level user interface tool.
Returns
table true object is valid false object is invalid, uninitialized, etc.

Reimplemented in ON_MeshComponentRef, ON_Mesh, ON_Brep, ON_MorphControl, ON_BrepRegion, ON_BrepFaceSide, ON_NurbsCage, ON_BrepFace, ON_BrepLoop, ON_TextDot, ON_InstanceRef, ON_DocumentUserStringList, ON_Hatch, ON_UserDataHolder, ON_BrepTrim, ON_EmbeddedBitmap, ON_DimStyle, ON_HatchPattern, ON_UnknownUserData, ON_BrepEdge, ON_WindowsBitmap, ON_NurbsSurface, ON_InstanceDefinition, ON_NurbsCurve, ON_CurveProxy, ON_TextureMapping, ON_Texture, ON_TextStyle, ON_SumSurface, ON_Material, ON_Viewport, ON_ArcCurve, ON_RevSurface, ON_HistoryRecord, ON_BrepVertex, ON_Linetype, ON_Dimension, ON_PolyCurve, ON_SurfaceProxy, ON_TextContent, ON_CurveOnSurface, ON_Annotation, ON_Extrusion, ON_Geometry, ON_PolylineCurve, ON_Leader, ON_LineCurve, ON_PointCloud, ON_Layer, ON_PlaneSurface, ON_3dmObjectAttributes, ON_PointGrid, ON_Point, ON_DetailView, ON_Light, ON_Text, ON_UserData, and ON_ModelComponent.

◆ MarkAggregateComponentStatusAsNotCurrent()

virtual void ON_Object::MarkAggregateComponentStatusAsNotCurrent ( ) const
virtual

Call whenever a component status setting is modifed by directly changing it on a component in a way that will result in any saved information about the parent object's aggretate component status becoming invalid.

The implementations of this function are nearly instant. and this function may be called as frequently as needed. The next time AggregateComponentStatus() is called the information used to return the value will be updated.

Reimplemented in ON_Brep.

◆ MemoryRelocate()

virtual void ON_Object::MemoryRelocate ( )
virtual

The MemoryRelocate() function is called when an object's location in memory is changed. For example, if an object resides in a chunk of memory that is grown by calling a realloc that has to allocate a new chunk and copy the contents of the old chunk to the new chunk, then the location of the object's memory changes. In practice this happens when classes derived from ON_Object are stored in dynamic arrays, like the default implementation of ON_ObjectArray<>'s that use realloc to grow the dynamic array.

Reimplemented in ON_Mesh, ON_MorphControl, ON_Brep, and ON_DetailView.

◆ ModelObjectId()

virtual ON_UUID ON_Object::ModelObjectId ( ) const
virtual

All objects in an opennurbs model have an id ( ON_Layer.m_layer_id, ON_Font.m_font_id, ON_Material.m_material_id, ON_3dmObjectAttributes.m_uuid ).

Returns
The id used to identify the object in the openurbs model.

Reimplemented in ON_Light, and ON_ModelComponent.

◆ MoveUserData() [1/2]

unsigned int ON_Object::MoveUserData ( ON_Object source_object,
ON_UUID  source_userdata_item_id,
ON_Object::UserDataConflictResolution  userdata_conflict_resolution,
bool  bDeleteAllSourceItems 
)

Expert user tool that moves user data items from source_object to "this.

Parameters
source_object[in] source of user data to copy
source_userdata_item_id[in] If source_userdata_item_id is not nil, then only the user data item with a matching ON_UserData.m_userdata_uuid value will be moved.
userdata_conflict_resolution[in] method to resolve userdata item conficts.
bDeleteAllSourceItems[in] If bDeleteAllSourceItems is true, then any userdata items that are not copied from source_object are deleted.
Returns
Number of user data items that were moved.

Generally speaking you don't need to use MoveUserData(). Simply rely on ON_Object::operator=() or the copy constructor to do the right thing.

◆ MoveUserData() [2/2]

void ON_Object::MoveUserData ( ON_Object source_object)

Calls MoveUserData(source_object,ON_Object::UserDataConflictResolution::source_object,true).

Parameters
source_object[in]

◆ ObjectType()

virtual ON::object_type ON_Object::ObjectType ( ) const
virtual

Useful for switch statements that need to differentiate between basic object types like points, curves, surfaces, and so on.

Returns

ON::object_type enum value.

The default implementation of this virtual function returns ON::unknown_object_type

Reimplemented in ON_MeshComponentRef, ON_Mesh, ON_Brep, ON_MorphControl, ON_NurbsCage, ON_TextDot, ON_InstanceRef, ON_Hatch, ON_ClippingPlaneSurface, ON_InstanceDefinition, ON_TextContent, ON_BrepEdge, ON_Curve, ON_Material, ON_Surface, ON_Extrusion, ON_PointCloud, ON_Layer, ON_Annotation, ON_Leader, ON_PointGrid, ON_Point, ON_Light, and ON_DetailView.

◆ operator=()

ON_Object& ON_Object::operator= ( const ON_Object )

◆ PurgeUserData()

void ON_Object::PurgeUserData ( )

PurgeUserData() removes all user data from object.

Use delete GetUserData(...) to destroy a single piece of user data.

◆ Read()

◆ SetComponentStates()

virtual unsigned int ON_Object::SetComponentStates ( ON_COMPONENT_INDEX  component_index,
ON_ComponentStatus  states_to_set 
) const
virtual

Set states on an individual component.

Parameters
component_index[in] The states will be set on this component.
states_to_set[in] If a state is set in the states_to_set parameter, the same state will be set on the component.
Returns
0: no state settings changed on the component. 1: some state setting changed on the component.

Reimplemented in ON_Brep.

◆ SetComponentStatus()

virtual unsigned int ON_Object::SetComponentStatus ( ON_COMPONENT_INDEX  component_index,
ON_ComponentStatus  status_to_copy 
) const
virtual

Copy status settings to an individual component.

Parameters
component_index[in] The states will be copied to this component.
status_to_copy[in]
Returns
0: no state settings changed on the component. 1: some state setting changed on the component.

Reimplemented in ON_Brep.

◆ SetUserString()

bool ON_Object::SetUserString ( const wchar_t *  key,
const wchar_t *  string_value 
)

Attach a user string to the object. This information will perisist through copy construction, operator=, and file IO.

Parameters
key[in] id used to retrieve this string.
string_value[in] If nullptr, the string with this id will be removed.
Returns
True if successful.

◆ SetUserStrings()

int ON_Object::SetUserStrings ( int  count,
const ON_UserString user_strings,
bool  bReplace 
)

Append entries to the user string list

Parameters
count[in] number of element in us[] array
user_strings[in] entries to append.
bReplace[in] If bReplace is true, then existing entries with the same key are updated with the new entry's value. If bReplace is false, then existing entries are not updated.
Returns
Number of entries added, deleted, or modified.

◆ SizeOf()

◆ TransformUserData()

void ON_Object::TransformUserData ( const class ON_Xform xform)

Objects derived from ON_Geometry must call TransformUserData() in their Transform() member function.

Parameters
xform[in] transformation to apply to user data

◆ UpdateReferencedComponents()

virtual bool ON_Object::UpdateReferencedComponents ( const class ON_ComponentManifest source_manifest,
const class ON_ComponentManifest destination_manifest,
const class ON_ManifestMap manifest_map 
)
virtual

Uses the destination_manifest to update references to other components. This is typically done when a component's references came from a "source" context and are being updated to the "destination" context. For example, inserting one model into another when index, id, and name conflicts need to be resolved at the time of insertion.

Parameters
source_manifest[in] A manifest of the source context with indices and ids corresponding to the current component references. If this manifest is not available, pass ON_ComponentManifest::Empty.
destination_manifest[in] A manifest of the destination context with indices and ids corresponding to the desired component references. If this manifest is not available, pass ON_ComponentManifest::Empty.
manifest_map[in] A map from the source (current) referenced component index/id values to the destination (desired) component index/id values.
Returns
True if successful. False indicates a referenced component was not found in the manifest and the reference was changed to a default value.
If this object is an ON_Layer, the line pattern and render material references
are updated.
If this object is an ON_DimStyle, the text style reference is updated.
If this object is an ON_3dmObjectAttributes, the layer,
material, line pattern, and group references are updated.

Reimplemented in ON_3dmObjectAttributes, ON_Layer, and ON_ModelGeometryComponent.

◆ UserStringCount()

int ON_Object::UserStringCount ( ) const
Returns
Number of user strings on the object.

◆ Write()

virtual bool ON_Object::Write ( ON_BinaryArchive binary_archive) const
virtual