X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_ImmersibleZoneOp.cxx;h=d59e7d102cbc9e29ab4cf17f422638fefe028469;hb=a1431f03eac1d1aed4203d0568d987c41ce939b3;hp=ecf6b2836e40ca5ef1e841bbde1ffe0f7c62fef8;hpb=90d1e986c0e567fe8892f11e0532ec6cf40a5b8b;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_ImmersibleZoneOp.cxx b/src/HYDROGUI/HYDROGUI_ImmersibleZoneOp.cxx index ecf6b283..d59e7d10 100644 --- a/src/HYDROGUI/HYDROGUI_ImmersibleZoneOp.cxx +++ b/src/HYDROGUI/HYDROGUI_ImmersibleZoneOp.cxx @@ -31,7 +31,7 @@ #include #include -#include +#include #include #include @@ -71,8 +71,6 @@ void HYDROGUI_ImmersibleZoneOp::startOperation() QString anObjectName = HYDROGUI_Tool::GenerateObjectName( module(), tr( "DEFAULT_IMMERSIBLE_ZONE_NAME" ) ); - QColor aFillingColor( HYDROData_ImmersibleZone::DefaultFillingColor() ); - QColor aBorderColor( HYDROData_ImmersibleZone::DefaultBorderColor() ); QString aSelectedPolyline, aSelectedBathymetry; QStringList aSelectedBathymetries; @@ -83,28 +81,25 @@ void HYDROGUI_ImmersibleZoneOp::startOperation() { anObjectName = myEditedObject->GetName(); - aFillingColor = myEditedObject->GetFillingColor(); - aBorderColor = myEditedObject->GetBorderColor(); - - Handle(HYDROData_Polyline) aRefPolyline = myEditedObject->GetPolyline(); + Handle(HYDROData_PolylineXY) aRefPolyline = myEditedObject->GetPolyline(); if ( !aRefPolyline.IsNull() ) aSelectedPolyline = aRefPolyline->GetName(); - Handle(HYDROData_Bathymetry) aRefBathymetry = myEditedObject->GetBathymetry(); - if ( !aRefBathymetry.IsNull() ) - aSelectedBathymetry = aRefBathymetry->GetName(); + Handle(HYDROData_IAltitudeObject) aRefAltitude = myEditedObject->GetAltitudeObject(); + if ( !aRefAltitude.IsNull() ) + aSelectedBathymetry = aRefAltitude->GetName(); } } // collect information about existing closed polylines QStringList aPolylines; - HYDROData_Iterator anIter( doc(), KIND_POLYLINE ); + HYDROData_Iterator anIter( doc(), KIND_POLYLINEXY ); for ( ; anIter.More(); anIter.Next() ) { - Handle(HYDROData_Polyline) aPolylineObj = - Handle(HYDROData_Polyline)::DownCast( anIter.Current() ); - if ( aPolylineObj.IsNull() || !aPolylineObj->IsClosed() ) + Handle(HYDROData_PolylineXY) aPolylineObj = + Handle(HYDROData_PolylineXY)::DownCast( anIter.Current() ); + if ( aPolylineObj.IsNull() )//TODO: || !aPolylineObj->IsClosed() ) continue; QString aPolylineName = aPolylineObj->GetName(); @@ -190,19 +185,14 @@ bool HYDROGUI_ImmersibleZoneOp::processApply( int& theUpdateFlags, } } - Handle(HYDROData_ImmersibleZone) aZoneObj = myIsEdit ? myEditedObject : - Handle(HYDROData_ImmersibleZone)::DownCast( doc()->CreateObject( KIND_IMMERSIBLE_ZONE ) ); - if ( aZoneObj.IsNull() ) - return false; - - Handle(HYDROData_Polyline) aZonePolyline; + Handle(HYDROData_PolylineXY) aZonePolyline; Handle(HYDROData_Bathymetry) aZoneBathymetry; QString aPolylineName = aPanel->getPolylineName(); if ( !aPolylineName.isEmpty() ) { - aZonePolyline = Handle(HYDROData_Polyline)::DownCast( - HYDROGUI_Tool::FindObjectByName( module(), aPolylineName, KIND_POLYLINE ) ); + aZonePolyline = Handle(HYDROData_PolylineXY)::DownCast( + HYDROGUI_Tool::FindObjectByName( module(), aPolylineName, KIND_POLYLINEXY ) ); } QString aBathymetryName = aPanel->getBathymetryName(); @@ -212,22 +202,36 @@ bool HYDROGUI_ImmersibleZoneOp::processApply( int& theUpdateFlags, HYDROGUI_Tool::FindObjectByName( module(), aBathymetryName, KIND_BATHYMETRY ) ); } + + if ( HYDROData_ImmersibleZone::generateTopShape( aZonePolyline ).IsNull() ) + { + theErrorMsg = tr( "ZONE_OBJECT_CANNOT_BE_CREATED" ); + return false; + } + + Handle(HYDROData_ImmersibleZone) aZoneObj = myIsEdit ? myEditedObject : + Handle(HYDROData_ImmersibleZone)::DownCast( doc()->CreateObject( KIND_IMMERSIBLE_ZONE ) ); + aZoneObj->SetName( anObjectName ); - if ( !myIsEdit ) { + if ( !myIsEdit ) + { aZoneObj->SetFillingColor( HYDROData_ImmersibleZone::DefaultFillingColor() ); aZoneObj->SetBorderColor( HYDROData_ImmersibleZone::DefaultBorderColor() ); } aZoneObj->SetPolyline( aZonePolyline ); - aZoneObj->SetBathymetry( aZoneBathymetry ); + aZoneObj->SetAltitudeObject( aZoneBathymetry ); + aZoneObj->Update(); closePreview(); if( !myIsEdit ) module()->setObjectVisible( HYDROGUI_Tool::GetActiveOCCViewId( module() ), aZoneObj, true ); - theUpdateFlags = UF_Model | UF_OCCViewer | UF_OCC_Forced; + module()->setIsToUpdate( aZoneObj ); + + theUpdateFlags = UF_Model | UF_OCCViewer | UF_OCC_Forced | UF_VTKViewer; return true; } @@ -238,17 +242,13 @@ void HYDROGUI_ImmersibleZoneOp::onCreatePreview( const QString& thePolylineName if ( !aPanel ) return; - TopoDS_Wire aWire; - TopoDS_Shape aShape; + TopoDS_Shape aZoneShape; - Handle(HYDROData_Polyline) aPolyline = Handle(HYDROData_Polyline)::DownCast( - HYDROGUI_Tool::FindObjectByName( module(), thePolylineName, KIND_POLYLINE ) ); + Handle(HYDROData_PolylineXY) aPolyline = Handle(HYDROData_PolylineXY)::DownCast( + HYDROGUI_Tool::FindObjectByName( module(), thePolylineName, KIND_POLYLINEXY ) ); if ( !aPolyline.IsNull() ) { - aShape = aPolyline->GetTopShape(); - if ( aShape.ShapeType() == TopAbs_WIRE ) { - aWire = TopoDS::Wire( aShape ); - } + aZoneShape = HYDROData_ImmersibleZone::generateTopShape( aPolyline ); } LightApp_Application* anApp = module()->getApp(); @@ -278,14 +278,10 @@ void HYDROGUI_ImmersibleZoneOp::onCreatePreview( const QString& thePolylineName myPreviewPrs->setFillingColor( aFillingColor, false, false ); myPreviewPrs->setBorderColor( aBorderColor, false, false ); - if ( !aWire.IsNull() ) { - myPreviewPrs->setFace( aWire ); - } else if ( !aShape.IsNull() && aShape.ShapeType() == TopAbs_COMPOUND ) { - TopoDS_Compound aCompound = TopoDS::Compound( aShape ); - if ( !aCompound.IsNull() ) { - myPreviewPrs->setFaces( aCompound ); - } - } + TopoDS_Face aFace; + if( !aZoneShape.IsNull() ) + aFace = TopoDS::Face( aZoneShape ); + myPreviewPrs->setFace( aFace ); } void HYDROGUI_ImmersibleZoneOp::closePreview()