Salome HOME
export of 3D poly to SHP (lot 5)
[modules/hydro.git] / src / HYDROData / HYDROData_ShapesGroup.cxx
index 7eaad896c05b0786c72a1decae36ea25ab0044f3..c0d0c7614ea2cccfdac2106f692a0a3c142cb265 100644 (file)
@@ -85,6 +85,9 @@ void HYDROData_ShapesGroup::GroupDefinition::Update( SeqOfGroupsDefs*
     return;
 
   SeqOfGroupsDefs::Iterator anIter( *theGroupsDefs );
+  if (theAlgo->History().IsNull())
+    return;
+
   for ( ; anIter.More(); anIter.Next() )
   {
     GroupDefinition& aGroupDef = anIter.ChangeValue();
@@ -96,27 +99,27 @@ void HYDROData_ShapesGroup::GroupDefinition::Update( SeqOfGroupsDefs*
     {
       TopoDS_Shape aShape = aGroupDef.Shapes.Value( i );
 
-      TopoDS_Shape aGeneratedByAlgo = TopoDS_Shape();
-      if ( !theAlgo->History().IsNull() && ! aShape.IsNull())
+      TopoDS_Shape aModifSh;
+      if ( !aShape.IsNull())
+      {
+        const TopTools_ListOfShape& listModified = theAlgo->History()->Modified(aShape);
+        if (listModified.Extent() > 0)
         {
-          const TopTools_ListOfShape& listModified = theAlgo->History()->Modified(aShape);
-          if (listModified.Extent() > 0)
-            aGeneratedByAlgo = listModified.First();
+          aModifSh = listModified.First(); 
+          // Edge has been modified
+          aShapesToAdd.Append( aModifSh );
+          aGroupDef.Shapes.Remove( i );
+          --i;      
         }
-      if ( aGeneratedByAlgo.IsNull() )
-      {
-        // Edge has been removed
-        aGroupDef.Shapes.Remove( i );
-        --i;
-      }
-      else if ( !aShape.IsEqual( aGeneratedByAlgo ) )
-      {
-        // Edge has been modified
-        aShapesToAdd.Append( aGeneratedByAlgo );
-        aGroupDef.Shapes.Remove( i );
-        --i;
+        else if ( theAlgo->History()->IsRemoved(aShape) )
+        {    
+          // Edge has been removed
+          aGroupDef.Shapes.Remove( i );
+          --i;
+        }
+  
       }      
-    }
+   }
 
     HYDROData_ShapesTool::AddShapes( aGroupDef.Shapes, aShapesToAdd );
   }