X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_Channel.cxx;h=2159ce7f9d5fbf17a67657ee9045538536b851b7;hb=3b6027a83768bb776f6577b84c31c860fdb83505;hp=3aab98b5ac6ea61db8394bc8904aa6fbefc5ddab;hpb=34310fe4f26db0f23c2edfef1678e5b02f578204;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_Channel.cxx b/src/HYDROData/HYDROData_Channel.cxx index 3aab98b5..2159ce7f 100644 --- a/src/HYDROData/HYDROData_Channel.cxx +++ b/src/HYDROData/HYDROData_Channel.cxx @@ -4,13 +4,31 @@ #include "HYDROData_Document.h" #include "HYDROData_Polyline3D.h" #include "HYDROData_Profile.h" +#include "HYDROData_PolylineXY.h" +#include "HYDROData_Projection.h" +#include "HYDROData_ShapesGroup.h" +#include "HYDROData_ShapesTool.h" +#include "HYDROData_Pipes.h" + +#include +#include +#include +#include + +#include #include #include +#include +#include -#include +//#define DEB_CHANNEL 1 +#ifdef DEB_CHANNEL +#include +#endif -#define PYTHON_CHANNEL_ID "KIND_CHANNEL" +#include +#include IMPLEMENT_STANDARD_HANDLE(HYDROData_Channel,HYDROData_ArtificialObject) IMPLEMENT_STANDARD_RTTIEXT(HYDROData_Channel,HYDROData_ArtificialObject) @@ -27,22 +45,18 @@ HYDROData_Channel::~HYDROData_Channel() QStringList HYDROData_Channel::DumpToPython( MapOfTreatedObjects& theTreatedObjects ) const { - QStringList aResList; + QStringList aResList = dumpObjectCreation( theTreatedObjects ); + QString aName = GetObjPyName(); - Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( myLab ); - if ( aDocument.IsNull() ) - return aResList; + Handle(HYDROData_Polyline3D) aRefGideLine = GetGuideLine(); + setPythonReferenceObject( theTreatedObjects, aResList, aRefGideLine, "SetGuideLine" ); - QString aDocName = aDocument->GetDocPyName(); - QString aChannelName = GetName(); + Handle(HYDROData_Profile) aRefProfile = GetProfile(); + setPythonReferenceObject( theTreatedObjects, aResList, aRefProfile, "SetProfile" ); - aResList << QString( "%1 = %2.CreateObject( %3 );" ) - .arg( aChannelName ).arg( aDocName ).arg( PYTHON_CHANNEL_ID ); - aResList << QString( "%1.SetName( \"%2\" );" ) - .arg( aChannelName ).arg( aChannelName ); aResList << QString( "" ); - - // TODO + aResList << QString( "%1.Update();" ).arg( aName ); + aResList << QString( "" ); return aResList; } @@ -81,7 +95,89 @@ void HYDROData_Channel::Update() if ( aGuideLine.IsNull() || aProfile.IsNull() ) return; - // TODO + // build 3d shape + TopoDS_Wire aPathWire = TopoDS::Wire(aGuideLine->GetShape3D()); + if(aPathWire.IsNull()) + return; + TopoDS_Wire aProfileWire = TopoDS::Wire( aProfile->GetShape3D() ); + if(aProfileWire.IsNull()) + return; + + BRepTools::Write( aPathWire, "guideline.brep" ); + BRepTools::Write( aProfileWire, "profile.brep" ); + + HYDROData_Canal3dAnd2d aChannelConstructor( aProfileWire, aPathWire ); + aChannelConstructor.Create3dPresentation(); + aChannelConstructor.Create2dPresentation(); + SetShape3D( aChannelConstructor.Get3dPresentation() ); + SetTopShape( aChannelConstructor.Get2dPresentation() ); + + BRepTools::Write( aChannelConstructor.Get2dPresentation(), "channel2d.brep" ); + BRepTools::Write( aChannelConstructor.Get3dPresentation(), "channel3d.brep" ); + + TopAbs_ShapeEnum aType = GetTopShape().ShapeType(); + + // Create groups for channel + TopoDS_Wire aLeftBank = aChannelConstructor.GetLeftBank(); + TopoDS_Wire aRightBank = aChannelConstructor.GetRightBank(); + TopoDS_Wire anInlet = aChannelConstructor.GetInlet(); + TopoDS_Wire anOutlet = aChannelConstructor.GetOutlet(); + + TopTools_SequenceOfShape aLeftBankEdges; + HYDROData_ShapesTool::ExploreShapeToShapes( aLeftBank, TopAbs_EDGE, aLeftBankEdges ); + + TopTools_SequenceOfShape aRightBankEdges; + HYDROData_ShapesTool::ExploreShapeToShapes( aRightBank, TopAbs_EDGE, aRightBankEdges ); + + TopTools_SequenceOfShape anInletEdges; + HYDROData_ShapesTool::ExploreShapeToShapes( anInlet, TopAbs_EDGE, anInletEdges ); + + TopTools_SequenceOfShape anOutletEdges; + HYDROData_ShapesTool::ExploreShapeToShapes( anOutlet, TopAbs_EDGE, anOutletEdges ); + + QString aLeftGroupName = GetName() + "_Left_Bank"; + + Handle(HYDROData_ShapesGroup) aLeftGroup = createGroupObject(); + aLeftGroup->SetName( aLeftGroupName ); + aLeftGroup->SetShapes( aLeftBankEdges ); + + QString aRightGroupName = GetName() + "_Right_Bank"; + + Handle(HYDROData_ShapesGroup) aRightGroup = createGroupObject(); + aRightGroup->SetName( aRightGroupName ); + aRightGroup->SetShapes( aRightBankEdges ); + + QString anInGroupName = GetName() + "_Inlet"; + + Handle(HYDROData_ShapesGroup) anInGroup = createGroupObject(); + anInGroup->SetName( anInGroupName ); + anInGroup->SetShapes( anInletEdges ); + + QString anOutGroupName = GetName() + "_Outlet"; + + Handle(HYDROData_ShapesGroup) anOutGroup = createGroupObject(); + anOutGroup->SetName( anOutGroupName ); + anOutGroup->SetShapes( anOutletEdges ); +} + +QColor HYDROData_Channel::DefaultFillingColor() +{ + return QColor( Qt::blue ); +} + +QColor HYDROData_Channel::DefaultBorderColor() +{ + return QColor( Qt::transparent ); +} + +QColor HYDROData_Channel::getDefaultFillingColor() const +{ + return DefaultFillingColor(); +} + +QColor HYDROData_Channel::getDefaultBorderColor() const +{ + return DefaultBorderColor(); } bool HYDROData_Channel::SetGuideLine( const Handle(HYDROData_Polyline3D)& theGuideLine ) @@ -165,3 +261,9 @@ void HYDROData_Channel::RemoveProfile() // Indicate model of the need to update the chanel presentation SetToUpdate( true ); } + +ObjectKind HYDROData_Channel::getAltitudeObjectType() const +{ + return KIND_OBSTACLE_ALTITUDE; +} +