#include "HYDROData_Bathymetry.h"
#include "HYDROData_Document.h"
-#include "HYDROData_Polyline.h"
+#include "HYDROData_PolylineXY.h"
#include <BRepBuilderAPI_MakeFace.hxx>
#include <TopoDS.hxx>
#include <TopoDS_Face.hxx>
#include <TopoDS_Wire.hxx>
+#include <TopoDS_Compound.hxx>
+#include <TopExp_Explorer.hxx>
+#include <TopTools_ListIteratorOfListOfShape.hxx>
+#include <BRep_Builder.hxx>
#include <QColor>
#include <QStringList>
Handle(HYDROData_Bathymetry) aRefBathymetry = GetBathymetry();
setPythonReferenceObject( theTreatedObjects, aResList, aRefBathymetry, "SetBathymetry" );
- Handle(HYDROData_Polyline) aRefPolyline = GetPolyline();
+ Handle(HYDROData_PolylineXY) aRefPolyline = GetPolyline();
setPythonReferenceObject( theTreatedObjects, aResList, aRefPolyline, "SetPolyline" );
return aResList;
TopoDS_Shape HYDROData_ImmersibleZone::GetTopShape() const
{
- Handle(HYDROData_Polyline) aPolyline = GetPolyline();
+ TopoDS_Shape aResShape = TopoDS_Face();
+
+ Handle(HYDROData_PolylineXY) 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->GetShape();
+ 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
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 )
+void HYDROData_ImmersibleZone::SetPolyline( const Handle(HYDROData_PolylineXY)& thePolyline )
{
SetReferenceObject( thePolyline, DataTag_Polyline );
}
-Handle(HYDROData_Polyline) HYDROData_ImmersibleZone::GetPolyline() const
+Handle(HYDROData_PolylineXY) HYDROData_ImmersibleZone::GetPolyline() const
{
- return Handle(HYDROData_Polyline)::DownCast(
+ return Handle(HYDROData_PolylineXY)::DownCast(
GetReferenceObject( DataTag_Polyline ) );
}