- //
- // Section Edges processing
- /*
- Standard_Integer aNbCurves, k, aNbV;
- Standard_Real aTolEdge, aTolR2D, aTolFact, aTolV, aTolVmax;
- BRep_Builder aBB;
- //
- BOPTools_SequenceOfCurves& aSC=aFF.Curves();
- aNbCurves=aSC.Length();
- if (!aNbCurves) {
- continue;
- }
- //
- const BOPTools_Curve& aBC=aSC(1);
- const BOPTools_ListOfPaveBlock& aLPB=aBC.NewPaveBlocks();
- anIt.Initialize(aLPB);
- for (; anIt.More(); anIt.Next()) {
- const BOPTools_PaveBlock& aPB=anIt.Value();
- nE=aPB.Edge();
- const TopoDS_Edge& aE=TopoDS::Edge(myDS->Shape(nE));
- //
- aTolEdge=BRep_Tool::Tolerance(aE);
- aTolR2D=aFF.TolR2D();
- aTolFact=Max(aTolEdge, aTolR2D);
- //
- // Check vertices tolerances and correct them if necessary
- // to prevent situation when TolE > TolV
- //
- TopTools_IndexedMapOfShape aVMap;
- TopExp::MapShapes(aE, TopAbs_VERTEX, aVMap);
-
- aTolVmax=-1.;
- aNbV=aVMap.Extent();
- for (k=1; k<=aNbV; ++k) {
- const TopoDS_Vertex& aV=TopoDS::Vertex(aVMap(k));
- aTolV=BRep_Tool::Tolerance(aV);
- if (aTolV>aTolVmax) {
- aTolVmax=aTolV;
- }
- }
- //
- if (aTolFact>aTolVmax) {
- aTolFact=aTolVmax;
- }
- //
- Standard_Real aTFirst, aTLast, aOutFirst, aOutLast, aOutTol;
- Handle(Geom2d_Curve) aC2D1, aC2D1A, aC2D2, aC2D2A;
- Handle(Geom_TrimmedCurve)aC3DETrim;
- //
- const Handle(Geom_Curve)& aC3DE=BRep_Tool::Curve(aE, aTFirst, aTLast);
- aC3DETrim=new Geom_TrimmedCurve(aC3DE, aTFirst, aTLast);
- //
- // first P-Curve
- BOPTools_Tools2D::BuildPCurveForEdgeOnFace(aE, aF1FWD);
- BOPTools_Tools2D::CurveOnSurface(aE, aF1FWD, aC2D1, aOutFirst, aOutLast, aOutTol, Standard_True);
- //
- if (aC3DE->IsPeriodic()) {
- BOPTools_Tools2D::AdjustPCurveOnFace(aF1FWD, aTFirst, aTLast, aC2D1, aC2D1A);
- }
- else {
- BOPTools_Tools2D::AdjustPCurveOnFace(aF1FWD, aC3DETrim, aC2D1, aC2D1A);
- }
- //
- aBB.UpdateEdge(aE, aC2D1A, aF1FWD, aTolFact);
- //
- // second P-Curve
- BOPTools_Tools2D::BuildPCurveForEdgeOnFace(aE, aF2FWD);
- BOPTools_Tools2D::CurveOnSurface(aE, aF2FWD, aC2D2, aOutFirst, aOutLast, aOutTol, Standard_True);
- //
- if (aC3DE->IsPeriodic()) {
- BOPTools_Tools2D::AdjustPCurveOnFace(aF2FWD, aTFirst, aTLast, aC2D2, aC2D2A);
- }
- else {
- BOPTools_Tools2D::AdjustPCurveOnFace(aF2FWD, aC3DETrim, aC2D2, aC2D2A);
- }
- //
- aBB.UpdateEdge(aE, aC2D2A, aF2FWD, aTolFact);
- }
- */