]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
0023451: EDF - Remove Extra edges. Improvement by JGV in BlockFix_UnionFaces.cxx...
authorjfa <jfa@opencascade.com>
Thu, 14 Dec 2017 11:59:19 +0000 (14:59 +0300)
committerjfa <jfa@opencascade.com>
Thu, 14 Dec 2017 11:59:19 +0000 (14:59 +0300)
13 files changed:
src/BlockFix/BlockFix_UnionFaces.cxx
src/GEOMAlgo/GEOMAlgo_Gluer.cxx
src/GEOMAlgo/GEOMAlgo_RemoverWebs.cxx
src/GEOMAlgo/GEOMAlgo_RemoverWebs.hxx
src/GEOMAlgo/GEOMAlgo_ShellSolid.cxx
src/GEOMAlgo/GEOMAlgo_Splitter.cxx
src/GEOMAlgo/GEOMAlgo_Splitter.hxx
src/GEOMAlgo/GEOMAlgo_VertexSolid.cxx
src/GEOMAlgo/GEOMAlgo_WireSolid.cxx
src/GEOMImpl/GEOMImpl_BooleanDriver.cxx
src/GEOMImpl/GEOMImpl_IMeasureOperations.cxx
src/GEOMImpl/GEOMImpl_PartitionDriver.cxx
src/GEOMImpl/GEOMImpl_ShapeDriver.cxx

index 9a42dde438bf06ce2564a6677921f0583ed78f5d..6122722232eab493387f7f945b52bdf08b38c1df 100644 (file)
 #include <Geom_SurfaceOfRevolution.hxx>
 #include <Geom_SurfaceOfLinearExtrusion.hxx>
 #include <Geom_RectangularTrimmedSurface.hxx>
+#include <BRepAdaptor_Surface.hxx>
+#include <BRepAdaptor_HSurface.hxx>
+#include <LocalAnalysis_SurfaceContinuity.hxx>
+#include <GeomConvert_ApproxSurface.hxx>
 
 #include <Geom_Curve.hxx>
 #include <Geom_Line.hxx>
@@ -233,17 +237,88 @@ static Standard_Boolean IsFacesOfSameSolids
   return isSame;
 }
 
+//=======================================================================
+//function : IsTangentFaces
+//purpose  : decides: is edge on closed surface tangent or not
+//=======================================================================
+static Standard_Boolean IsTangentFaces(const TopoDS_Edge& theEdge,
+                                       const TopoDS_Face& theFace)
+{
+  Standard_Real TolC0 = Max(0.001, 1.5*BRep_Tool::Tolerance(theEdge));
+
+  Standard_Real aFirst;
+  Standard_Real aLast;
+    
+// Obtaining of pcurves of edge on two faces.
+  const Handle(Geom2d_Curve) aC2d1 = BRep_Tool::CurveOnSurface
+                                                (theEdge, theFace, aFirst, aLast);
+  TopoDS_Edge ReversedEdge = theEdge;
+  ReversedEdge.Reverse();
+  const Handle(Geom2d_Curve) aC2d2 = BRep_Tool::CurveOnSurface
+                                                (ReversedEdge, theFace, aFirst, aLast);
+  if (aC2d1.IsNull() || aC2d2.IsNull())
+    return Standard_False;
+
+// Obtaining of two surfaces from adjacent faces.
+  Handle(Geom_Surface) aSurf = BRep_Tool::Surface(theFace);
+
+  if (aSurf.IsNull())
+    return Standard_False;
+
+// Computation of the number of samples on the edge.
+  BRepAdaptor_Surface              aBAS(theFace);
+  Handle(BRepAdaptor_HSurface)     aBAHS      = new BRepAdaptor_HSurface(aBAS);
+  Handle(BRepTopAdaptor_TopolTool) aTool      = new BRepTopAdaptor_TopolTool(aBAHS);
+  Standard_Integer                 aNbSamples =     aTool->NbSamples();
+  const Standard_Integer           aNbSamplesMax =   23;
+  aNbSamples = Min(aNbSamplesMax, aNbSamples);
+  const Standard_Real              aTolAngle   =     M_PI/18;
+
+
+// Computation of the continuity.
+  Standard_Real    aPar;
+  Standard_Real    aDelta = (aLast - aFirst)/(aNbSamples - 1);
+  Standard_Integer i, nbNotDone = 0;
+
+  for (i = 1, aPar = aFirst; i <= aNbSamples; i++, aPar += aDelta) {
+    if (i == aNbSamples) aPar = aLast;
+
+    LocalAnalysis_SurfaceContinuity aCont(aC2d1,  aC2d2,  aPar,
+                                          aSurf, aSurf, GeomAbs_G1,
+                                          0.001, TolC0, aTolAngle, 0.1, 0.1);
+    if (!aCont.IsDone()) 
+    {
+      nbNotDone++;
+      continue;
+    }
+
+    if (!aCont.IsG1())
+      return Standard_False;
+  }
+  
+  if (nbNotDone == aNbSamples)
+    return Standard_False;
+
+  return Standard_True;
+}
+
 //=======================================================================
 //function : IsEdgeValidToMerge
 //purpose  : Edge is valid if it is not seam or if it is a seam and the face
 //           has another seam edge.
 //=======================================================================
