X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_Channel.cxx;h=b7f8c7a8a46875e95f32ab729b045ef435eb35aa;hb=81c9f5cdf82909d0aebd2c491c50fa7516cc80b7;hp=50a27326a9ab5fd4a4e4d3d897d2d9397d07dd36;hpb=8625a3b3a9a58fd133000ab1eab5e6032d0d5261;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_Channel.cxx b/src/HYDROData/HYDROData_Channel.cxx index 50a27326..b7f8c7a8 100644 --- a/src/HYDROData/HYDROData_Channel.cxx +++ b/src/HYDROData/HYDROData_Channel.cxx @@ -13,14 +13,12 @@ #include #include #include -#include #include #include #include #include -#include //#define DEB_CHANNEL 1 #ifdef DEB_CHANNEL @@ -30,8 +28,6 @@ #include #include -#define PYTHON_CHANNEL_ID "KIND_CHANNEL" - IMPLEMENT_STANDARD_HANDLE(HYDROData_Channel,HYDROData_ArtificialObject) IMPLEMENT_STANDARD_RTTIEXT(HYDROData_Channel,HYDROData_ArtificialObject) @@ -47,22 +43,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; } @@ -92,54 +84,77 @@ TopoDS_Shape HYDROData_Channel::GetShape3D() const return getShape3D(); } -void HYDROData_Channel::Update() +bool HYDROData_Channel::CreatePresentations( const Handle(HYDROData_Polyline3D)& theGuideLine, + const Handle(HYDROData_Profile)& theProfile, + PrsDefinition& thePrs ) { - HYDROData_ArtificialObject::Update(); - - Handle(HYDROData_Polyline3D) aGuideLine = GetGuideLine(); - Handle(HYDROData_Profile) aProfile = GetProfile(); - if ( aGuideLine.IsNull() || aProfile.IsNull() ) - return; + if ( theGuideLine.IsNull() || theProfile.IsNull() ) + return false; // 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; + TopoDS_Wire aPathWire = TopoDS::Wire( theGuideLine->GetShape3D() ); + TopoDS_Wire aProfileWire = TopoDS::Wire( theProfile->GetShape3D() ); + if ( aPathWire.IsNull() || aProfileWire.IsNull() ) + return false; +#ifdef DEB_CHANNEL BRepTools::Write( aPathWire, "guideline.brep" ); BRepTools::Write( aProfileWire, "profile.brep" ); +#endif HYDROData_Canal3dAnd2d aChannelConstructor( aProfileWire, aPathWire ); + if( aChannelConstructor.GetStatus() != 0 ) + return false; + aChannelConstructor.Create3dPresentation(); aChannelConstructor.Create2dPresentation(); - SetShape3D( aChannelConstructor.Get3dPresentation() ); - SetTopShape( aChannelConstructor.Get2dPresentation() ); + thePrs.myPrs3D = aChannelConstructor.Get3dPresentation(); + thePrs.myPrs2D = aChannelConstructor.Get2dPresentation(); + + thePrs.myLeftBank = aChannelConstructor.GetLeftBank(); + thePrs.myRightBank = aChannelConstructor.GetRightBank(); + thePrs.myInlet = aChannelConstructor.GetInlet(); + thePrs.myOutlet = aChannelConstructor.GetOutlet(); - BRepTools::Write( aChannelConstructor.Get2dPresentation(), "channel2d.brep" ); - BRepTools::Write( aChannelConstructor.Get3dPresentation(), "channel3d.brep" ); +#ifdef DEB_CHANNEL + BRepTools::Write( thePrs.myPrs2D, "channel2d.brep" ); + BRepTools::Write( thePrs.myPrs3D, "channel3d.brep" ); + HYDROData_ShapesTool::DumpShapeSubShapes( std::cout, "Top shape edges:", thePrs.myPrs2D, TopAbs_EDGE ); + HYDROData_ShapesTool::DumpShapeSubShapes( std::cout, "Left bank edges:", thePrs.myLeftBank, TopAbs_EDGE ); + HYDROData_ShapesTool::DumpShapeSubShapes( std::cout, "Right bank edges:", thePrs.myRightBank, TopAbs_EDGE ); + HYDROData_ShapesTool::DumpShapeSubShapes( std::cout, "Inlet edges:", thePrs.myInlet, TopAbs_EDGE ); + HYDROData_ShapesTool::DumpShapeSubShapes( std::cout, "Outlet edges:", thePrs.myOutlet, TopAbs_EDGE ); +#endif - TopAbs_ShapeEnum aType = GetTopShape().ShapeType(); + return true; +} - // Create groups for channel - TopoDS_Wire aLeftBank = aChannelConstructor.GetLeftBank(); - TopoDS_Wire aRightBank = aChannelConstructor.GetRightBank(); - TopoDS_Wire anInlet = aChannelConstructor.GetInlet(); - TopoDS_Wire anOutlet = aChannelConstructor.GetOutlet(); +void HYDROData_Channel::Update() +{ + HYDROData_ArtificialObject::Update(); + Handle(HYDROData_Polyline3D) aGuideLine = GetGuideLine(); + Handle(HYDROData_Profile) aProfile = GetProfile(); + + PrsDefinition aResultPrs; + if ( !CreatePresentations( aGuideLine, aProfile, aResultPrs ) ) + return; + + SetShape3D( aResultPrs.myPrs3D ); + SetTopShape( aResultPrs.myPrs2D ); + + // Create groups for channel TopTools_SequenceOfShape aLeftBankEdges; - HYDROData_ShapesTool::ExploreShapeToShapes( aLeftBank, TopAbs_EDGE, aLeftBankEdges ); + HYDROData_ShapesTool::ExploreShapeToShapes( aResultPrs.myLeftBank, TopAbs_EDGE, aLeftBankEdges ); TopTools_SequenceOfShape aRightBankEdges; - HYDROData_ShapesTool::ExploreShapeToShapes( aRightBank, TopAbs_EDGE, aRightBankEdges ); + HYDROData_ShapesTool::ExploreShapeToShapes( aResultPrs.myRightBank, TopAbs_EDGE, aRightBankEdges ); TopTools_SequenceOfShape anInletEdges; - HYDROData_ShapesTool::ExploreShapeToShapes( anInlet, TopAbs_EDGE, anInletEdges ); + HYDROData_ShapesTool::ExploreShapeToShapes( aResultPrs.myInlet, TopAbs_EDGE, anInletEdges ); TopTools_SequenceOfShape anOutletEdges; - HYDROData_ShapesTool::ExploreShapeToShapes( anOutlet, TopAbs_EDGE, anOutletEdges ); + HYDROData_ShapesTool::ExploreShapeToShapes( aResultPrs.myOutlet, TopAbs_EDGE, anOutletEdges ); QString aLeftGroupName = GetName() + "_Left_Bank"; @@ -166,6 +181,11 @@ void HYDROData_Channel::Update() anOutGroup->SetShapes( anOutletEdges ); } +bool HYDROData_Channel::IsHas2dPrs() const +{ + return true; +} + QColor HYDROData_Channel::DefaultFillingColor() { return QColor( Qt::blue );