X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_ImmersibleZone.cxx;h=f3f8e386c1411421f6187d30494f19c1b5539e94;hb=31500f5502df7fc9d0f6e47d58412967b252454c;hp=8382e12ac270dd00363928312ac52e00084a68e3;hpb=6de789f19102efda830e0b3f3e95af04922e4fda;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_ImmersibleZone.cxx b/src/HYDROData/HYDROData_ImmersibleZone.cxx index 8382e12a..f3f8e386 100644 --- a/src/HYDROData/HYDROData_ImmersibleZone.cxx +++ b/src/HYDROData/HYDROData_ImmersibleZone.cxx @@ -24,7 +24,7 @@ #include "HYDROData_PolylineXY.h" #include "HYDROData_ShapesTool.h" -#include +#include #include #include @@ -32,24 +32,28 @@ #include #include #include +#include -#include -#include -#include #include +#include + #include #include +#define DEB_IMZ +#include +//#define _DEVDEBUG_ +#include "HYDRO_trace.hxx" + //#define HYDRODATA_IMZONE_DEB 1 -IMPLEMENT_STANDARD_HANDLE(HYDROData_ImmersibleZone,HYDROData_NaturalObject) IMPLEMENT_STANDARD_RTTIEXT(HYDROData_ImmersibleZone,HYDROData_NaturalObject) HYDROData_ImmersibleZone::HYDROData_ImmersibleZone() -: HYDROData_NaturalObject() +: HYDROData_NaturalObject( Geom_2d ) { } @@ -57,21 +61,27 @@ HYDROData_ImmersibleZone::~HYDROData_ImmersibleZone() { } -QStringList HYDROData_ImmersibleZone::DumpToPython( MapOfTreatedObjects& theTreatedObjects ) const +QStringList HYDROData_ImmersibleZone::DumpToPython( const QString& thePyScriptPath, + MapOfTreatedObjects& theTreatedObjects ) const { QStringList aResList = dumpObjectCreation( theTreatedObjects ); QString aZoneName = GetObjPyName(); Handle(HYDROData_IAltitudeObject) aRefAltitude = GetAltitudeObject(); - setPythonReferenceObject( theTreatedObjects, aResList, aRefAltitude, "SetAltitudeObject" ); + setPythonReferenceObject( thePyScriptPath, theTreatedObjects, aResList, aRefAltitude, "SetAltitudeObject" ); Handle(HYDROData_PolylineXY) aRefPolyline = GetPolyline(); - setPythonReferenceObject( theTreatedObjects, aResList, aRefPolyline, "SetPolyline" ); + setPythonReferenceObject( thePyScriptPath, theTreatedObjects, aResList, aRefPolyline, "SetPolyline" ); + + if (!this->IsSubmersible()) + { + aResList << QString( "%1.SetIsSubmersible(False)" ).arg( aZoneName ); + } aResList << QString( "" ); - aResList << QString( "%1.Update();" ).arg( aZoneName ); + aResList << QString( "%1.Update()" ).arg( aZoneName ); aResList << QString( "" ); return aResList; @@ -88,15 +98,11 @@ HYDROData_SequenceOfObjects HYDROData_ImmersibleZone::GetAllReferenceObjects() c return aResSeq; } -TopoDS_Shape HYDROData_ImmersibleZone::GetTopShape() const -{ - return getTopShape(); -} - void HYDROData_ImmersibleZone::Update() { HYDROData_NaturalObject::Update(); + RemoveGroupObjects(); TopoDS_Shape aResShape = generateTopShape(); SetTopShape( aResShape ); @@ -115,71 +121,7 @@ TopoDS_Shape HYDROData_ImmersibleZone::generateTopShape() const TopoDS_Shape HYDROData_ImmersibleZone::generateTopShape( const Handle(HYDROData_PolylineXY)& aPolyline ) { - TopoDS_Face aResultFace = TopoDS_Face(); - - if( !aPolyline.IsNull() ) - { - TopoDS_Shape aPolylineShape = aPolyline->GetShape(); - TopTools_ListOfShape aWiresList; - - if ( !aPolylineShape.IsNull() && - aPolylineShape.ShapeType() == TopAbs_WIRE ) { - const TopoDS_Wire& aPolylineWire = TopoDS::Wire( aPolylineShape ); - if ( !aPolylineWire.IsNull() ) { - BRepBuilderAPI_MakeFace aMakeFace( aPolylineWire, Standard_True ); - aMakeFace.Build(); - if( aMakeFace.IsDone() ) { - aResultFace = aMakeFace.Face(); - } - } - } else { - TopExp_Explorer anExp( aPolylineShape, TopAbs_WIRE ); - for ( ; anExp.More(); anExp.Next() ) { - if(!anExp.Current().IsNull()) { - const TopoDS_Wire& aWire = TopoDS::Wire( anExp.Current() ); - aWiresList.Append( aWire ); - } - } - if(aWiresList.IsEmpty()) - return aResultFace; - - BRepAlgo_FaceRestrictor aFR; - TopoDS_Face aRefFace; - TopoDS_Shape aS = aWiresList.First(); - BRepBuilderAPI_MakeFace aMakeFace( TopoDS::Wire(aWiresList.First()), Standard_True ); - aMakeFace.Build(); - if( aMakeFace.IsDone() ) { - aRefFace = aMakeFace.Face(); - } - if(aRefFace.IsNull()) - return aResultFace; - - aFR.Init(aRefFace,Standard_False, Standard_True); - TopTools_ListIteratorOfListOfShape anIt( aWiresList ); - for ( ; anIt.More(); anIt.Next() ) { - TopoDS_Wire& aWire = TopoDS::Wire( anIt.Value() ); - if ( aWire.IsNull() ) - continue; - aFR.Add(aWire); - } - aFR.Perform(); - if (aFR.IsDone()) { - for (; aFR.More(); aFR.Next()) { - aResultFace = aFR.Current(); - break; - } - } - } - } - - if( aResultFace.IsNull() ) - return aResultFace; - - BRepCheck_Analyzer anAnalyzer( aResultFace ); - if( anAnalyzer.IsValid() && aResultFace.ShapeType()==TopAbs_FACE ) - return aResultFace; - else - return TopoDS_Face(); + return HYDROData_Tool::PolyXY2Face(aPolyline); } void HYDROData_ImmersibleZone::createGroupObjects() @@ -236,36 +178,26 @@ void HYDROData_ImmersibleZone::createGroupObjects() TopoDS_Shape HYDROData_ImmersibleZone::GetShape3D() const { - return getTopShape(); + return GetTopShape(); } -QColor HYDROData_ImmersibleZone::DefaultFillingColor() +QColor HYDROData_ImmersibleZone::DefaultFillingColor() const { return QColor( Qt::darkBlue ); } -QColor HYDROData_ImmersibleZone::DefaultBorderColor() +QColor HYDROData_ImmersibleZone::DefaultBorderColor() const { return QColor( Qt::transparent ); } -QColor HYDROData_ImmersibleZone::getDefaultFillingColor() const -{ - return DefaultFillingColor(); -} - -QColor HYDROData_ImmersibleZone::getDefaultBorderColor() const -{ - return DefaultBorderColor(); -} - void HYDROData_ImmersibleZone::SetPolyline( const Handle(HYDROData_PolylineXY)& thePolyline ) { if( IsEqual( GetPolyline(), thePolyline ) ) return; SetReferenceObject( thePolyline, DataTag_Polyline ); - SetToUpdate( true ); + Changed( Geom_2d ); } Handle(HYDROData_PolylineXY) HYDROData_ImmersibleZone::GetPolyline() const @@ -277,7 +209,5 @@ Handle(HYDROData_PolylineXY) HYDROData_ImmersibleZone::GetPolyline() const void HYDROData_ImmersibleZone::RemovePolyline() { ClearReferenceObjects( DataTag_Polyline ); - SetToUpdate( true ); + Changed( Geom_2d ); } - -