X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_PolylineExtractionOp.cxx;h=76519f492c44734265b4c9c4e028af3c5ca30e42;hb=6ba63abdcb5832a1773cb33cf67d6b34aee4139d;hp=4a758cf0b46c3ce9bc1c3f7328bf3b5a0b6d9e16;hpb=6f6d31e902b53b4fb66624121d0f723fd67d85f8;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_PolylineExtractionOp.cxx b/src/HYDROGUI/HYDROGUI_PolylineExtractionOp.cxx index 4a758cf0..76519f49 100644 --- a/src/HYDROGUI/HYDROGUI_PolylineExtractionOp.cxx +++ b/src/HYDROGUI/HYDROGUI_PolylineExtractionOp.cxx @@ -16,27 +16,12 @@ // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // -#include "HYDROGUI_PolylineExtractionOp.h" - -#include - -#include "HYDROGUI_Module.h" -#include "HYDROGUI_Operations.h" -#include "HYDROGUI_Tool.h" -#include "HYDROGUI_UpdateFlags.h" - -#include +#include +#include +#include +#include #include -#include -#include - -#include -#include - -#include -#include - -#include +#include HYDROGUI_PolylineExtractionOp::HYDROGUI_PolylineExtractionOp( HYDROGUI_Module* theModule ) : HYDROGUI_Operation( theModule ) @@ -59,123 +44,16 @@ void HYDROGUI_PolylineExtractionOp::startOperation() if ( aSeq.IsEmpty() ) return; + startDocOperation(); + HYDROData_PolylineOperator anOp; for ( Standard_Integer anIndex = 1, aLength = aSeq.Length(); anIndex <= aLength; anIndex++ ) { - Handle(HYDROData_Entity) anObject = aSeq.Value( anIndex ); - if ( anObject.IsNull() ) - continue; - - ShapeMap aMap; - - switch ( anObject->GetKind() ) - { - case KIND_STREAM: - aMap = extract( Handle(HYDROData_Stream)::DownCast( anObject ) ); - break; - case KIND_DIGUE: - case KIND_CHANNEL: - aMap = extract( Handle(HYDROData_Channel)::DownCast( anObject ) ); - break; - case KIND_OBSTACLE: - aMap = extract( Handle(HYDROData_Obstacle)::DownCast( anObject ) ); - break; - } - - startDocOperation(); - - for ( ShapeMap::Iterator it( aMap ); it.More(); it.Next() ) - { - TopoDS_Shape aLine = it.Key(); - QString aName = QString( "%1_%2" ).arg( anObject->GetName() ).arg( it.Value() ); - if ( !HYDROGUI_Tool::FindObjectByName( aModule, aName ).IsNull() ) - { - int num = 1; - while ( !HYDROGUI_Tool::FindObjectByName( aModule, aName + QString( "_%1" ).arg( num ) ).IsNull() ) - num++; - - aName += QString( "_%1" ).arg( num ); - } - - Handle(HYDROData_PolylineXY) aPolylineObj = Handle(HYDROData_PolylineXY)::DownCast( doc()->CreateObject( KIND_POLYLINEXY ) ); - if ( !aPolylineObj.IsNull() ) - { - aPolylineObj->SetName( aName ); - aPolylineObj->ImportShape( aLine ); - aPolylineObj->Update(); - } - } - - commitDocOperation(); + Handle(HYDROData_Object) anObject = Handle(HYDROData_Object)::DownCast( aSeq.Value( anIndex ) ); + if( !anObject.IsNull() ) + anOp.Extract( doc(), anObject ); } + commitDocOperation(); aModule->update( anUpdateFlags ); - commit(); } - -HYDROGUI_PolylineExtractionOp::ShapeMap HYDROGUI_PolylineExtractionOp::extract( const Handle(HYDROData_Stream)& theStream ) -{ - ShapeMap aMap; - if ( !theStream.IsNull() ) - { - aMap.Bind( theStream->GetLeftShape(), "Left bank" ); - aMap.Bind( theStream->GetRightShape(), "Right bank" ); - - HYDROData_SequenceOfObjects aProfiles = theStream->GetProfiles(); - for ( int i = 1; i <= aProfiles.Length(); i++ ) - { - Handle(HYDROData_Profile) aProfile = Handle(HYDROData_Profile)::DownCast( aProfiles.Value( i ) ); - aMap.Bind( aProfile->GetTopShape(), aProfile->GetName() ); - } - } - return aMap; -} - -HYDROGUI_PolylineExtractionOp::ShapeMap HYDROGUI_PolylineExtractionOp::extract( const Handle(HYDROData_Channel)& aChannel ) -{ - ShapeMap aMap; - if ( !aChannel.IsNull() ) - { - HYDROData_SequenceOfObjects aGroups = aChannel->GetGroups(); - int aNum = qMin( aGroups.Length(), 2 ); - for ( int i = 1; i <= aNum; i++ ) - { - Handle(HYDROData_ShapesGroup) aGroup = Handle(HYDROData_ShapesGroup)::DownCast( aGroups.Value( i ) ); - TopTools_SequenceOfShape aShapes; - aGroup->GetShapes( aShapes ); - if ( !aShapes.IsEmpty() ) - { - TopoDS_Wire aWire; - BRep_Builder aBuilder; - aBuilder.MakeWire( aWire ); - - for ( int s = 1; s <= aShapes.Length(); s++ ) - aBuilder.Add( aWire, aShapes.Value( s ) ); - aMap.Bind( aWire, i > 1 ? "Right bank" : "Left bank" ); - } - } - } - return aMap; -} - -HYDROGUI_PolylineExtractionOp::ShapeMap HYDROGUI_PolylineExtractionOp::extract( const Handle(HYDROData_Obstacle)& theObstacle ) -{ - ShapeMap aMap; - if ( !theObstacle.IsNull() ) - { - TopoDS_Wire aWire; - BRep_Builder aBuilder; - aBuilder.MakeWire( aWire ); - HYDROData_SequenceOfObjects aGroups = theObstacle->GetGroups(); - for ( int i = 1; i <= aGroups.Length(); i++ ) - { - Handle(HYDROData_ShapesGroup) aGroup = Handle(HYDROData_ShapesGroup)::DownCast( aGroups.Value( i ) ); - TopTools_SequenceOfShape aShapes; - aGroup->GetShapes( aShapes ); - for ( int s = 1; s <= aShapes.Length(); s++ ) - aBuilder.Add( aWire, aShapes.Value( s ) ); - } - aMap.Bind( aWire, "Contour" ); - } - return aMap; -}