]> SALOME platform Git repositories - modules/geom.git/blobdiff - src/GEOMAlgo/GEOMAlgo_Builder.cxx
Salome HOME
0021672: [CEA 565] Dump Study from script
[modules/geom.git] / src / GEOMAlgo / GEOMAlgo_Builder.cxx
index ebb87589366b35f7173943f151da6ea3bc2f09b3..669274cfa0713a1da6b9584628f9a1dc88f448f0 100755 (executable)
@@ -1,28 +1,29 @@
-// Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// 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
-// 
+//
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either 
+// License as published by the Free Software Foundation; either
 // version 2.1 of the License.
-// 
-// This library is distributed in the hope that it will be useful 
-// but WITHOUT ANY WARRANTY; without even the implied warranty of 
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 // Lesser General Public License for more details.
 //
-// You should have received a copy of the GNU Lesser General Public  
-// License along with this library; if not, write to the Free Software 
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
-// File:       GEOMAlgo_Builder.cxx
-// Created:    
-// Author:     Peter KURNEV 
-
-
-#include <GEOMAlgo_Builder.ixx>
+// File:        GEOMAlgo_Builder.cxx
+// Created:
+// Author:      Peter KURNEV
+//
+#include <GEOMAlgo_Builder.hxx>
 
 #include <TopAbs_ShapeEnum.hxx>
 
 
 #include <BRepLib.hxx>
 #include <NMTTools_PaveFiller.hxx>
+#include <GEOMAlgo_Tools.hxx>
 
 //=======================================================================
-//function : 
-//purpose  : 
+//function :
+//purpose  :
 //=======================================================================
   GEOMAlgo_Builder::GEOMAlgo_Builder()
 :
@@ -55,7 +57,7 @@
 }
 //=======================================================================
 //function : ~
-//purpose  : 
+//purpose  :
 //=======================================================================
   GEOMAlgo_Builder::~GEOMAlgo_Builder()
 {
@@ -68,7 +70,7 @@
 }
 //=======================================================================
 //function : AddCompound
-//purpose  : 
+//purpose  :
 //=======================================================================
   void GEOMAlgo_Builder::AddCompound(const TopoDS_Shape& theShape)
 {
@@ -82,7 +84,7 @@
 }
 //=======================================================================
 //function : AddShape
-//purpose  : 
+//purpose  :
 //=======================================================================
   void GEOMAlgo_Builder::AddShape(const TopoDS_Shape& theShape)
 {
@@ -92,7 +94,7 @@
 }
 //=======================================================================
 //function : Shapes
-//purpose  : 
+//purpose  :
 //=======================================================================
   const TopTools_ListOfShape& GEOMAlgo_Builder::Shapes()const
 {
 }
 //=======================================================================
 //function : Clear
-//purpose  : 
+//purpose  :
 //=======================================================================
   void GEOMAlgo_Builder::Clear()
 {
 }
 //=======================================================================
 //function : ClearInternals
-//purpose  : 
+//purpose  :
 //=======================================================================
   void GEOMAlgo_Builder::ClearInternals()
 {
 }
 //=======================================================================
 //function : Prepare
-//purpose  : 
+//purpose  :
 //=======================================================================
   void GEOMAlgo_Builder::Prepare()
 {
     AddShape1(aS);
   }
 }
-//=======================================================================
-//function : PostTreat
-//purpose  : 
-//=======================================================================
-  void GEOMAlgo_Builder::PostTreat()
-{
-  Standard_Integer aNbS;
-  TopoDS_Iterator aIt;
-  TopTools_ListOfShape aLS;
-  //
-  aIt.Initialize(myShape);
-  for (; aIt.More(); aIt.Next()) {
-    const TopoDS_Shape& aS=aIt.Value();
-    aLS.Append(aS);
-  }
-  aNbS=aLS.Extent();
-  if (aNbS==1) {
-    myShape=aLS.First();
-  }
-  
-  BRepLib::SameParameter(myShape, 1.e-7, Standard_True);
-}
+
 //=======================================================================
 //function : AddShape1
-//purpose  : 
+//purpose  :
 //=======================================================================
   void GEOMAlgo_Builder::AddShape1(const TopoDS_Shape& theShape)
 {
 }
 //=======================================================================
 //function : BuildResult
