-//=======================================================================
-// function: PutPaveOnCurve
-// purpose:
-//=======================================================================
- void NMTTools_PaveFiller::PutPaveOnCurve(const BOPTools_PaveSet& aPaveSet,
- const Standard_Real aTolR3D,
- BOPTools_Curve& aBC)
-{
- Standard_Integer nV;
- Standard_Boolean bIsVertexOnLine;
- Standard_Real aT;
- BOPTools_ListIteratorOfListOfPave anIt;
- Bnd_Box aBBC;
- GeomAdaptor_Curve aGAC;
- //
- const IntTools_Curve& aC=aBC.Curve();
- Handle (Geom_Curve) aC3D= aC.Curve();
- aGAC.Load(aC3D);
- BndLib_Add3dCurve::Add(aGAC, aTolR3D, aBBC);
- //
- const BOPTools_ListOfPave& aLP=aPaveSet.Set();
- anIt.Initialize(aLP);
- for (; anIt.More(); anIt.Next()) {
- const BOPTools_Pave& aPave=anIt.Value();
- //
- nV=aPave.Index();
- const TopoDS_Vertex aV=TopoDS::Vertex(myDS->Shape(nV));//mpv
- //
- Bnd_Box aBBV;
- BRepBndLib::Add(aV, aBBV);
- if (aBBC.IsOut(aBBV)){
- continue;
- }
- //
- bIsVertexOnLine=myContext.IsVertexOnLine(aV, aC, aTolR3D, aT);
- //
- if (bIsVertexOnLine) {
- BOPTools_Pave aPaveNew(nV, aT, BooleanOperations_SurfaceSurface);
- BOPTools_PaveSet& aPS=aBC.Set();
- aPS.Append(aPaveNew);
- //<-B
- BOPTools_Tools::UpdateVertex (aC, aT, aV);
- }
- }
-}
-/////////////
-
-
-// Modified Thu Sep 14 14:35:18 2006
-// Contribution of Samtech www.samcef.com BEGIN
-//=======================================================================
-//function : SharedEdges1
-//purpose :
-//=======================================================================
-void SharedEdges1(const TopoDS_Face& aF1,
- const TopoDS_Face& aF2,
- TopTools_ListOfShape& aLS)
-{
- Standard_Integer i, aNbE, aNbF;;
- TopTools_IndexedDataMapOfShapeListOfShape aMEF;
- //
- TopExp::MapShapesAndAncestors(aF1, TopAbs_EDGE, TopAbs_FACE, aMEF);
- TopExp::MapShapesAndAncestors(aF2, TopAbs_EDGE, TopAbs_FACE, aMEF);
- //
- aNbE=aMEF.Extent();
- for (i=1; i<=aNbE; ++i) {
- const TopTools_ListOfShape& aLF=aMEF.FindFromIndex(i);
- aNbF=aLF.Extent();
- if (aNbF>1) {
- if (aNbF==2) {
- const TopoDS_Shape& aF1x=aLF.First();
- const TopoDS_Shape& aF2x=aLF.Last();
- if (aF1x.IsSame(aF2x)) {
- continue;
- }
- }
- const TopoDS_Shape& aE=aMEF.FindKey(i);
- aLS.Append (aE);
- }
- }
-}