X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_Channel.cxx;h=e1363d79e9db29b016e712ba7efdbaad1ddf84a5;hb=424f8230c9003d00fb27499b2441c4b3a2a28292;hp=40c496aa61520c5b4b15dc4c608f8ebef14a4bec;hpb=84ec5b92ea05194a9d4d413b9bc896cf68d2e3ca;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_Channel.cxx b/src/HYDROData/HYDROData_Channel.cxx index 40c496aa..e1363d79 100644 --- a/src/HYDROData/HYDROData_Channel.cxx +++ b/src/HYDROData/HYDROData_Channel.cxx @@ -7,6 +7,12 @@ #include #include +#include +#include +//#define DEB_CHANNEL 1 +#ifdef DEB_CHANNEL +#include +#endif #include @@ -47,6 +53,21 @@ QStringList HYDROData_Channel::DumpToPython( MapOfTreatedObjects& theTreatedObje return aResList; } +HYDROData_SequenceOfObjects HYDROData_Channel::GetAllReferenceObjects() const +{ + HYDROData_SequenceOfObjects aResSeq = HYDROData_ArtificialObject::GetAllReferenceObjects(); + + Handle(HYDROData_Polyline3D) aGuideLine = GetGuideLine(); + if ( !aGuideLine.IsNull() ) + aResSeq.Append( aGuideLine ); + + Handle(HYDROData_Profile) aProfile = GetProfile(); + if ( !aProfile.IsNull() ) + aResSeq.Append( aProfile ); + + return aResSeq; +} + TopoDS_Shape HYDROData_Channel::GetTopShape() const { return getTopShape(); @@ -67,6 +88,32 @@ void HYDROData_Channel::Update() return; // TODO + TopoDS_Wire aPathWire = TopoDS::Wire(aGuideLine->GetShape3D()); + if(aPathWire.IsNull()) + return; + TopoDS_Wire aProfileWire = TopoDS::Wire( aProfile->GetShape3D() ); + if(aProfileWire.IsNull()) + return; + + BRepOffsetAPI_MakePipeShell aMkSweep(aPathWire); + aMkSweep.Add(aProfileWire,Standard_True, Standard_True); + aMkSweep.SetTransitionMode(BRepBuilderAPI_RightCorner); + aMkSweep.SetMode(Standard_True); + aMkSweep.Build(); + if(aMkSweep.IsDone()) { + const TopoDS_Shape& aChannel = aMkSweep.Shape(); + BRepCheck_Analyzer aCheck(aChannel); + if(aCheck.IsValid()) + { + //BRepTools::Write(aChannel, "ChanV.brep"); + SetShape3D( aMkSweep.Shape()); + } else { +#ifdef DEB_CHANNEL + cout <<"NOT VALID" <