]> SALOME platform Git repositories - modules/hydro.git/blobdiff - src/HYDROData/HYDROData_Region.cxx
Salome HOME
Creat\Edit stream operation.
[modules/hydro.git] / src / HYDROData / HYDROData_Region.cxx
index 384b4bd2400a7b5b913f5d2db19916162f687fcf..090171f9e8b09619801de27ad7976baa15c1c306 100644 (file)
 #include <TopoDS_Face.hxx>
 #include <TopTools_ListOfShape.hxx>
 #include <TopTools_ListIteratorOfListOfShape.hxx>
-#include <TopExp_Explorer.hxx>
-#include <ShapeUpgrade_UnifySameDomain.hxx>
+#include <TopTools_IndexedMapOfShape.hxx>
+#include <TopExp.hxx>
 #include <BRep_Builder.hxx>
 #include <BRepAlgoAPI_Fuse.hxx>
+#include <ShapeUpgrade_UnifySameDomain.hxx>
 
 #include <QStringList>
 
@@ -196,19 +197,16 @@ TopoDS_Shape HYDROData_Region::GetShape() const
         }
       } // faces iterator
 
+      // Check the result of fuse operation
       if ( !aFuseShape.IsNull() ) {
         ShapeUpgrade_UnifySameDomain anUnifier( aFuseShape );
-        anUnifier.UnifyFacesAndEdges();
         anUnifier.Build();
         TopoDS_Shape anUnitedShape = anUnifier.Shape();
 
-        TopExp_Explorer anExp( anUnitedShape, TopAbs_FACE );
-        if ( anExp.More() ) {
-          aRegionFace = TopoDS::Face( anExp.Current() );
-          anExp.Next();
-          if ( anExp.More() ) {
-            aRegionFace.Nullify();
-          }
+        TopTools_IndexedMapOfShape aMapOfFaces;
+        TopExp::MapShapes( anUnitedShape, TopAbs_FACE, aMapOfFaces );
+        if ( aMapOfFaces.Extent() == 1 ) {
+          aRegionFace = TopoDS::Face( aMapOfFaces(1) );
         }
       }
     }