71 pEdge = pEdge->
next();
74 while( pEdge != pEnd );
88 template<
class TSpatFData = SpatialFaceData>
107 while( !iter.
done() ) {
108 pSFD->attach( iter.
get() );
116 void destroy(
bool bRestoreFaceTags =
true ) {
118 if( bRestoreFaceTags ) {
149 inline static T mymax( T
v1, T
v2 ) {
186 template<
class TSpatialFaceData = SpatialFaceData>
191 TSpatialFaceData* pFaceData =
static_cast<TSpatialFaceData*
>( pEntity );
210 Profile2D* pResultExcludingCoincidingBoundary = 0,
211 Profile2D* pResultExcludingOppositeBoundary = 0,
215 bool bUseReverseEdgeAtMerge =
false,
224 pResultExcludingCoincidingBoundary,
225 pResultExcludingOppositeBoundary,
226 pResultExcludingBoundary,
227 pCoincidingFaces, pOppositeFaces, bUseReverseEdgeAtMerge, sourceEdges );
229 if(pResultExcludingOppositeBoundary !=
NULL)
231 pResultExcludingOppositeBoundary->deleteCoincident(1.e-10);
OdUInt32 faceCount() const
void ReserveBuffers(size_t nFaces)
FacetModeler::Vertex * vertex() const
void setTag(FacetModeler::AecTagType nTag)
FacetModeler::AecTagType tag() const
Edge * edge(OdUInt32 nLoop=0) const
void destroy(bool bRestoreFaceTags=true)
OdSiSpatialIndex & index()
OdSiSpatialIndexPtr m_pFacesIndex
OdArray< TSpatFData > & faceDataArray()
const OdSiSpatialIndex & index() const
OdArray< TSpatFData > m_spatialDataArray
OdSiSpatialIndex & build(const Body *pBody, double eps)
void collect_segments(const Face *pFace)
void reserveBuffers(size_t nFaces)
void setTolerance(const OdGeTol &tol)
void build_results(Profile2D *pResInclBndry, Profile2D *pResExclCoBndry, Profile2D *pResExclOpBndry, Profile2D *pResExclBndry, FaceConstPtrArray *pCoincidingFaces, FaceConstPtrArray *pOppositeFaces, bool bUseReverseEdgeAtMerge, OdArray< const Edge * > *sourceEdges=0)
void set_cut_plane(const OdGePlane &cutPlane)
void slice(const OdGePlane &cutPlane, const FaceSpatialIndex< TSpatialFaceData > &faceSpatial, Profile2D *pResultIncludingBoundary, Profile2D *pResultExcludingCoincidingBoundary=0, Profile2D *pResultExcludingOppositeBoundary=0, Profile2D *pResultExcludingBoundary=0, FaceConstPtrArray *pCoincidingFaces=0, FaceConstPtrArray *pOppositeFaces=0, bool bUseReverseEdgeAtMerge=false, OdArray< const Edge * > *sourceEdges=0)
void initSlicerAndFaceIndex(const Body *pBody, FaceSpatialIndex< TSpatialFaceData > &faceSpatialIndex, double eps=OdGeTol().equalVector())
const OdGePoint3d & point() const
double equalVector() const
double equalPoint() const
static OdSiSpatialIndexPtr createObject(OdUInt32 flags, unsigned int initialNumEntity, unsigned int maxDepth=30, unsigned int maxCount=20, double eps=1e-10)
virtual void insert(OdSiEntity *entity)=0
virtual void query(const OdSiShape &shape, OdSiVisitor &visitor) const =0
virtual const OdGeTol & tolerance() const =0
GLfloat GLfloat GLfloat v2
OdArray< Face *, OdMemoryAllocator< Face * > > FacePtrArray
OdArray< const Face *, OdMemoryAllocator< const Face * > > FaceConstPtrArray
OdArray< Vertex *, OdMemoryAllocator< Vertex * > > VertexIndex
bool contains(const OdGeExtents3d &, bool, const OdGeTol &) const
bool intersects(const OdGeExtents3d &extents, bool planar, const OdGeTol &tol) const
bool extents(OdGeExtents3d &extents) const
const Face * face() const
bool contains(const OdGeExtents3d &, bool, const OdGeTol &) const
static void extents(const Face *pFace, OdGeExtents3d &extents)