X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_Zone.cxx;h=fdbf91b082aad2b50bae545cf3cd9c9190f895c8;hb=deed826b2d6c39ba2ed410108cdf54d64cded321;hp=9a1ffbafe50155e46f82f4860ed5561bcb5e03ee;hpb=8538df60dfaeb61e0e44362e20d359747cdae923;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_Zone.cxx b/src/HYDROData/HYDROData_Zone.cxx index 9a1ffbaf..fdbf91b0 100644 --- a/src/HYDROData/HYDROData_Zone.cxx +++ b/src/HYDROData/HYDROData_Zone.cxx @@ -24,7 +24,6 @@ IMPLEMENT_STANDARD_RTTIEXT(HYDROData_Zone, HYDROData_Entity) HYDROData_Zone::HYDROData_Zone() : HYDROData_Entity() { - SetMergeType( Merge_ZMIN ); } HYDROData_Zone::~HYDROData_Zone() @@ -35,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; @@ -78,17 +77,52 @@ 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 { - MergeBathymetriesType aMergeType = Merge_ZMIN; + MergeBathymetriesType aMergeType = Merge_UNKNOWN; Handle(TDataStd_Integer) anInt; if ( myLab.FindChild( DataTag_MergeType ).FindAttribute( TDataStd_Integer::GetID(), anInt ) )