// 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 _TopOpeBRep_ShapeIntersector_HeaderFile #define _TopOpeBRep_ShapeIntersector_HeaderFile #ifndef _Standard_HeaderFile #include #endif #ifndef _Standard_Macro_HeaderFile #include #endif #ifndef _TopoDS_Shape_HeaderFile #include #endif #ifndef _Handle_TopOpeBRepTool_HBoxTool_HeaderFile #include #endif #ifndef _TopOpeBRepTool_ShapeExplorer_HeaderFile #include #endif #ifndef _TopOpeBRep_ShapeScanner_HeaderFile #include #endif #ifndef _TopOpeBRep_FacesIntersector_HeaderFile #include #endif #ifndef _Standard_Boolean_HeaderFile #include #endif #ifndef _TopOpeBRep_EdgesIntersector_HeaderFile #include #endif #ifndef _TopOpeBRep_FaceEdgeIntersector_HeaderFile #include #endif #ifndef _TopoDS_Face_HeaderFile #include #endif #ifndef _Standard_Real_HeaderFile #include #endif #ifndef _Standard_Integer_HeaderFile #include #endif class TopOpeBRepTool_HBoxTool; class TopoDS_Shape; class TopoDS_Face; class TopOpeBRep_FacesIntersector; class TopOpeBRep_EdgesIntersector; class TopOpeBRep_FaceEdgeIntersector; class TopTools_ListOfShape; //! Intersect two shapes.
//!
//! A GeomShape is a shape with a geometric domain, i.e.
//! a Face or an Edge.
//!
//! The purpose of the ShapeIntersector is to find
//! couples of intersecting GeomShape in two Shapes
//! (which can be any kind of topologies : Compound,
//! Solid, Shell, etc... )
//!
//! It is in charge of exploration of the shapes and
//! rejection. For this it is provided with two tools :
//!
//! - ShapeExplorer from TopOpeBRepTool.
//! - ShapeScanner from TopOpeBRep which implements bounding boxes.
class TopOpeBRep_ShapeIntersector { 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); } Standard_EXPORT TopOpeBRep_ShapeIntersector(); //! Initialize the intersection of shapes S1,S2.
Standard_EXPORT void InitIntersection(const TopoDS_Shape& S1,const TopoDS_Shape& S2) ; //! Initialize the intersection of shapes S1,S2.
Standard_EXPORT void InitIntersection(const TopoDS_Shape& S1,const TopoDS_Shape& S2,const TopoDS_Face& F1,const TopoDS_Face& F2) ; //! return the shape ( = 1 or 2) given to
//! InitIntersection().
//! Index = 1 will return S1, Index = 2 will return S2.
Standard_EXPORT const TopoDS_Shape& Shape(const Standard_Integer Index) const; //! returns True if there are more intersection
//! between two the shapes.
Standard_EXPORT Standard_Boolean MoreIntersection() const; //! search for the next intersection between the two shapes.
Standard_EXPORT void NextIntersection() ; //! return the current intersection of two Faces.
Standard_EXPORT TopOpeBRep_FacesIntersector& ChangeFacesIntersector() ; //! return the current intersection of two Edges.
Standard_EXPORT TopOpeBRep_EdgesIntersector& ChangeEdgesIntersector() ; //! return the current intersection of a Face and an Edge.
Standard_EXPORT TopOpeBRep_FaceEdgeIntersector& ChangeFaceEdgeIntersector() ; //! return geometric shape ( = 1 or 2 ) of
//! current intersection.
Standard_EXPORT const TopoDS_Shape& CurrentGeomShape(const Standard_Integer Index) const; //! return MAX of intersection tolerances with
//! which FacesIntersector from TopOpeBRep was working.
Standard_EXPORT void GetTolerances(Standard_Real& tol1,Standard_Real& tol2) const; Standard_EXPORT void DumpCurrent(const Standard_Integer K) const; Standard_EXPORT Standard_Integer Index(const Standard_Integer K) const; Standard_EXPORT void RejectedFaces(const TopoDS_Shape& anObj,const TopoDS_Shape& aReference,TopTools_ListOfShape& aListOfShape) ; protected: private: Standard_EXPORT void Reset() ; Standard_EXPORT void Init(const TopoDS_Shape& S1,const TopoDS_Shape& S2) ; Standard_EXPORT void SetIntersectionDone() ; Standard_EXPORT void InitFFIntersection() ; Standard_EXPORT void FindFFIntersection() ; Standard_EXPORT Standard_Boolean MoreFFCouple() const; Standard_EXPORT void NextFFCouple() ; Standard_EXPORT void InitEEFFIntersection() ; Standard_EXPORT void FindEEFFIntersection() ; Standard_EXPORT Standard_Boolean MoreEEFFCouple() const; Standard_EXPORT void NextEEFFCouple() ; Standard_EXPORT void InitFEIntersection() ; Standard_EXPORT void FindFEIntersection() ; Standard_EXPORT Standard_Boolean MoreFECouple() const; Standard_EXPORT void NextFECouple() ; Standard_EXPORT void InitEFIntersection() ; Standard_EXPORT void FindEFIntersection() ; Standard_EXPORT Standard_Boolean MoreEFCouple() const; Standard_EXPORT void NextEFCouple() ; Standard_EXPORT void InitEEIntersection() ; Standard_EXPORT void FindEEIntersection() ; Standard_EXPORT Standard_Boolean MoreEECouple() const; Standard_EXPORT void NextEECouple() ; TopoDS_Shape myShape1; TopoDS_Shape myShape2; Handle_TopOpeBRepTool_HBoxTool myHBoxTool; TopOpeBRepTool_ShapeExplorer myFaceExplorer; TopOpeBRep_ShapeScanner myFaceScanner; TopOpeBRep_FacesIntersector myFFIntersector; Standard_Boolean myFFSameDomain; TopOpeBRepTool_ShapeExplorer myEdgeExplorer; TopOpeBRep_ShapeScanner myEdgeScanner; TopOpeBRep_EdgesIntersector myEEIntersector; TopOpeBRep_FaceEdgeIntersector myFEIntersector; TopoDS_Face myEEFace1; TopoDS_Face myEEFace2; Standard_Boolean myIntersectionDone; Standard_Real myTol1; Standard_Real myTol2; Standard_Boolean myFFDone; Standard_Boolean myEEFFDone; Standard_Boolean myEFDone; Standard_Boolean myFEDone; Standard_Boolean myEEDone; Standard_Boolean myFFInit; Standard_Boolean myEEFFInit; Standard_Boolean myEFInit; Standard_Boolean myFEInit; Standard_Boolean myEEInit; }; // other Inline functions and methods (like "C++: function call" methods) #endif