X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_CalculationCase.cxx;h=198222ab62a76428d734c9c6163ba39374c9eb0f;hb=5617222a44e709aa05f81f868300462d8a6b30b2;hp=3e6eca6a46c42a9e299b36d8730efcadef9819c4;hpb=e34fca9c7cb345a9849298cd0f9a2c21808522fd;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_CalculationCase.cxx b/src/HYDROData/HYDROData_CalculationCase.cxx index 3e6eca6a..198222ab 100644 --- a/src/HYDROData/HYDROData_CalculationCase.cxx +++ b/src/HYDROData/HYDROData_CalculationCase.cxx @@ -2,7 +2,7 @@ #include "HYDROData_CalculationCase.h" #include "HYDROData_ArtificialObject.h" -#include "HYDROData_Bathymetry.h" +#include "HYDROData_IAltitudeObject.h" #include "HYDROData_Document.h" #include "HYDROData_ShapesGroup.h" #include "HYDROData_Iterator.h" @@ -70,12 +70,7 @@ void HYDROData_CalculationCase::SetName( const QString& theName ) if ( aRegion.IsNull() ) continue; - QString aRegionName = aRegion->GetName(); - if ( aRegionName.startsWith( anOldCaseName ) ) - { - aRegionName.replace( anOldCaseName, theName ); - aRegion->SetName( aRegionName ); - } + HYDROData_Tool::UpdateChildObjectName( anOldCaseName, theName, aRegion ); HYDROData_SequenceOfObjects aZones = aRegion->GetZones(); HYDROData_SequenceOfObjects::Iterator anIter( aZones ); @@ -86,12 +81,7 @@ void HYDROData_CalculationCase::SetName( const QString& theName ) if ( aRegZone.IsNull() ) continue; - QString aRegionZoneName = aRegZone->GetName(); - if ( aRegionZoneName.startsWith( anOldCaseName ) ) - { - aRegionZoneName.replace( anOldCaseName, theName ); - aRegZone->SetName( aRegionZoneName ); - } + HYDROData_Tool::UpdateChildObjectName( anOldCaseName, theName, aRegZone ); } } @@ -105,12 +95,7 @@ void HYDROData_CalculationCase::SetName( const QString& theName ) if ( aGroup.IsNull() ) continue; - QString aGroupName = aGroup->GetName(); - if ( aGroupName.startsWith( anOldCaseName ) ) - { - aGroupName.replace( anOldCaseName, theName ); - aGroup->SetName( aGroupName ); - } + HYDROData_Tool::UpdateChildObjectName( anOldCaseName, theName, aGroup ); } } @@ -501,13 +486,13 @@ void HYDROData_CalculationCase::RemoveSplittedGroups() double HYDROData_CalculationCase::GetAltitudeForPoint( const gp_XY& thePoint ) const { - double aResAltitude = HYDROData_Bathymetry::GetInvalidAltitude(); + double aResAltitude = HYDROData_IAltitudeObject::GetInvalidAltitude(); Handle(HYDROData_Zone) aZone = GetZoneFromPoint( thePoint ); if ( aZone.IsNull() ) return aResAltitude; - HYDROData_Zone::MergeBathymetriesType aZoneMergeType = aZone->GetMergeType(); + HYDROData_Zone::MergeAltitudesType aZoneMergeType = aZone->GetMergeType(); if ( !aZone->IsMergingNeed() ) { aZoneMergeType = HYDROData_Zone::Merge_UNKNOWN; @@ -519,9 +504,9 @@ double HYDROData_CalculationCase::GetAltitudeForPoint( const gp_XY& thePoint ) c if ( aZoneMergeType == HYDROData_Zone::Merge_Object ) { - Handle(HYDROData_Bathymetry) aMergeBathymetry = aZone->GetMergeBathymetry(); - if ( !aMergeBathymetry.IsNull() ) - aResAltitude = aMergeBathymetry->GetAltitudeForPoint( thePoint ); + Handle(HYDROData_IAltitudeObject) aMergeAltitude = aZone->GetMergeAltitude(); + if ( !aMergeAltitude.IsNull() ) + aResAltitude = aMergeAltitude->GetAltitudeForPoint( thePoint ); } else { @@ -534,12 +519,12 @@ double HYDROData_CalculationCase::GetAltitudeForPoint( const gp_XY& thePoint ) c if ( aZoneObj.IsNull() ) continue; - Handle(HYDROData_Bathymetry) anObjBathymetry = aZoneObj->GetBathymetry(); - if ( anObjBathymetry.IsNull() ) + Handle(HYDROData_IAltitudeObject) anObjAltitude = aZoneObj->GetAltitudeObject(); + if ( anObjAltitude.IsNull() ) continue; - double aPointAltitude = anObjBathymetry->GetAltitudeForPoint( thePoint ); - if ( ValuesEquals( aPointAltitude, HYDROData_Bathymetry::GetInvalidAltitude() ) ) + double aPointAltitude = anObjAltitude->GetAltitudeForPoint( thePoint ); + if ( ValuesEquals( aPointAltitude, HYDROData_IAltitudeObject::GetInvalidAltitude() ) ) continue; if ( aZoneMergeType == HYDROData_Zone::Merge_UNKNOWN ) @@ -549,7 +534,7 @@ double HYDROData_CalculationCase::GetAltitudeForPoint( const gp_XY& thePoint ) c } else if ( aZoneMergeType == HYDROData_Zone::Merge_ZMIN ) { - if ( ValuesEquals( aResAltitude, HYDROData_Bathymetry::GetInvalidAltitude() ) || + if ( ValuesEquals( aResAltitude, HYDROData_IAltitudeObject::GetInvalidAltitude() ) || aResAltitude > aPointAltitude ) { aResAltitude = aPointAltitude; @@ -557,7 +542,7 @@ double HYDROData_CalculationCase::GetAltitudeForPoint( const gp_XY& thePoint ) c } else if ( aZoneMergeType == HYDROData_Zone::Merge_ZMAX ) { - if ( ValuesEquals( aResAltitude, HYDROData_Bathymetry::GetInvalidAltitude() ) || + if ( ValuesEquals( aResAltitude, HYDROData_IAltitudeObject::GetInvalidAltitude() ) || aResAltitude < aPointAltitude ) { aResAltitude = aPointAltitude; @@ -752,24 +737,27 @@ bool HYDROData_CalculationCase::Export( GEOM::GEOM_Gen_var theGeomEngine, } } - GEOM::GEOM_IGroupOperations_var aGroupOp = - theGeomEngine->GetIGroupOperations( theStudy->StudyId() ); - - foreach ( const QString& aGroupName, aGroupsData.keys() ) { - QSet aGroupIndexes = aGroupsData.value( aGroupName ); - - GEOM::GEOM_Object_var aGroup = aGroupOp->CreateGroup( aMainShape, TopAbs_EDGE ); - if ( !CORBA::is_nil(aGroup) && aGroupOp->IsDone() ) { - GEOM::ListOfLong_var anIndexes = new GEOM::ListOfLong; - int aListIndex = 0; - foreach ( const int anIndex, aGroupIndexes ) { - anIndexes[aListIndex++] = anIndex; - } + if ( !aGroupsData.isEmpty() ) { + GEOM::GEOM_IGroupOperations_var aGroupOp = + theGeomEngine->GetIGroupOperations( theStudy->StudyId() ); + + foreach ( const QString& aGroupName, aGroupsData.keys() ) { + QSet aGroupIndexes = aGroupsData.value( aGroupName ); + + GEOM::GEOM_Object_var aGroup = aGroupOp->CreateGroup( aMainShape, TopAbs_EDGE ); + if ( !CORBA::is_nil(aGroup) && aGroupOp->IsDone() ) { + GEOM::ListOfLong_var anIndexes = new GEOM::ListOfLong; + anIndexes->length( aGroupIndexes.count() ); + int aListIndex = 0; + foreach ( const int anIndex, aGroupIndexes ) { + anIndexes[aListIndex++] = anIndex; + } - aGroupOp->UnionIDs( aGroup, anIndexes ); - if ( aGroupOp->IsDone() ) { - SALOMEDS::SObject_var aGroupSO = - theGeomEngine->AddInStudy( theStudy, aGroup, qPrintable( aName ), aMainShape ); + aGroupOp->UnionIDs( aGroup, anIndexes ); + if ( aGroupOp->IsDone() ) { + SALOMEDS::SObject_var aGroupSO = + theGeomEngine->AddInStudy( theStudy, aGroup, qPrintable( aGroupName ), aMainShape ); + } } } } @@ -810,7 +798,7 @@ GEOM::GEOM_Object_ptr HYDROData_CalculationCase::publishShapeInGEOM( SALOMEDS::SObject_var aResultSO = theGeomEngine->PublishInStudy( theStudy, SALOMEDS::SObject::_nil(), - aGeomObj, qPrintable( theName ) ); + aGeomObj, qPrintable( aName ) ); if ( aResultSO->_is_nil() ) { aGeomObj = GEOM::GEOM_Object::_nil(); }