]> SALOME platform Git repositories - modules/geom.git/blobdiff - src/GEOMAlgo/GEOMAlgo_BuilderTools.cxx
Salome HOME
0021672: [CEA 565] Dump Study from script
[modules/geom.git] / src / GEOMAlgo / GEOMAlgo_BuilderTools.cxx
index 82cbf8c24b3e0250daf0827ea938941f8bc2a7f4..a40c07a37e2a0e188c4ff022279a41517c6c3ab5 100755 (executable)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2011  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 //
 
 // File:        GEOMAlgo_BuilderTools.cxx
-// Created:     
 // Author:      Peter KURNEV
-//              <pkv@irinox>
-//
-#include <GEOMAlgo_BuilderTools.ixx>
+
+#include <GEOMAlgo_BuilderTools.hxx>
+
+#include <Basics_OCCTVersion.hxx>
 
 #include <TColStd_Array1OfReal.hxx>
 
 #include <TopoDS_Edge.hxx>
 #include <TopExp_Explorer.hxx>
 
+#if OCC_VERSION_LARGE > 0x06050100 // for OCC-6.5.2 and higher version
+#include <TopExp.hxx>
+#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
+#endif
+
 #include <BRep_Tool.hxx>
 #include <BRepBndLib.hxx>
 #include <BRepMesh_FastDiscret.hxx>
 #include <Bnd_Box.hxx>
 #include <BRepAdaptor_Curve2d.hxx>
 
-static 
+static
   Standard_Integer ComputeProps(const TopoDS_Face& aF,
                                 Standard_Real& aA,
                                 Standard_Real& aV);
@@ -68,7 +73,7 @@ static
 
 //=======================================================================
 //function : IsHole
-//purpose  : 
+//purpose  :
 //=======================================================================
   Standard_Boolean GEOMAlgo_BuilderTools::IsHole(const TopoDS_Shape& aW,
                                                  const TopoDS_Shape& aFace)
@@ -79,7 +84,7 @@ static
   Standard_Real aU1, aU2, aU, dU;
   Standard_Real aX1, aY1, aX0, aY0;
   TopAbs_Orientation aOr;
-  
+
   gp_Pnt2d aP2D0, aP2D1;
   Handle(Geom2d_Curve) aC2D;
   TopoDS_Face aF, aFF;
@@ -93,10 +98,10 @@ static
   //
   aS=0.;
   aItW.Initialize(aW);
-  for (; aItW.More(); aItW.Next()) { 
+  for (; aItW.More(); aItW.Next()) {
     const TopoDS_Edge& aE=TopoDS::Edge(aItW.Value());
     aOr=aE.Orientation();
-    if (!(aOr==TopAbs_FORWARD || 
+    if (!(aOr==TopAbs_FORWARD ||
           aOr==TopAbs_REVERSED)) {
       continue;
     }
@@ -130,17 +135,17 @@ static
       aP2D0.Coord(aX0, aY0);
       aP2D1.Coord(aX1, aY1);
       //
-      aS=aS+(aY0+aY1)*(aX1-aX0); 
+      aS=aS+(aY0+aY1)*(aX1-aX0);
       //
       aP2D0=aP2D1;
     }
-  }//for (; aItW.More(); aItW.Next()) { 
+  }//for (; aItW.More(); aItW.Next()) {
   bIsHole=(aS>0.);
   return bIsHole;
 }
 //=======================================================================
 //function : IsHole
-//purpose  : 
+//purpose  :
 //=======================================================================
   Standard_Boolean GEOMAlgo_BuilderTools::IsHole(const TopoDS_Shape& aShell)
 {
@@ -166,7 +171,7 @@ static
 }
 //=======================================================================
 //function : ComputeProps
-//purpose  : 
+//purpose  :
 //=======================================================================
 Standard_Integer ComputeProps(const TopoDS_Face& aF,
                               Standard_Real& aA,
@@ -239,7 +244,7 @@ Standard_Integer ComputeProps(const TopoDS_Face& aF,
 }
 //=======================================================================
 //function : BuildTriangulation
-//purpose  : 
+//purpose  :
 //=======================================================================
 void BuildTriangulation(const TopoDS_Face& aF)
 {
@@ -276,5 +281,12 @@ void BuildTriangulation(const TopoDS_Face& aF)
                                Standard_True,
                                Standard_False,
                                Standard_True);
+
+#if OCC_VERSION_LARGE > 0x06050100 // for OCC-6.5.2 and higher version
+  TopTools_IndexedDataMapOfShapeListOfShape anAncestors;
+  TopExp::MapShapesAndAncestors(aF, TopAbs_EDGE, TopAbs_FACE, anAncestors);
+  aMesher.Add(aF, anAncestors);
+#else
   aMesher.Add(aF);
+#endif
 }