-//purpose  : 
+//purpose  :
 //=======================================================================
   void GEOMAlgo_Builder::BuildResult(const TopAbs_ShapeEnum theType)
 {
     aType=aS.ShapeType();
     if (aType==theType) {
       if (myImages.HasImage(aS)){
-       const TopTools_ListOfShape& aLSIm=myImages.Image(aS);
-       aItIm.Initialize(aLSIm);
-       for (; aItIm.More(); aItIm.Next()) {
-         const TopoDS_Shape& aSIm=aItIm.Value();
-         if (aM.Add(aSIm)) {
-           aBB.Add(myShape, aSIm);
-         }
-       }
+        const TopTools_ListOfShape& aLSIm=myImages.Image(aS);
+        aItIm.Initialize(aLSIm);
+        for (; aItIm.More(); aItIm.Next()) {
+          const TopoDS_Shape& aSIm=aItIm.Value();
+          if (aM.Add(aSIm)) {
+            aBB.Add(myShape, aSIm);
+          }
+        }
       }
       else {
-       if (aM.Add(aS)) {
-         aBB.Add(myShape, aS);
-       }
+        if (aM.Add(aS)) {
+          aBB.Add(myShape, aS);
+        }
       }
     }
   }
 }
 //=======================================================================
 //function : Perform
-//purpose  : 
+//purpose  :
 //=======================================================================
   void GEOMAlgo_Builder::Perform()
 {
 }
 //=======================================================================
 //function : PerformWithFiller
-//purpose  : 
+//purpose  :
 //=======================================================================
   void GEOMAlgo_Builder::PerformWithFiller(const NMTTools_PaveFiller& theDSF)
 {
 }
 //=======================================================================
 //function : PerformInternal
-//purpose  : 
+//purpose  :
 //=======================================================================
   void GEOMAlgo_Builder::PerformInternal(const NMTTools_PaveFiller& pPF)
 {
   if (myErrorStatus) {
     return;
   }
-  
+
   BuildResult(TopAbs_EDGE);
   if (myErrorStatus) {
     return;
   if (myErrorStatus) {
     return;
   }
-  
+
   BuildResult(TopAbs_WIRE);
   if (myErrorStatus) {
     return;
   }
-  
+
   // 3.4 Faces
   FillImagesFaces();
   if (myErrorStatus) {
     return;
   }
-  
+
   BuildResult(TopAbs_FACE);
   if (myErrorStatus) {
     return;
   }
   // 3.5 Shells
-  
+
   FillImagesContainers(TopAbs_SHELL);
   if (myErrorStatus) {
     return;
   }
-  
+
   BuildResult(TopAbs_SHELL);
   if (myErrorStatus) {
     return;
   if (myErrorStatus) {
     return;
   }
-  
+
   BuildResult(TopAbs_SOLID);
   if (myErrorStatus) {
     return;
   if (myErrorStatus) {
     return;
   }
-  
+
   BuildResult(TopAbs_COMPSOLID);
   if (myErrorStatus) {
     return;
   if (myErrorStatus) {
     return;
   }
-  
+
   BuildResult(TopAbs_COMPOUND);
   if (myErrorStatus) {
     return;
   // 4.History
   PrepareHistory();
   //
-  // 5 Post-treatment 
+  // 5 Post-treatment
   PostTreat();
 }
 //
+// static
+//   void CorrectWires(const TopoDS_Shape& aS);
+//
+//=======================================================================
+//function : PostTreat
+//purpose  :
+//=======================================================================
+  void GEOMAlgo_Builder::PostTreat()
+{
+  Standard_Integer aNbS;
+  TopoDS_Iterator aIt;
+  TopTools_ListOfShape aLS;
+  //
+  aIt.Initialize(myShape);
+  for (; aIt.More(); aIt.Next()) {
+    const TopoDS_Shape& aS=aIt.Value();
+    aLS.Append(aS);
+  }
+  aNbS=aLS.Extent();
+  if (aNbS==1) {
+    myShape=aLS.First();
+  }
+
+  BRepLib::SameParameter(myShape, 1.e-7, Standard_True);
+  //
+  GEOMAlgo_Tools::CorrectWires(myShape);
+}
+//
 // myErrorStatus
-// 
+//
 // 0  - Ok
 // 1  - The object is just initialized
 // 2  - PaveFiller is failed
 // 10 - No shapes to process
 // 30 - SolidBuilder failed
+