RH_C_FUNCTION void ON_Hatch_Explode(const ON_Hatch* pConstHatch, const CRhinoObject* pConstParentRhinoObject, ON_SimpleArray<ON_Geometry*>* pOutputGeometry) { if( pConstHatch && pOutputGeometry ) { ON_SimpleArray<CRhinoObject*> subobjects; CRhinoHatch hatchobject; if( NULL==pConstParentRhinoObject ) { hatchobject.SetHatch(*pConstHatch); pConstParentRhinoObject = &hatchobject; } pConstParentRhinoObject->GetSubObjects(subobjects); for( int i=0; i<subobjects.Count(); i++ ) { CRhinoObject* pRhinoObject = subobjects[i]; if( pRhinoObject ) { const ON_Geometry* pGeometry = pRhinoObject->Geometry(); if( pGeometry ) pOutputGeometry->Append( pGeometry->Duplicate() ); delete pRhinoObject; } } } }
RH_C_FUNCTION void ON_Hatch_Explode(const ON_Hatch* pConstHatch, const CRhinoObject* pConstParentRhinoObject, ON_SimpleArray<ON_Geometry*>* pOutputGeometry) { if( pConstHatch && pOutputGeometry ) { ON_SimpleArray<CRhinoObject*> subobjects; CRhinoHatch hatchobject; if( NULL==pConstParentRhinoObject ) { hatchobject.SetHatch(*pConstHatch); // 5 September 2012 S. Baer (Super-Mega-Hack) // The hatch object needs to create a cached hatch display in order // for GetSubObjects to properly work. We need to eventually fix // the problem in the core, buit for now I'm just calling Pick since // it will create a HatchDisplay when one doesn't exist CRhinoPickContext pc; CRhinoObjRefArray ar; hatchobject.Pick(pc, ar); pConstParentRhinoObject = &hatchobject; } pConstParentRhinoObject->GetSubObjects(subobjects); for( int i=0; i<subobjects.Count(); i++ ) { CRhinoObject* pRhinoObject = subobjects[i]; if( pRhinoObject ) { const ON_Geometry* pGeometry = pRhinoObject->Geometry(); if( pGeometry ) pOutputGeometry->Append( pGeometry->Duplicate() ); delete pRhinoObject; } } } }