X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_Zone.cxx;h=76e5dc8cf5f8a42274fcd5166eb4f8626d9c4d30;hb=424f8230c9003d00fb27499b2441c4b3a2a28292;hp=2e8e58dd2a07de0ef22f76053372bd5bddfa1684;hpb=3bf1f41d27a5903c25dca2d54d844c53760e6133;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_Zone.cxx b/src/HYDROData/HYDROData_Zone.cxx index 2e8e58dd..76e5dc8c 100644 --- a/src/HYDROData/HYDROData_Zone.cxx +++ b/src/HYDROData/HYDROData_Zone.cxx @@ -34,7 +34,7 @@ QStringList HYDROData_Zone::DumpToPython( MapOfTreatedObjects& theTreatedObjects { QStringList aResList; - Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( this ); + Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( myLab ); if ( aDocument.IsNull() ) return aResList; @@ -63,6 +63,26 @@ QStringList HYDROData_Zone::DumpToPython( MapOfTreatedObjects& theTreatedObjects return aResList; } +bool HYDROData_Zone::CanBeUpdated() const +{ + return false; +} + +bool HYDROData_Zone::CanRemove() +{ + return false; +} + +HYDROData_SequenceOfObjects HYDROData_Zone::GetAllReferenceObjects() const +{ + HYDROData_SequenceOfObjects aResSeq = HYDROData_Entity::GetAllReferenceObjects(); + + HYDROData_SequenceOfObjects aSeqOfGeomObjects = GetGeometryObjects(); + aResSeq.Append( aSeqOfGeomObjects ); + + return aResSeq; +} + void HYDROData_Zone::SetShape( const TopoDS_Shape& theShape ) { TNaming_Builder aBuilder( myLab.FindChild( DataTag_Shape ) ); @@ -77,12 +97,47 @@ TopoDS_Shape HYDROData_Zone::GetShape() const return TopoDS_Shape(); } +bool HYDROData_Zone::IsMergingNeed() const +{ + Handle(HYDROData_Bathymetry) aRefBathymetry; + + HYDROData_SequenceOfObjects aGeomObjects = GetGeometryObjects(); + HYDROData_SequenceOfObjects::Iterator aGeomObjsIter( aGeomObjects ); + for ( ; aGeomObjsIter.More(); aGeomObjsIter.Next() ) + { + Handle(HYDROData_Object) aRefGeomObj = + Handle(HYDROData_Object)::DownCast( aGeomObjsIter.Value() ); + if ( aRefGeomObj.IsNull() ) + continue; + + Handle(HYDROData_Bathymetry) anObjBathymetry = aRefGeomObj->GetBathymetry(); + if ( anObjBathymetry.IsNull() ) + continue; + + if ( aRefBathymetry.IsNull() ) + { + aRefBathymetry = anObjBathymetry; + continue; + } + + if ( !IsEqual( aRefBathymetry, anObjBathymetry ) ) + return true; + } + + return false; +} + void HYDROData_Zone::SetMergeType( const MergeBathymetriesType& theType ) { Handle(TDataStd_Integer) anInt; - if ( !myLab.FindChild( DataTag_MergeType ).FindAttribute( TDataStd_Integer::GetID(), anInt ) ) - anInt = TDataStd_Integer::Set( myLab, 0 ); - anInt->Set( (int)theType ); + if ( myLab.FindChild( DataTag_MergeType ).FindAttribute( TDataStd_Integer::GetID(), anInt ) ) + { + anInt->Set( (int)theType ); + } + else + { + anInt = TDataStd_Integer::Set( myLab.FindChild( DataTag_MergeType ), (int)theType ); + } } HYDROData_Zone::MergeBathymetriesType HYDROData_Zone::GetMergeType() const