myE=aE;
}
//
+ const TopoDS_Edge& GetEdge() const {
+ return myE;
+ }
+ const TopoDS_Face& GetFace() const {
+ return myF;
+ }
+ const Handle_Geom2d_Curve& GetCurve2d() const {
+ return myCurve;
+ }
+ Standard_Boolean IsToUpdate() const {
+ return myToUpdate;
+ }
+ //
void Perform() {
- BOPTools_AlgoTools2D::BuildPCurveForEdgeOnPlane (myE, myF);
+ BOPTools_AlgoTools2D::BuildPCurveForEdgeOnPlane (myE, myF, myCurve, myToUpdate);
};
//
protected:
TopoDS_Edge myE;
TopoDS_Face myF;
+ Handle_Geom2d_Curve myCurve;
+ Standard_Boolean myToUpdate;
};
//=======================================================================
typedef BOPCol_NCVector
return;
}
//
+ // Build pcurves of edges on planes; first collect pairs edge-face.
BOPAlgo_VectorOfBPC aVBPC;
//
for (i = 1; i <= aNbF; ++i) {
//======================================================
BOPAlgo_BPCCnt::Perform(myRunParallel, aVBPC);
//======================================================
+
+ // pcurves are built, and now update edges
+ BRep_Builder aBB;
+ TopoDS_Edge E;
+ for (i = 0; i < aVBPC.Extent(); i++) {
+ const BOPAlgo_BPC& aBPC=aVBPC(i);
+ if (aBPC.IsToUpdate()) {
+ Standard_Real aTolE = BRep_Tool::Tolerance(aBPC.GetEdge());
+ aBB.UpdateEdge(aBPC.GetEdge(), aBPC.GetCurve2d(), aBPC.GetFace(), aTolE);
+ }
+ }
}
//=======================================================================
//function : IsBasedOnPlane
theE : Edge from TopoDS;
theF : Face from TopoDS);
+ BuildPCurveForEdgeOnPlane(myclass;
+ theE : Edge from TopoDS;
+ theF : Face from TopoDS;
+ theC2D: out Curve from Geom2d;
+ bToUpdate: out Boolean);
+
BuildPCurveForEdgesOnPlane(myclass;
theLE : ListOfShape from BOPCol;
theF : Face from TopoDS);
aBB.UpdateEdge(aE, aC2D, aF, aTolE);
}
}
+
+//=======================================================================
+//function : BuildPCurveForEdgeOnPlane
+//purpose :
+//=======================================================================
+void BOPTools_AlgoTools2D::BuildPCurveForEdgeOnPlane
+ (const TopoDS_Edge& aE,
+ const TopoDS_Face& aF,
+ Handle(Geom2d_Curve)& aC2D,
+ Standard_Boolean& bToUpdate)
+{
+ Standard_Real aT1, aT2;
+ aC2D=BRep_Tool_CurveOnSurface(aE, aF, aT1, aT2, bToUpdate);
+}
+
//=======================================================================
// function: BuildPCurveForEdgesOnPlane
// purpose: