X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_ImmersibleZone.cxx;h=c31dac1161c812757e326e82a4bd5052674bcc0b;hb=deed826b2d6c39ba2ed410108cdf54d64cded321;hp=286cbaa39a9df099166b418d0d2221189f2f7acb;hpb=0d9decc8762a829f1bdc69048fab08122e441ec0;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_ImmersibleZone.cxx b/src/HYDROData/HYDROData_ImmersibleZone.cxx index 286cbaa3..c31dac11 100644 --- a/src/HYDROData/HYDROData_ImmersibleZone.cxx +++ b/src/HYDROData/HYDROData_ImmersibleZone.cxx @@ -10,6 +10,10 @@ #include #include #include +#include +#include +#include +#include #include #include @@ -33,7 +37,7 @@ QStringList HYDROData_ImmersibleZone::DumpToPython( MapOfTreatedObjects& theTrea { QStringList aResList; - Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( this ); + Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( myLab ); if ( aDocument.IsNull() ) return aResList; @@ -71,19 +75,54 @@ QStringList HYDROData_ImmersibleZone::DumpToPython( MapOfTreatedObjects& theTrea TopoDS_Shape HYDROData_ImmersibleZone::GetTopShape() const { + TopoDS_Shape aResShape = TopoDS_Face(); + Handle(HYDROData_Polyline) aPolyline = GetPolyline(); if( !aPolyline.IsNull() ) { - TopoDS_Wire aPolylineWire = TopoDS::Wire( aPolyline->GetTopShape() ); - if( !aPolylineWire.IsNull() ) - { - BRepBuilderAPI_MakeFace aMakeFace( aPolylineWire, Standard_True ); + TopoDS_Shape aPolylineShape = aPolyline->GetTopShape(); + TopTools_ListOfShape aWiresList; + + if ( !aPolylineShape.IsNull() && + aPolylineShape.ShapeType() == TopAbs_WIRE ) { + TopoDS_Wire aPolylineWire = TopoDS::Wire( aPolylineShape ); + if ( !aPolylineWire.IsNull() ) { + BRepBuilderAPI_MakeFace aMakeFace( aPolylineWire, Standard_True ); + aMakeFace.Build(); + if( aMakeFace.IsDone() ) { + return aMakeFace.Face(); + } + } + } else { + TopExp_Explorer anExp( aPolylineShape, TopAbs_WIRE ); + for ( ; anExp.More(); anExp.Next() ) { + TopoDS_Wire aWire = TopoDS::Wire( anExp.Current() ); + aWiresList.Append( aWire ); + } + } + + TopoDS_Compound aCompound; + BRep_Builder aBuilder; + aBuilder.MakeCompound( aCompound ); + + TopTools_ListIteratorOfListOfShape anIter( aWiresList ); + for ( ; anIter.More(); anIter.Next() ) { + TopoDS_Wire aWire = TopoDS::Wire( anIter.Value() ); + if ( aWire.IsNull() ) { + continue; + } + + BRepBuilderAPI_MakeFace aMakeFace( aWire, Standard_True ); aMakeFace.Build(); - if( aMakeFace.IsDone() ) - return aMakeFace.Face(); + if( aMakeFace.IsDone() ) { + aBuilder.Add( aCompound, aMakeFace.Face() ); + } } + + aResShape = aCompound; } - return TopoDS_Face(); + + return aResShape; } TopoDS_Shape HYDROData_ImmersibleZone::GetShape3D() const @@ -97,31 +136,11 @@ QColor HYDROData_ImmersibleZone::DefaultFillingColor() return QColor( Qt::green ); } -void HYDROData_ImmersibleZone::SetFillingColor( const QColor& theColor ) -{ - return SetColor( theColor, DataTag_FillingColor ); -} - -QColor HYDROData_ImmersibleZone::GetFillingColor() const -{ - return GetColor( DefaultFillingColor(), DataTag_FillingColor ); -} - QColor HYDROData_ImmersibleZone::DefaultBorderColor() { return QColor( Qt::transparent ); } -void HYDROData_ImmersibleZone::SetBorderColor( const QColor& theColor ) -{ - return SetColor( theColor, DataTag_BorderColor ); -} - -QColor HYDROData_ImmersibleZone::GetBorderColor() const -{ - return GetColor( DefaultBorderColor(), DataTag_BorderColor ); -} - void HYDROData_ImmersibleZone::SetPolyline( const Handle(HYDROData_Polyline)& thePolyline ) { SetReferenceObject( thePolyline, DataTag_Polyline ); @@ -138,20 +157,4 @@ void HYDROData_ImmersibleZone::RemovePolyline() ClearReferenceObjects( DataTag_Polyline ); } -void HYDROData_ImmersibleZone::SetBathymetry( const Handle(HYDROData_Bathymetry)& theBathymetry ) -{ - SetReferenceObject( theBathymetry, DataTag_Bathymetry ); -} - -Handle(HYDROData_Bathymetry) HYDROData_ImmersibleZone::GetBathymetry() const -{ - return Handle(HYDROData_Bathymetry)::DownCast( - GetReferenceObject( DataTag_Bathymetry ) ); -} - -void HYDROData_ImmersibleZone::RemoveBathymetry() -{ - ClearReferenceObjects( DataTag_Bathymetry ); -} -