X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_ShapesGroup.cxx;h=32c82ec35144cf8ab95ee9edfe1c1ad1afe39b65;hb=4a4e234c1bde9db8ac7e1020842ab355e03335b0;hp=a540e527f0599b13fa3e22939c9fd5a274556c34;hpb=b33da0d7f657c56dfa2a57e2617eecce308ccb91;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_ShapesGroup.cxx b/src/HYDROData/HYDROData_ShapesGroup.cxx index a540e527..32c82ec3 100644 --- a/src/HYDROData/HYDROData_ShapesGroup.cxx +++ b/src/HYDROData/HYDROData_ShapesGroup.cxx @@ -38,32 +38,24 @@ void HYDROData_ShapesGroup::GroupDefinition::Update( SeqOfGroupsDefs* t for ( int i = 1; i <= aGroupDef.Shapes.Length(); ++i ) { TopoDS_Shape aShape = aGroupDef.Shapes.Value( i ); - /* - if ( theAlgo->IsDeleted( aShape ) ) + + const TopTools_ListOfShape& aModifiedByAlgo = theAlgo->Modified( aShape ); + if ( !aModifiedByAlgo.IsEmpty() ) { + HYDROData_ShapesTool::AddShapes( aShapesToAdd, aModifiedByAlgo ); aGroupDef.Shapes.Remove( i ); --i; } - else - {*/ - const TopTools_ListOfShape& aModifiedByAlgo = theAlgo->Modified( aShape ); - if ( !aModifiedByAlgo.IsEmpty() ) + else + { + const TopTools_ListOfShape& aGeneratedByAlgo = theAlgo->Generated( aShape ); + if ( !aGeneratedByAlgo.IsEmpty() ) { - HYDROData_ShapesTool::AddShapes( aShapesToAdd, aModifiedByAlgo ); + HYDROData_ShapesTool::AddShapes( aShapesToAdd, aGeneratedByAlgo ); aGroupDef.Shapes.Remove( i ); --i; } - else - { - const TopTools_ListOfShape& aGeneratedByAlgo = theAlgo->Generated( aShape ); - if ( !aGeneratedByAlgo.IsEmpty() ) - { - HYDROData_ShapesTool::AddShapes( aShapesToAdd, aGeneratedByAlgo ); - aGroupDef.Shapes.Remove( i ); - --i; - } - } - //} + } } HYDROData_ShapesTool::AddShapes( aGroupDef.Shapes, aShapesToAdd ); @@ -89,18 +81,44 @@ void HYDROData_ShapesGroup::GroupDefinition::Update( SeqOfGroupsDefs* TopoDS_Shape aShape = aGroupDef.Shapes.Value( i ); TopoDS_Shape aGeneratedByAlgo = theAlgo->Generated( aShape ); - if ( aGeneratedByAlgo.IsNull() || aShape.IsEqual( aGeneratedByAlgo ) ) - continue; - - aShapesToAdd.Append( aGeneratedByAlgo ); - 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; + } } HYDROData_ShapesTool::AddShapes( aGroupDef.Shapes, aShapesToAdd ); } } +void HYDROData_ShapesGroup::GroupDefinition::Dump( std::ostream& theStream ) const +{ + theStream << "Name: " << Name.ToCString() << "\n"; + HYDROData_ShapesTool::DumpSequenceOfShapes( theStream, Shapes ); +} + +void HYDROData_ShapesGroup::GroupDefinition::Dump( std::ostream& theStream, + const SeqOfGroupsDefs& theGroups ) +{ + SeqOfGroupsDefs::Iterator anIter( theGroups ); + for ( ; anIter.More(); anIter.Next() ) + { + const GroupDefinition& aGroupDef = anIter.Value(); + aGroupDef.Dump( theStream ); + } +} + + + HYDROData_ShapesGroup::HYDROData_ShapesGroup() : HYDROData_Entity() {