Esempio n. 1
0
        internal override IntPtr _InternalGetConstPointer()
        {
            if (null != m_shallow_parent)
            {
                return(m_shallow_parent.ConstPointer());
            }

#if RHINO_SDK
            ObjRef obj_ref = m__parent as ObjRef;
            if (null != obj_ref)
            {
                return(obj_ref.GetGeometryConstPointer(this));
            }

            RhinoObject parent_object = ParentRhinoObject();
            if (parent_object == null)
            {
                FileIO.File3dmObject fileobject = m__parent as FileIO.File3dmObject;
                if (null != fileobject)
                {
                    return(fileobject.GetGeometryConstPointer());
                }
            }

            uint   serial_number          = 0;
            IntPtr ptr_parent_rhinoobject = IntPtr.Zero;
            if (null != parent_object)
            {
                serial_number          = parent_object.m_rhinoobject_serial_number;
                ptr_parent_rhinoobject = parent_object.m_pRhinoObject;
                if (IntPtr.Zero == ptr_parent_rhinoobject &&
                    parent_object.m__parent != null &&
                    parent_object.m__parent is ObjRef)
                {
                    ObjRef objref         = parent_object.m__parent as ObjRef;
                    IntPtr constPtrObjRef = objref.ConstPointer();
                    ptr_parent_rhinoobject = UnsafeNativeMethods.CRhinoObjRef_Object(constPtrObjRef);
                }
            }
            ComponentIndex ci = new ComponentIndex();
            // There are a few cases (like in ReplaceObject callback) where the parent
            // rhino object temporarily holds onto the CRhinoObject* because the object
            // is not officially in the document yet.
            if (ptr_parent_rhinoobject != IntPtr.Zero)
            {
                return(UnsafeNativeMethods.CRhinoObject_Geometry(ptr_parent_rhinoobject, ci));
            }
            return(UnsafeNativeMethods.CRhinoObject_Geometry2(serial_number, ci));
#else
            var fileobject = m__parent as Rhino.FileIO.File3dmObject;
            if (null != fileobject)
            {
                return(fileobject.GetGeometryConstPointer());
            }
            return(IntPtr.Zero);
#endif
        }
Esempio n. 2
0
 internal ObjectAttributes(FileIO.File3dmObject parent)
 {
     ConstructConstObject(parent, -1);
 }