+//function : BOPAlgo_FacePnt
+//purpose :
+//=======================================================================
+class BOPAlgo_FacePnt {
+ public:
+ BOPAlgo_FacePnt() {
+ }
+ //
+ virtual ~BOPAlgo_FacePnt() {
+ }
+ //
+ void SetFace(const TopoDS_Face& aFace) {
+ myFace=aFace;
+ }
+ //
+ const TopoDS_Face& Face()const {
+ return myFace;
+ }
+ //
+ void SetPnt(const gp_Pnt& aPnt) {
+ myPnt=aPnt;
+ }
+ //
+ const gp_Pnt& Pnt()const {
+ return myPnt;
+ }
+ //
+ protected:
+ gp_Pnt myPnt;
+ TopoDS_Face myFace;
+};
+//
+typedef BOPCol_NCVector
+ <BOPAlgo_FacePnt> BOPAlgo_VectorOfFacePnt;
+//
+//=======================================================================
+//function : BOPAlgo_FaceSolid
+//purpose :
+//=======================================================================
+class BOPAlgo_FaceSolid : public BOPAlgo_Algo {
+ public:
+ DEFINE_STANDARD_ALLOC
+
+ BOPAlgo_FaceSolid() :
+ myIsInternalFace(Standard_False) {
+ }
+ //
+ virtual ~BOPAlgo_FaceSolid() {
+ }
+ //
+ void SetFace(const TopoDS_Face& aFace) {
+ myFace=aFace;
+ }
+ //
+ const TopoDS_Face& Face()const {
+ return myFace;
+ }
+ //
+ void SetSolid(const TopoDS_Solid& aSolid) {
+ mySolid=aSolid;
+ }
+ //
+ const TopoDS_Solid& Solid()const {
+ return mySolid;
+ }
+ //
+ void SetPnt(const gp_Pnt& aPnt) {
+ myPnt=aPnt;
+ }
+ //
+ const gp_Pnt& Pnt()const {
+ return myPnt;
+ }
+ void SetContext(const Handle(IntTools_Context)& aContext) {
+ myContext=aContext;
+ }
+ //
+ const Handle(IntTools_Context)& Context()const {
+ return myContext;
+ }
+ //
+ Standard_Boolean IsInternalFace() const {
+ return myIsInternalFace;
+ }
+ //
+ virtual void Perform () {
+ TopAbs_State aState;
+ //
+ BOPAlgo_Algo::UserBreak();
+ //
+ aState=BOPTools_AlgoTools::ComputeState(myPnt, mySolid,
+ 1.e-14, myContext);
+ //
+ myIsInternalFace=(aState==TopAbs_IN);
+ }
+ //
+ protected:
+ Standard_Boolean myIsInternalFace;
+ gp_Pnt myPnt;
+ TopoDS_Face myFace;
+ TopoDS_Solid mySolid;
+ Handle(IntTools_Context) myContext;
+};
+//=======================================================================
+typedef BOPCol_NCVector
+ <BOPAlgo_FaceSolid> BOPAlgo_VectorOfFaceSolid;
+//
+typedef BOPCol_TBBContextFunctor
+ <BOPAlgo_FaceSolid,
+ BOPAlgo_VectorOfFaceSolid,
+ Handle(IntTools_Context),
+ IntTools_Context> BOPAlgo_FaceSolidFunctor;
+//
+typedef BOPCol_TBBContextCnt
+ <BOPAlgo_FaceSolidFunctor,
+ BOPAlgo_VectorOfFaceSolid,
+ Handle(IntTools_Context)> BOPAlgo_FaceSolidCnt;
+//
+//=======================================================================
+typedef NCollection_DataMap
+ <TopoDS_Shape,
+ gp_Pnt,
+ TopTools_ShapeMapHasher> BOPAlgo_DataMapOfShapePnt;
+
+typedef BOPAlgo_DataMapOfShapePnt::Iterator
+ BOPAlgo_DataMapIteratorOfDataMapOfShapePnt;
+//
+//=======================================================================