X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROData%2FHYDROData_Channel.cxx;h=bf269244d08bd6abe8d4fce10332fff9432d07b7;hb=c7cf59e092fe050003d1e556715e3ac97acf6bd4;hp=9499aea834fd372eb43cfc4eaea9cfdbc9185d4b;hpb=f9b8b591033deed2dbf24dceaa860faf1d323749;p=modules%2Fhydro.git diff --git a/src/HYDROData/HYDROData_Channel.cxx b/src/HYDROData/HYDROData_Channel.cxx index 9499aea8..bf269244 100644 --- a/src/HYDROData/HYDROData_Channel.cxx +++ b/src/HYDROData/HYDROData_Channel.cxx @@ -1,3 +1,24 @@ +// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE +// +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// #include "HYDROData_Channel.h" @@ -8,6 +29,7 @@ #include "HYDROData_Projection.h" #include "HYDROData_ShapesGroup.h" #include "HYDROData_ShapesTool.h" +#include "HYDROData_Pipes.h" #include #include @@ -18,7 +40,6 @@ #include #include #include -#include //#define DEB_CHANNEL 1 #ifdef DEB_CHANNEL @@ -28,8 +49,6 @@ #include #include -#define PYTHON_CHANNEL_ID "KIND_CHANNEL" - IMPLEMENT_STANDARD_HANDLE(HYDROData_Channel,HYDROData_ArtificialObject) IMPLEMENT_STANDARD_RTTIEXT(HYDROData_Channel,HYDROData_ArtificialObject) @@ -45,22 +64,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; } @@ -90,107 +105,106 @@ 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; - 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" <SetName( aLeftGroupName ); - aLeftGroup->SetShapes( aProjLeftEdges ); + aLeftGroup->SetShapes( aLeftBankEdges ); QString aRightGroupName = GetName() + "_Right_Bank"; Handle(HYDROData_ShapesGroup) aRightGroup = createGroupObject(); aRightGroup->SetName( aRightGroupName ); - aRightGroup->SetShapes( aProjRightEdges ); + aRightGroup->SetShapes( aRightBankEdges ); QString anInGroupName = GetName() + "_Inlet"; Handle(HYDROData_ShapesGroup) anInGroup = createGroupObject(); anInGroup->SetName( anInGroupName ); - anInGroup->SetShapes( aProjInletEdges ); + anInGroup->SetShapes( anInletEdges ); QString anOutGroupName = GetName() + "_Outlet"; Handle(HYDROData_ShapesGroup) anOutGroup = createGroupObject(); anOutGroup->SetName( anOutGroupName ); - anOutGroup->SetShapes( aProjOutletEdges ); + anOutGroup->SetShapes( anOutletEdges ); +} + +bool HYDROData_Channel::IsHas2dPrs() const +{ + return true; } QColor HYDROData_Channel::DefaultFillingColor() @@ -300,52 +314,3 @@ ObjectKind HYDROData_Channel::getAltitudeObjectType() const return KIND_OBSTACLE_ALTITUDE; } -void HYDROData_Channel::findEdges( const TopTools_SequenceOfShape& theInShapes, - const TopTools_ListOfShape& theEdges3D, - TopTools_SequenceOfShape& theOutShapes ) const -{ - theOutShapes.Clear(); - if ( theEdges3D.IsEmpty() || theInShapes.IsEmpty() ) - return; - - const TopoDS_Shape& aFirstShape3D = theEdges3D.First(); - const TopoDS_Shape& aLastShape3D = theEdges3D.Last(); - - TopoDS_Vertex aFirstVert, aLastVert, aDummyVert; - if ( !HYDROData_ShapesTool::Vertices( aFirstShape3D, aFirstVert, aDummyVert ) || - !HYDROData_ShapesTool::Vertices( aLastShape3D, aDummyVert, aLastVert ) ) - return; - - bool isStarted = false; - for ( int i = 1, n = theInShapes.Length(); i <= n; ++i ) - { - const TopoDS_Shape& anInShape = theInShapes.Value( i ); - - TopoDS_Vertex aShapeFirstVert, aShapeLastVert; - if ( !HYDROData_ShapesTool::Vertices( anInShape, aShapeFirstVert, aShapeLastVert ) ) - continue; - - if ( !isStarted ) - { - isStarted = HYDROData_ShapesTool::IsVerticesEquals( aFirstVert, aShapeFirstVert, true ); - } - - if ( isStarted ) - { - theOutShapes.Append( anInShape ); - - if ( HYDROData_ShapesTool::IsVerticesEquals( aLastVert, aShapeLastVert, true ) ) - break; - } - } -} - -void HYDROData_Channel::findEdges( const TopTools_SequenceOfShape& theProjShapes, - const TopoDS_Shape& theEdge3D, - TopTools_SequenceOfShape& theOutShapes ) const -{ - TopTools_ListOfShape aTmpList; - aTmpList.Append( theEdge3D ); - findEdges( theProjShapes, aTmpList, theOutShapes ); -} -