Rhino C++ API
8.14
|
#include <opennurbs_objref.h>
Public Member Functions | |
ON_ObjRef () | |
ON_ObjRef (const ON_ObjRef &src) | |
~ON_ObjRef () | |
void | DecrementProxyReferenceCount () |
void | Destroy () |
ON_ObjRef & | operator= (const ON_ObjRef &src) |
const ON_Object * | ProxyObject (int proxy_object_index) const |
int | ProxyReferenceCount () const |
bool | Read (ON_BinaryArchive &) |
void | RemapObjectId (const ON_SimpleArray< ON_UuidPair > &uuid_remap) |
bool | SetParentIRef (const ON_InstanceRef &iref, ON_UUID iref_id, int idef_geometry_index) |
void | SetProxy (ON_Object *proxy1, ON_Object *proxy2, bool bCountReferences) |
bool | Write (ON_BinaryArchive &) const |
Public Attributes | |
ON_SimpleArray< ON_ObjRef_IRefID > | m__iref |
ON_COMPONENT_INDEX | m_component_index |
ON_ObjRefEvaluationParameter | m_evp |
const ON_Geometry * | m_geometry |
int | m_geometry_type |
ON::osnap_mode | m_osnap_mode |
const ON_Geometry * | m_parent_geometry |
ON_3dPoint | m_point |
unsigned int | m_runtime_sn |
ON_UUID | m_uuid |
ON_ObjRef::ON_ObjRef | ( | ) |
ON_ObjRef::ON_ObjRef | ( | const ON_ObjRef & | src | ) |
ON_ObjRef::~ON_ObjRef | ( | ) |
void ON_ObjRef::DecrementProxyReferenceCount | ( | ) |
Description: Expert user tool to decrement reference counts. Most users will never need to call this tool. It is called by ~ON_ObjRef and used in rare cases when a ON_ObjRef needs to reference an object only by uuid and component index.
void ON_ObjRef::Destroy | ( | ) |
const ON_Object* ON_ObjRef::ProxyObject | ( | int | proxy_object_index | ) | const |
Parameters: proxy_object_index - [in] 1 or 2. Returns: A pointer to the requested proxy object.
int ON_ObjRef::ProxyReferenceCount | ( | ) | const |
Returns: 0: This ON_ObjRef is not counting references. >0: Number of references.
bool ON_ObjRef::Read | ( | ON_BinaryArchive & | ) |
void ON_ObjRef::RemapObjectId | ( | const ON_SimpleArray< ON_UuidPair > & | uuid_remap | ) |
Description: This tool is used in rare situations when the object ids stored in the uuid list need to be remapped. Parameters: uuid_remap - [in] Is it critical that uuid_remap[] be sorted with respect to ON_UuidPair::CompareFirstUuid.
bool ON_ObjRef::SetParentIRef | ( | const ON_InstanceRef & | iref, |
ON_UUID | iref_id, | ||
int | idef_geometry_index | ||
) |
Description: Expert user tool to initialize the ON_ObjRef m__proxy1, m__proxy2, and m__proxy_ref_count fields.
bool ON_ObjRef::Write | ( | ON_BinaryArchive & | ) | const |
ON_SimpleArray<ON_ObjRef_IRefID> ON_ObjRef::m__iref |
If m__iref[] is not empty, then m_uuid identifies and instance reference (ON_InstanceRef/CRhinoInstanceObject) and m__iref[] records the chain of instance references from the base piece of geometry to the instance reference. The top level instance reference is last in the list.
ON_COMPONENT_INDEX ON_ObjRef::m_component_index |
ON_ObjRefEvaluationParameter ON_ObjRef::m_evp |
If m_point != ON_3dPoint::UnsetPoint and m_evp.m_t_type != 0, then m_evp records the records the m_geometry evaluation parameters for the m_point.
const ON_Geometry* ON_ObjRef::m_geometry |
The m_geometry and m_parent_geometry pointers are runtime values that point to the object being referenced. The destructor ~ON_ObjRef does not delete the objects these pointers reference.
m_geometry_type records the type of geometry m_geometry points to.
When the referenced object is a subobject, like a part of a brep or mesh, m_geometry points to the subobject and m_parent_geometry points to the parent object, like the brep or mesh. In this case m_component_index records the location of the subobject.
Parts of instance reference objects: When the geometry belongs to an instance reference m_uuid is the id of the CRhinoInstanceObject, m_parent_geometry points to the instance definition geometry or a transformed proxy, and m_geometry points to the piece of m_geometry. The m__iref[] array records the connection between the instance reference and the geometry the ON_ObjRef refers to.
For example if the ON_ObjRef is to an edge of a brep in and instance reference, m_uuid would be the Rhino id of the CRhinoInstanceObject, m_parent_geometry would point to a, possibly proxy, ON_Brep object, m_geometry would point to the ON_BrepEdge in the ON_Brep, m_component_index would record the edge's index in the ON_Brep.m_E[] array and m_geometry_type would be ON::curve_object or ON::brep_edge. m__iref->Last() would contain the information about the top level instance reference. If the brep was at the bottom of a chain of instance references, m__iref[0] would be the reference that immediately used the brep.
int ON_ObjRef::m_geometry_type |
ON::osnap_mode ON_ObjRef::m_osnap_mode |
If the point was the result of some type of object snap, then the object snap is recorded here.
const ON_Geometry* ON_ObjRef::m_parent_geometry |
ON_3dPoint ON_ObjRef::m_point |
If m_point != ON_3dPoint::UnsetPoint, then the ObjRef resolves to a point location. The point location is saved here so the information can persist if the object itself vanishes.
unsigned int ON_ObjRef::m_runtime_sn |
If m_runtime_sn > 0, then it is the value of a Rhino object's CRhinoObject::m_runtime_object_serial_number field. The serial number is used instead of the pointer to prevent crashes in cases when the CRhinoObject is deleted but an ON_ObjRef continues to reference the Rhino object. The value of m_runtime_sn is not saved in archives because it generally changes if you save and reload an archive.
ON_UUID ON_ObjRef::m_uuid |
In Rhino, this uuid is the persistent id of the CRhinoObject that owns the referenced geometry. The value of the CRhinoObject id is stored on ON_3dmObjectAttributes.m_uuid.