Salome HOME
Merge branch 'BR_LAND_COVER_MAP' of ssh://git.salome-platform.org/modules/hydro into...
[modules/hydro.git] / src / HYDROData / HYDROData_LandCoverMap.cxx
index 114fdf86994cb4bd5c73dec9175732b9e93f7ea0..ac6a787cdd2f20fc116335794fc6a637a65e7c3f 100644 (file)
@@ -592,16 +592,23 @@ bool HYDROData_LandCoverMap::Split( const TopoDS_Shape& theShape )
 bool HYDROData_LandCoverMap::Merge( const TopTools_ListOfShape& theFaces, const QString& theType )
 {
   // 1. to fuse the faces into the new face
-  TopoDS_Shape aMergedFace = MergeFaces( theFaces, true );
-  if( !aMergedFace.IsNull() && aMergedFace.ShapeType()==TopAbs_FACE )
-  {
+  TopoDS_Shape aMergedFace = MergeFaces( theFaces, true );  
+  bool aStat = true;
+  if( !aMergedFace.IsNull() )
+  { 
     // 2. to remove the merged faces from the current map
     Remove( theFaces );
-
-    // 3. to add the face into the map
-    return LocalPartition( TopoDS::Face( aMergedFace ), theType );
+    TopExp_Explorer Exp(aMergedFace, TopAbs_FACE);
+    for( ; Exp.More(); Exp.Next() )
+    {
+      const TopoDS_Face& aCF = TopoDS::Face(Exp.Current());
+      // 3. to add the face into the map
+      aStat = aStat && LocalPartition( aCF, theType );
+    }
   }
-  return false;
+  else
+    aStat = false;
+  return aStat;
 }
 
 /**
@@ -834,9 +841,6 @@ bool HYDROData_LandCoverMap::LocalPartition( const TopoDS_Shape& theNewShape, co
     QString aSType = anIt.StricklerType();
     //std::cout << "from " << anIt.Face() << ": " << anIt.StricklerType() << std::endl;
     TopTools_ListOfShape aModified = aBuilder.Modified( anIt.Face() );
-
-    //
-    TopTools_ListOfShape aGen = aBuilder.Generated( anIt.Face() );
     //
     if( aModified.Extent() == 0 )
       aModified.Append( anIt.Face() );