-static Standard_Boolean IsEdgeValidToMerge(const TopoDS_Edge &theEdge,
-                                           const TopoDS_Face &theFace)
+static Standard_Boolean IsEdgeValidToMerge(const TopoDS_Edge& theEdge,
+                                           const TopoDS_Face& theFace,
+                                           const Handle(Geom_Surface)& theSurface,
+                                           Standard_Boolean& theToMakeUPeriodic,
+                                           Standard_Boolean& theToMakeVPeriodic)
 {
   Standard_Boolean isValid = Standard_True;
 
-  if (BRep_Tool::IsClosed(theEdge, theFace)) {
+  if (BRepTools::IsReallyClosed(theEdge, theFace)) {
+    // Mantis issue 0023451, now code corresponds to the comment to this method
+    isValid = Standard_False;
+
     // This is a seam edge. Check if there are another seam edges on the face.
     TopExp_Explorer anExp(theFace, TopAbs_EDGE);
 
@@ -259,11 +334,38 @@ static Standard_Boolean IsEdgeValidToMerge(const TopoDS_Edge &theEdge,
       TopoDS_Edge anEdge = TopoDS::Edge(aShEdge);
 
       if (BRep_Tool::IsClosed(anEdge, theFace)) {
-        isValid = Standard_False;
+        // Mantis issue 0023451, now code corresponds to the comment to this method
+        //isValid = Standard_False;
+        isValid = Standard_True;
         break;
       }
     }
   }
+  else if (BRep_Tool::IsClosed(theEdge, theFace))
+  {
+    Standard_Real fpar, lpar;
+    Handle(Geom2d_Curve) aPCurve = BRep_Tool::CurveOnSurface(theEdge, theFace, fpar, lpar);
+    gp_Pnt2d P2d1 = aPCurve->Value(fpar);
+    gp_Pnt2d P2d2 = aPCurve->Value(lpar);
+    if (!theSurface->IsUPeriodic() &&
+        theSurface->IsUClosed() &&
+        Abs(P2d1.X() - P2d2.X()) < Abs(P2d1.Y() - P2d2.Y()))
+    {
+      if (IsTangentFaces(theEdge, theFace))
+        theToMakeUPeriodic = Standard_True;
+      else
+        isValid = Standard_False;
+    }
+    if (!theSurface->IsVPeriodic() &&
+        theSurface->IsVClosed() &&
+        Abs(P2d1.Y() - P2d2.Y()) < Abs(P2d1.X() - P2d2.X()))
+    {
+      if (IsTangentFaces(theEdge, theFace))
+        theToMakeVPeriodic = Standard_True;
+      else
+        isValid = Standard_False;
+    }
+  }
 
   return isValid;
 }
@@ -334,12 +436,14 @@ TopoDS_Shape BlockFix_UnionFaces::Perform(const TopoDS_Shape& Shape)
       Handle(Geom_Surface) aBaseSurface = BRep_Tool::Surface(aFace,aBaseLocation);
       aBaseSurface = ClearRts(aBaseSurface);
       aBaseSurface = Handle(Geom_Surface)::DownCast(aBaseSurface->Copy());
+      Standard_Boolean ToMakeUPeriodic = Standard_False, ToMakeVPeriodic = Standard_False;
 
       // find adjacent faces to union
       Standard_Integer i;
       for (i = 1; i <= edges.Length(); i++) {
         TopoDS_Edge edge = TopoDS::Edge(edges(i));
-        if (BRep_Tool::Degenerated(edge) || !IsEdgeValidToMerge(edge, aFace))
+        if (BRep_Tool::Degenerated(edge) ||
+            !IsEdgeValidToMerge(edge, aFace, aBaseSurface, ToMakeUPeriodic, ToMakeVPeriodic))
           continue;
 
         const TopTools_ListOfShape& aList = aMapEdgeFaces.FindFromKey(edge);
@@ -352,7 +456,8 @@ TopoDS_Shape BlockFix_UnionFaces::Perform(const TopoDS_Shape& Shape)
           if (aProcessed.Contains(anCheckedFace))
             continue;
 
-          if (!IsEdgeValidToMerge(edge, anCheckedFace)) {
+          if (!IsEdgeValidToMerge(edge, anCheckedFace,
+                                  aBaseSurface, ToMakeUPeriodic, ToMakeVPeriodic)) {
             // Skip seam edge.
             continue;
           }
@@ -392,6 +497,27 @@ TopoDS_Shape BlockFix_UnionFaces::Perform(const TopoDS_Shape& Shape)
         NbModif++;
         TopoDS_Face aResult;
         BRep_Builder B;
+        if (ToMakeUPeriodic || ToMakeVPeriodic)
+        {
+          Handle(Geom_BSplineSurface) aBSplineSurface = Handle(Geom_BSplineSurface)::DownCast(aBaseSurface);
+          if (aBSplineSurface.IsNull())
+          {
+            Standard_Real aTol = 1.e-4;
+            GeomAbs_Shape aUCont = GeomAbs_C1, aVCont = GeomAbs_C1;
+            Standard_Integer degU = 14, degV = 14;
+            Standard_Integer nmax = 16;
+            Standard_Integer aPrec = 1;  
+            GeomConvert_ApproxSurface Approximator(aBaseSurface,aTol,aUCont,aVCont,degU,degV,nmax,aPrec);
+            aBSplineSurface = Approximator.Surface();
+          }
+          
+          if (ToMakeUPeriodic)
+            aBSplineSurface->SetUPeriodic();
+          if (ToMakeVPeriodic)
+            aBSplineSurface->SetVPeriodic();
+          
+          aBaseSurface = aBSplineSurface;
+        }
         B.MakeFace(aResult,aBaseSurface,aBaseLocation,0);
         Standard_Integer nbWires = 0;
 
@@ -516,6 +642,9 @@ TopoDS_Shape BlockFix_UnionFaces::Perform(const TopoDS_Shape& Shape)
         sff.SetMaxTolerance(Max(1.,myTolerance*1000.));
         //Setting modes
         sff.FixOrientationMode() = 0;
+#if OCC_VERSION_LARGE > 0x07020001
+        sff.FixWireTool()->CheckMissingEdgesMode() = Standard_False;
+#endif
         //sff.FixWireMode() = 0;
         sff.SetContext(aContext);
         // Applying the fixes
index bb09bceb213b31138cc4c917aad70690a3802c13..b012b3e3505e8bbf11aee563c4dc7bc198aec853 100644 (file)
@@ -27,6 +27,8 @@
 //
 #include <GEOMAlgo_Gluer.hxx>
 
+#include <Basics_OCCTVersion.hxx>
+
 #include <NCollection_UBTreeFiller.hxx>
 
 #include <TColStd_MapIteratorOfMapOfInteger.hxx>
@@ -508,7 +510,12 @@ void GEOMAlgo_Gluer::MakeSolids()
   myResult=aCmp;
   //
   if (aMS.Extent()) {
+#if OCC_VERSION_LARGE > 0x07020001
+    TopTools_IndexedMapOfShape aMapToAvoid;
+    BOPTools_AlgoTools::CorrectCurveOnSurface(myResult, aMapToAvoid, 0.0001);
+#else
     BOPTools_AlgoTools::CorrectCurveOnSurface(myResult, 0.0001);
+#endif
   }
 }
 //=======================================================================
index 98981f651459b2787447145b106a8b9a67c63414..758fe84764c00a4a3e6608a3af00b4a406cb283c 100644 (file)
@@ -39,9 +39,8 @@
 
 #include <BOPAlgo_BuilderSolid.hxx>
 
-#include <BOPTools.hxx>
 #include <BOPTools_AlgoTools.hxx>
-#include <BOPCol_MapOfShape.hxx>
+#include <TopTools_MapOfShape.hxx>
 
 //=======================================================================
 //function : 
@@ -119,11 +118,11 @@ void GEOMAlgo_RemoverWebs::BuildSolid()
   TopoDS_Iterator aIt1, aIt2;
   TopoDS_Shape aShape;
   BRep_Builder aBB;
-  BOPCol_MapOfShape aMFence;
-  BOPCol_IndexedMapOfShape aMSI;
-  BOPCol_IndexedDataMapOfShapeListOfShape aMFS;
-  BOPCol_ListOfShape aSFS;
-  BOPCol_ListIteratorOfListOfShape aItLS;
+  TopTools_MapOfShape aMFence;
+  TopTools_IndexedMapOfShape aMSI;
+  TopTools_IndexedDataMapOfShapeListOfShape aMFS;
+  TopTools_ListOfShape aSFS;
+  TopTools_ListIteratorOfListOfShape aItLS;
   BOPAlgo_BuilderSolid aSB;
   //
   //modified by NIZNHY-PKV Thu Jul 11 06:54:51 2013f
@@ -144,7 +143,7 @@ void GEOMAlgo_RemoverWebs::BuildSolid()
   //
   aNbR=aMFence.Extent();
   if (aNbS!=aNbR) {
-    BOPCol_MapIteratorOfMapOfShape aItMS;
+    TopTools_MapIteratorOfMapOfShape aItMS;
     //
     BOPTools_AlgoTools::MakeContainer(TopAbs_COMPOUND, aShape);  
     //
@@ -159,7 +158,7 @@ void GEOMAlgo_RemoverWebs::BuildSolid()
   aNbF2=0;
   //
   // 1. aSFS: Faces 
-  BOPTools::MapShapesAndAncestors(aShape, TopAbs_FACE, TopAbs_SOLID, aMFS);
+  TopExp::MapShapesAndAncestors(aShape, TopAbs_FACE, TopAbs_SOLID, aMFS);
   //
   aNbF=aMFS.Extent();
   for (i=1; i<=aNbF; ++i) {
@@ -175,7 +174,7 @@ void GEOMAlgo_RemoverWebs::BuildSolid()
       aSFS.Append(aFi);
     }
     else {
-      const BOPCol_ListOfShape& aLSx=aMFS(i);
+      const TopTools_ListOfShape& aLSx=aMFS(i);
       aNbSx=aLSx.Extent();
       if (aNbSx==1) {
         aSFS.Append(aFx);
@@ -221,7 +220,7 @@ void GEOMAlgo_RemoverWebs::BuildSolid()
     return;
   }
   //
-  const BOPCol_ListOfShape& aLSR=aSB.Areas();
+  const TopTools_ListOfShape& aLSR=aSB.Areas();
   // 
   // 4 Add the internals
   if (aNbSI) {
@@ -239,14 +238,14 @@ void GEOMAlgo_RemoverWebs::BuildSolid()
 //function : AddInternalShapes
 //purpose  : 
 //=======================================================================
-void GEOMAlgo_RemoverWebs::AddInternalShapes(const BOPCol_ListOfShape& aLSR,
-                                             const BOPCol_IndexedMapOfShape& aMSI)
+void GEOMAlgo_RemoverWebs::AddInternalShapes(const TopTools_ListOfShape& aLSR,
+                                             const TopTools_IndexedMapOfShape& aMSI)
 {
   Standard_Integer i, aNbSI;
   TopAbs_State aState;  
   TopoDS_Solid aSd;
   BRep_Builder aBB;
-  BOPCol_ListIteratorOfListOfShape aItLS;
+  TopTools_ListIteratorOfListOfShape aItLS;
   Handle(IntTools_Context) aCtx=new IntTools_Context;
   //
   aNbSI=aMSI.Extent();
index 39002fe405c564086f26d5cb402facfb44820bec..ccfea5a8f451c7a44cca36ee3afb6708ff225001 100644 (file)
@@ -38,8 +38,8 @@
 #include <Standard_Macro.hxx>
 //
 #include <GEOMAlgo_ShapeAlgo.hxx>
-#include <BOPCol_ListOfShape.hxx>
-#include <BOPCol_IndexedMapOfShape.hxx>
+#include <TopTools_ListOfShape.hxx>
+#include <TopTools_IndexedMapOfShape.hxx>
 
 //=======================================================================
 //function : GEOMAlgo_RemoverWebs
@@ -66,8 +66,8 @@ protected:
     void BuildSolid() ;
 
   Standard_EXPORT
-    static void AddInternalShapes(const BOPCol_ListOfShape& ,
-                                 const BOPCol_IndexedMapOfShape& );
+    static void AddInternalShapes(const TopTools_ListOfShape& ,
+                                 const TopTools_IndexedMapOfShape& );
   //
 };
 
index 942538773cdfc2b0386b5e4a6251862889f82fb4..111d9911c4b039674658e34671d7036280a01b90 100644 (file)
@@ -48,8 +48,8 @@
 
 #include <BOPTools_AlgoTools.hxx>
 
-#include <BOPCol_DataMapOfShapeListOfShape.hxx>
-#include <BOPCol_ListOfShape.hxx>
+#include <TopTools_DataMapOfShapeListOfShape.hxx>
+#include <TopTools_ListOfShape.hxx>
 #include <IntTools_Context.hxx>
 #include <BOPDS_DS.hxx>
 #include <BOPAlgo_Builder.hxx>
@@ -206,7 +206,7 @@ void GEOMAlgo_ShellSolid::Perform()
     //
     const BOPDS_DS& aDS=myDSFiller->DS();
     BOPDS_DS* pDS=(BOPDS_DS*)&aDS;
-    const BOPCol_ListOfShape& aLS=pDS->Arguments();
+    const TopTools_ListOfShape& aLS=pDS->Arguments();
     //
     aNbArgs=aLS.Extent();
     if (aNbArgs!=2) {
@@ -245,7 +245,7 @@ void GEOMAlgo_ShellSolid::Perform()
       return;
     }
     //
-    const BOPCol_DataMapOfShapeListOfShape& aImages=aSSB.Images();
+    const TopTools_DataMapOfShapeListOfShape& aImages=aSSB.Images();
     //
     //-------------------------------
     for (i=iBeg; i<=iEnd; ++i) {
@@ -268,7 +268,7 @@ void GEOMAlgo_ShellSolid::Perform()
         aState=BOPTools_AlgoTools::ComputeState(aP, aSolid, aTol, aCtx);
       }
       else {
-        const BOPCol_ListOfShape& aLSp=aImages.Find(aS);
+        const TopTools_ListOfShape& aLSp=aImages.Find(aS);
         aNbSp=aLSp.Extent();
         if (aNbSp>0) {
           continue;
index db1a8ad58a88a571d0f4842e57407415ce3acc5e..aea5bb8dc744308b07ffc35b51a4dc367aa147c1 100644 (file)
 
 #include <BRep_Builder.hxx>
 
-#include <BOPCol_MapOfShape.hxx>
-#include <BOPCol_ListOfShape.hxx>
+#include <TopTools_MapOfShape.hxx>
+#include <TopTools_ListOfShape.hxx>
 
-#include <BOPTools.hxx>
+#include <TopExp.hxx>
 
 static 
   void TreatCompound(const TopoDS_Shape& aC, 
-                     BOPCol_ListOfShape& aLSX);
+                     TopTools_ListOfShape& aLSX);
 
 //=======================================================================
 //function : 
@@ -95,7 +95,7 @@ void GEOMAlgo_Splitter::AddTool(const TopoDS_Shape& theShape)
 //function : Tools
 //purpose  : 
 //=======================================================================
-const BOPCol_ListOfShape& GEOMAlgo_Splitter::Tools()const
+const TopTools_ListOfShape& GEOMAlgo_Splitter::Tools()const
 {
   return myTools;
 }
@@ -150,8 +150,8 @@ void GEOMAlgo_Splitter::BuildResult(const TopAbs_ShapeEnum theType)
 {
   TopAbs_ShapeEnum aType;
   BRep_Builder aBB;
-  BOPCol_MapOfShape aM;
-  BOPCol_ListIteratorOfListOfShape aIt, aItIm;
+  TopTools_MapOfShape aM;
+  TopTools_ListIteratorOfListOfShape aIt, aItIm;
   //
   aIt.Initialize(myArguments);
   for (; aIt.More(); aIt.Next()) {
@@ -159,7 +159,7 @@ void GEOMAlgo_Splitter::BuildResult(const TopAbs_ShapeEnum theType)
     aType=aS.ShapeType();
     if (aType==theType && !myMapTools.Contains(aS)) {
       if (myImages.IsBound(aS)) {
-        const BOPCol_ListOfShape& aLSIm=myImages.Find(aS);
+        const TopTools_ListOfShape& aLSIm=myImages.Find(aS);
         aItIm.Initialize(aLSIm);
         for (; aItIm.More(); aItIm.Next()) {
           const TopoDS_Shape& aSIm=aItIm.Value();
@@ -186,11 +186,11 @@ void GEOMAlgo_Splitter::PostTreat()
     Standard_Integer i, aNbS;
     BRep_Builder aBB;
     TopoDS_Compound aC;
-    BOPCol_IndexedMapOfShape aMx;
+    TopTools_IndexedMapOfShape aMx;
     //
     aBB.MakeCompound(aC);
     //
-    BOPTools::MapShapes(myShape, myLimit, aMx);
+    TopExp::MapShapes(myShape, myLimit, aMx);
     aNbS=aMx.Extent();
     for (i=1; i<=aNbS; ++i) {
       const TopoDS_Shape& aS=aMx(i);
@@ -199,9 +199,9 @@ void GEOMAlgo_Splitter::PostTreat()
     if (myLimitMode) {
       Standard_Integer iType, iLimit, iTypeX;
       TopAbs_ShapeEnum aType, aTypeX;
-      BOPCol_ListOfShape aLSP, aLSX;
-      BOPCol_ListIteratorOfListOfShape aIt, aItX, aItIm;
-      BOPCol_MapOfShape  aM;
+      TopTools_ListOfShape aLSP, aLSX;
+      TopTools_ListIteratorOfListOfShape aIt, aItX, aItIm;
+      TopTools_MapOfShape  aM;
       //
       iLimit=(Standard_Integer)myLimit; 
       //
@@ -239,13 +239,13 @@ void GEOMAlgo_Splitter::PostTreat()
       }// for (; aIt.More(); aIt.Next()) {
       //
       aMx.Clear();
-      BOPTools::MapShapes(aC, aMx);
+      TopExp::MapShapes(aC, aMx);
        // 2. Add them to aC
       aIt.Initialize(aLSP);
       for (; aIt.More(); aIt.Next()) {
         const TopoDS_Shape& aS=aIt.Value();
         if (myImages.IsBound(aS)) {
-          const BOPCol_ListOfShape& aLSIm=myImages.Find(aS);
+          const TopTools_ListOfShape& aLSIm=myImages.Find(aS);
           aItIm.Initialize(aLSIm);
           for (; aItIm.More(); aItIm.Next()) {
             const TopoDS_Shape& aSIm=aItIm.Value();
@@ -270,7 +270,7 @@ void GEOMAlgo_Splitter::PostTreat()
   //
   Standard_Integer aNbS;
   TopoDS_Iterator aIt;
-  BOPCol_ListOfShape aLS;
+  TopTools_ListOfShape aLS;
   //
   aIt.Initialize(myShape);
   for (; aIt.More(); aIt.Next()) {
@@ -289,12 +289,12 @@ void GEOMAlgo_Splitter::PostTreat()
 //purpose  : 
 //=======================================================================
 void TreatCompound(const TopoDS_Shape& aC1, 
-                   BOPCol_ListOfShape& aLSX)
+                   TopTools_ListOfShape& aLSX)
 {
   Standard_Integer aNbC1;
   TopAbs_ShapeEnum aType;
-  BOPCol_ListOfShape aLC, aLC1;
-  BOPCol_ListIteratorOfListOfShape aIt, aIt1;
+  TopTools_ListOfShape aLC, aLC1;
+  TopTools_ListIteratorOfListOfShape aIt, aIt1;
   TopoDS_Iterator aItC;
   //
   aLC.Append (aC1);
index 3789855351a03cf137f322980b2860d7a54b4ac4..27f7260bafe012b43be41041bff0f54d40310ea0 100644 (file)
@@ -37,8 +37,8 @@
 
 #include <TopoDS_Shape.hxx>
 
-#include <BOPCol_ListOfShape.hxx>
-#include <BOPCol_MapOfShape.hxx>
+#include <TopTools_ListOfShape.hxx>
+#include <TopTools_MapOfShape.hxx>
 
 #include <BOPAlgo_Builder.hxx>
 
@@ -63,7 +63,7 @@ class GEOMAlgo_Splitter : public BOPAlgo_Builder
     void AddTool(const TopoDS_Shape& theShape);
 
   Standard_EXPORT
-    const BOPCol_ListOfShape& Tools()const;
+    const TopTools_ListOfShape& Tools()const;
 
   Standard_EXPORT
     void SetLimit(const TopAbs_ShapeEnum aLimit);
@@ -88,8 +88,8 @@ class GEOMAlgo_Splitter : public BOPAlgo_Builder
     virtual void PostTreat();
   
  protected:
-  BOPCol_ListOfShape myTools; 
-  BOPCol_MapOfShape myMapTools;        
+  TopTools_ListOfShape myTools; 
+  TopTools_MapOfShape myMapTools;        
   TopAbs_ShapeEnum myLimit;   
   Standard_Integer myLimitMode;  
 };
index 8be6ab0386865d7b8922dbef2588f82df08fa54d..02a28c8e52a98ec83943f438a25ec2c12f70dfb2 100644 (file)
@@ -45,7 +45,7 @@
 #include <BRep_Tool.hxx>
 #include <BRepClass3d_SolidClassifier.hxx>
 //
-#include <BOPCol_ListOfShape.hxx>
+#include <TopTools_ListOfShape.hxx>
 #include <IntTools_Context.hxx>
 //
 #include <BOPDS_DS.hxx>
@@ -93,7 +93,7 @@ void GEOMAlgo_VertexSolid::Perform()
     TopTools_IndexedMapOfShape aM;
     //
     const BOPDS_DS& aDS=myDSFiller->DS();
-    const BOPCol_ListOfShape& aLS=aDS.Arguments();
+    const TopTools_ListOfShape& aLS=aDS.Arguments();
     aNbArgs=aLS.Extent();
     if (aNbArgs!=2) {
       myErrorStatus=14;
@@ -136,7 +136,7 @@ void GEOMAlgo_VertexSolid::BuildResult()
   BOPDS_VectorOfInterfVE& aVEs=pDS->InterfVE();
   BOPDS_VectorOfInterfVF& aVFs=pDS->InterfVF();
   //
-  const BOPCol_ListOfShape& aLS=aDS.Arguments();
+  const TopTools_ListOfShape& aLS=aDS.Arguments();
   const TopoDS_Shape& aObj=aLS.First();
   //
   const TopoDS_Shape& aTool=aLS.Last();
@@ -161,7 +161,7 @@ void GEOMAlgo_VertexSolid::BuildResult()
     iFound=0;
     //
     // 1
-    aNbVV=aVVs.Extent();
+    aNbVV=aVVs.Length();
     for (j=0; j<aNbVV; ++j) {
       BOPDS_InterfVV& aVV=aVVs(j);
       if (aVV.Contains(i)) {
@@ -174,7 +174,7 @@ void GEOMAlgo_VertexSolid::BuildResult()
       continue; 
     }
     // 2
-    aNbVE=aVEs.Extent();
+    aNbVE=aVEs.Length();
     for (j=0; j<aNbVE; ++j) {
       BOPDS_InterfVE& aVE=aVEs(j);
       if (aVE.Contains(i)) {
@@ -187,7 +187,7 @@ void GEOMAlgo_VertexSolid::BuildResult()
       continue; 
     }
     // 3
-    aNbVF=aVFs.Extent();
+    aNbVF=aVFs.Length();
     for (j=0; j<aNbVF; ++j) {
       BOPDS_InterfVF& aVF=aVFs(j);
       if (aVF.Contains(i)) {
index 663bc715de3fa508e4d8e716dbfd81ab70ee3467..7439181b6ca515c658aaeb4ba4bf9b00e9335a32 100644 (file)
@@ -80,7 +80,7 @@ void GEOMAlgo_WireSolid::Perform()
     Standard_Integer aNbArgs;
     //
     const BOPDS_DS& aDS=myDSFiller->DS();
-    const BOPCol_ListOfShape& aLS=aDS.Arguments();
+    const TopTools_ListOfShape& aLS=aDS.Arguments();
     aNbArgs=aLS.Extent();
     if (!aNbArgs) {
       myErrorStatus=13;
@@ -115,7 +115,7 @@ void GEOMAlgo_WireSolid::BuildResult()
   const BOPDS_DS& aDS=myDSFiller->DS();
   BOPDS_DS* pDS=(BOPDS_DS*)&aDS;
   //
-  const BOPCol_ListOfShape& aLS=pDS->Arguments();
+  const TopTools_ListOfShape& aLS=pDS->Arguments();
   aNbArgs=aLS.Extent();
   if (aNbArgs!=2) {
     myErrorStatus=14;
index abfc738eaa38435dfec6a0ef047022f51eaf918d..9339d174d5c72de7f23f993a65492cca8ae5d034 100644 (file)
@@ -145,7 +145,7 @@ Standard_Integer GEOMImpl_BooleanDriver::Execute(Handle(TFunction_Logbook)& log)
         if (isCheckSelfInte) {
           BOPAlgo_CheckerSI aCSI;  // checker of self-interferences
           aCSI.SetLevelOfCheck(BOP_SELF_INTERSECTIONS_LEVEL);
-          BOPCol_ListOfShape aList1, aList2;
+          TopTools_ListOfShape aList1, aList2;
           aList1.Append(aShape1);
           aList2.Append(aShape2);
           aCSI.SetArguments(aList1);
@@ -201,7 +201,7 @@ Standard_Integer GEOMImpl_BooleanDriver::Execute(Handle(TFunction_Logbook)& log)
 
           if (isCheckSelfInte) {
             aCSI.SetLevelOfCheck(BOP_SELF_INTERSECTIONS_LEVEL);
-            BOPCol_ListOfShape aList1;
+            TopTools_ListOfShape aList1;
             aList1.Append(aShape);
             aCSI.SetArguments(aList1);
             aCSI.Perform();
@@ -225,7 +225,7 @@ Standard_Integer GEOMImpl_BooleanDriver::Execute(Handle(TFunction_Logbook)& log)
               StdFail_NotDone::Raise("Boolean operation will not be performed, because argument shape is not valid");
 
             if (isCheckSelfInte) {
-              BOPCol_ListOfShape aList2;
+              TopTools_ListOfShape aList2;
               aList2.Append(aShape2);
               aCSI.SetArguments(aList2);
               aCSI.Perform();
@@ -266,7 +266,7 @@ Standard_Integer GEOMImpl_BooleanDriver::Execute(Handle(TFunction_Logbook)& log)
 
         if (isCheckSelfInte) {
           aCSI.SetLevelOfCheck(BOP_SELF_INTERSECTIONS_LEVEL);
-          BOPCol_ListOfShape aList1;
+          TopTools_ListOfShape aList1;
           aList1.Append(aShape);
           aCSI.SetArguments(aList1);
           aCSI.Perform();
@@ -296,7 +296,7 @@ Standard_Integer GEOMImpl_BooleanDriver::Execute(Handle(TFunction_Logbook)& log)
             StdFail_NotDone::Raise("Boolean operation will not be performed, because argument shape is not valid");
 
           if (isCheckSelfInte) {
-            BOPCol_ListOfShape aList2;
+            TopTools_ListOfShape aList2;
             aList2.Append(aTool);
             aCSI.SetArguments(aList2);
             aCSI.Perform();
@@ -354,7 +354,7 @@ TopoDS_Shape GEOMImpl_BooleanDriver::makeCompoundShellFromFaces
     }
   }
 
-  BOPCol_ListOfShape aListShapes;
+  TopTools_ListOfShape aListShapes;
   BOPTools_AlgoTools::MakeConnexityBlocks(aFaces, TopAbs_EDGE, TopAbs_FACE, aListShapes);
 
   if (aListShapes.IsEmpty())
@@ -362,7 +362,7 @@ TopoDS_Shape GEOMImpl_BooleanDriver::makeCompoundShellFromFaces
 
   TopoDS_Compound aResult;
   B.MakeCompound(aResult);
-  BOPCol_ListIteratorOfListOfShape anIter(aListShapes);
+  TopTools_ListIteratorOfListOfShape anIter(aListShapes);
 
   for (; anIter.More(); anIter.Next()) {
     TopoDS_Shell aShell;
index cbf78afd3d10d679ace9a90ce62b57346556b0f1..b9598338e087c15db06f3018daaa6ffa701d2688 100644 (file)
@@ -38,9 +38,8 @@
 // OCCT Includes
 #include <Bnd_Box.hxx>
 #include <BOPAlgo_CheckerSI.hxx>
-#include <BOPCol_ListOfShape.hxx>
+#include <TopTools_ListOfShape.hxx>
 #include <BOPDS_DS.hxx>
-#include <BOPDS_MapOfPassKey.hxx>
 #include <BOPDS_MapOfPair.hxx>
 #include <BOPDS_Pair.hxx>
 #include <BRepBndLib.hxx>
@@ -1551,7 +1550,7 @@ bool GEOMImpl_IMeasureOperations::CheckSelfIntersections
   TopTools_IndexedMapOfShape anIndices;
   TopExp::MapShapes(aScopy, anIndices);
 
-  BOPCol_ListOfShape aLCS;
+  TopTools_ListOfShape aLCS;
   aLCS.Append(aScopy);
   //
   BOPAlgo_CheckerSI aCSI; // checker of self-interferences
@@ -1748,7 +1747,7 @@ bool GEOMImpl_IMeasureOperations::FastIntersect (Handle(GEOM_Object) theShape1,
   TopExp::MapShapes(aScopy1, anIndices1);
   TopExp::MapShapes(aScopy2, anIndices2);
 
-  BOPCol_ListOfShape aLCS1, aLCS2;
+  TopTools_ListOfShape aLCS1, aLCS2;
   aLCS1.Append(aScopy1); aLCS2.Append(aScopy2);
   //
   BRepExtrema_ShapeProximity aBSP; // checker of fast interferences
index 0988e6ddccff7804391aa700753c104ed9f88b27..09ed9bb5d5a4f01b98d9b6bbd9ef12ffdaf87296 100644 (file)
@@ -45,8 +45,8 @@
 #include <StdFail_NotDone.hxx>
 #include <BOPAlgo_CheckerSI.hxx>
 #include <BOPAlgo_Alerts.hxx>
-#include <BOPCol_IndexedDataMapOfShapeListOfShape.hxx>
-#include <BOPCol_ListOfShape.hxx>
+#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
+#include <TopTools_ListOfShape.hxx>
 #include <BOPDS_DS.hxx>
 
 // Depth of self-intersection check (see BOPAlgo_CheckerSI::SetLevelOfCheck() for more details)
@@ -101,7 +101,7 @@ static void PrepareShapes (const TopoDS_Shape&   theShape,
 static void CheckSelfIntersection(const TopoDS_Shape &theShape)
 {
   BOPAlgo_CheckerSI aCSI;  // checker of self-interferences
-  BOPCol_ListOfShape aList;
+  TopTools_ListOfShape aList;
 
   aList.Append(theShape);
   aCSI.SetLevelOfCheck(BOP_SELF_INTERSECTIONS_LEVEL);
@@ -436,7 +436,7 @@ Standard_Integer GEOMImpl_PartitionDriver::Execute(Handle(TFunction_Logbook)& lo
   TopExp::MapShapes(aShape, aResIndices);
 
   // Map: source_shape/images of source_shape in Result
-  const BOPCol_IndexedDataMapOfShapeListOfShape& aMR = PS.ImagesResult();
+  const TopTools_IndexedDataMapOfShapeListOfShape& aMR = PS.ImagesResult();
   //const TopTools_IndexedDataMapOfShapeListOfShape& aMR = PS.ImagesResult();
 
   // history for all argument shapes
@@ -468,13 +468,13 @@ Standard_Integer GEOMImpl_PartitionDriver::Execute(Handle(TFunction_Logbook)& lo
       //
       if (!aMR.Contains(anEntity)) continue;
 
-      const BOPCol_ListOfShape& aModified = aMR.FindFromKey(anEntity);
+      const TopTools_ListOfShape& aModified = aMR.FindFromKey(anEntity);
       //const TopTools_ListOfShape& aModified = aMR.FindFromKey(anEntity);
       Standard_Integer nbModified = aModified.Extent();
 
       if (nbModified > 0) { // Mantis issue 0021182
         int ih = 1;
-        BOPCol_ListIteratorOfListOfShape itM (aModified);
+        TopTools_ListIteratorOfListOfShape itM (aModified);
         for (; itM.More() && nbModified > 0; itM.Next(), ++ih) {
           if (!aResIndices.Contains(itM.Value())) {
             nbModified = 0;
@@ -487,7 +487,7 @@ Standard_Integer GEOMImpl_PartitionDriver::Execute(Handle(TFunction_Logbook)& lo
           TDataStd_IntegerArray::Set(aWhatHistoryLabel, 1, nbModified);
 
         int ih = 1;
-        BOPCol_ListIteratorOfListOfShape itM (aModified);
+        TopTools_ListIteratorOfListOfShape itM (aModified);
         //TopTools_ListIteratorOfListOfShape itM (aModified);
         for (; itM.More(); itM.Next(), ++ih) {
           int id = aResIndices.FindIndex(itM.Value());
index 06b7fdc9569cc48863f987297d185804584cf2ce..11830b2a312300a5a1c14a0ae9bd1f7cdcacff5a 100644 (file)
@@ -744,7 +744,7 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(Handle(TFunction_Logbook)& log) c
     unsigned int ind, nbshapes = aShapes->Length();
     
     // add faces
-    BOPCol_ListOfShape aLS;
+    TopTools_ListOfShape aLS;
     for (ind = 1; ind <= nbshapes; ind++) {
       Handle(GEOM_Function) aRefShape = Handle(GEOM_Function)::DownCast(aShapes->Value(ind));
       TopoDS_Shape aShape_i = aRefShape->GetValue();