// This file is generated by WOK (CPPExt). // Please do not edit this file; modify original file instead. // The copyright and license terms as defined for the original file apply to // this header file considered to be the "object code" form of the original source. #ifndef _TopOpeBRepTool_FuseEdges_HeaderFile #define _TopOpeBRepTool_FuseEdges_HeaderFile #ifndef _Standard_HeaderFile #include #endif #ifndef _Standard_Macro_HeaderFile #include #endif #ifndef _TopoDS_Shape_HeaderFile #include #endif #ifndef _Standard_Boolean_HeaderFile #include #endif #ifndef _TopTools_IndexedDataMapOfShapeListOfShape_HeaderFile #include #endif #ifndef _TopTools_DataMapOfIntegerListOfShape_HeaderFile #include #endif #ifndef _TopTools_DataMapOfIntegerShape_HeaderFile #include #endif #ifndef _TopTools_DataMapOfShapeShape_HeaderFile #include #endif #ifndef _Standard_Integer_HeaderFile #include #endif #ifndef _TopTools_IndexedMapOfShape_HeaderFile #include #endif #ifndef _TopAbs_ShapeEnum_HeaderFile #include #endif class Standard_ConstructionError; class Standard_NullObject; class TopoDS_Shape; class TopTools_IndexedMapOfShape; class TopTools_DataMapOfIntegerListOfShape; class TopTools_DataMapOfIntegerShape; class TopTools_DataMapOfShapeShape; class TopTools_IndexedDataMapOfShapeListOfShape; class TopTools_MapOfShape; class TopTools_ListOfShape; class TopoDS_Vertex; class TopoDS_Edge; //! This class can detect vertices in a face that can
//! be considered useless and then perform the fuse of
//! the edges and remove the useless vertices. By
//! useles vertices, we mean :
//! * vertices that have exactly two connex edges
//! * the edges connex to the vertex must have
//! exactly the same 2 connex faces .
//! * The edges connex to the vertex must have the
//! same geometric support.
class TopOpeBRepTool_FuseEdges { public: void* operator new(size_t,void* anAddress) { return anAddress; } void* operator new(size_t size) { return Standard::Allocate(size); } void operator delete(void *anAddress) { if (anAddress) Standard::Free((Standard_Address&)anAddress); } //! Initialise members and build construction of map
//! of ancestors.
Standard_EXPORT TopOpeBRepTool_FuseEdges(const TopoDS_Shape& theShape,const Standard_Boolean PerformNow = Standard_False); //! set edges to avoid being fused
Standard_EXPORT void AvoidEdges(const TopTools_IndexedMapOfShape& theMapEdg) ; //! returns all the list of edges to be fused
//! each list of the map represent a set of connex edges
//! that can be fused.
Standard_EXPORT void Edges(TopTools_DataMapOfIntegerListOfShape& theMapLstEdg) ; //! returns all the fused edges. each integer entry in
//! the map corresponds to the integer in the
//! DataMapOfIntegerListOfShape we get in method
//! Edges. That is to say, to the list of edges in
//! theMapLstEdg(i) corresponds the resulting edge theMapEdge(i)
//!
Standard_EXPORT void ResultEdges(TopTools_DataMapOfIntegerShape& theMapEdg) ; //! returns the map of modified faces.
Standard_EXPORT void Faces(TopTools_DataMapOfShapeShape& theMapFac) ; //! returns myShape modified with the list of internal
//! edges removed from it.
Standard_EXPORT TopoDS_Shape& Shape() ; //! returns the number of vertices candidate to be removed
Standard_EXPORT const Standard_Integer NbVertices() ; //! Using map of list of connex edges, fuse each list to
//! one edge and then update myShape
Standard_EXPORT void Perform() ; protected: private: //! build a map of shapes and ancestors, like
//! TopExp.MapShapesAndAncestors, but we remove duplicate
//! shapes in list of shapes.
Standard_EXPORT void BuildAncestors(const TopoDS_Shape& S,const TopAbs_ShapeEnum TS,const TopAbs_ShapeEnum TA,TopTools_IndexedDataMapOfShapeListOfShape& M) const; //! Build the all the lists of edges that are to be fused
Standard_EXPORT void BuildListEdges() ; //! Build result fused edges according to the list
//! builtin BuildLisEdges
Standard_EXPORT void BuildListResultEdges() ; Standard_EXPORT void BuildListConnexEdge(const TopoDS_Shape& theEdge,TopTools_MapOfShape& theMapUniq,TopTools_ListOfShape& theLstEdg) ; Standard_EXPORT Standard_Boolean NextConnexEdge(const TopoDS_Vertex& theVertex,const TopoDS_Shape& theEdge,TopoDS_Shape& theEdgeConnex) const; Standard_EXPORT Standard_Boolean SameSupport(const TopoDS_Edge& E1,const TopoDS_Edge& E2) const; Standard_EXPORT Standard_Boolean UpdatePCurve(const TopoDS_Edge& theOldEdge,TopoDS_Edge& theNewEdge,const TopTools_ListOfShape& theLstEdg) const; TopoDS_Shape myShape; Standard_Boolean myShapeDone; Standard_Boolean myEdgesDone; Standard_Boolean myResultEdgesDone; TopTools_IndexedDataMapOfShapeListOfShape myMapVerLstEdg; TopTools_IndexedDataMapOfShapeListOfShape myMapEdgLstFac; TopTools_DataMapOfIntegerListOfShape myMapLstEdg; TopTools_DataMapOfIntegerShape myMapEdg; TopTools_DataMapOfShapeShape myMapFaces; Standard_Integer myNbConnexEdge; TopTools_IndexedMapOfShape myAvoidEdg; }; // other Inline functions and methods (like "C++: function call" methods) #endif