From: dmv Date: Thu, 29 Apr 2010 13:15:58 +0000 (+0000) Subject: 0020719: EDF 1232 GEOM : Pipe construction dialog box, impossible to select a group... X-Git-Tag: V5_1_4rc1~13 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=a4a980368ac0a766b50d947942cbc7ed6ddcf402;p=modules%2Fgeom.git 0020719: EDF 1232 GEOM : Pipe construction dialog box, impossible to select a group or a compound --- diff --git a/src/GEOMImpl/GEOMImpl_PipeDriver.cxx b/src/GEOMImpl/GEOMImpl_PipeDriver.cxx index 061f80edf..87a0e5e16 100644 --- a/src/GEOMImpl/GEOMImpl_PipeDriver.cxx +++ b/src/GEOMImpl/GEOMImpl_PipeDriver.cxx @@ -1946,18 +1946,34 @@ Standard_Integer GEOMImpl_PipeDriver::Execute(TFunction_Logbook& log) const } // Get path contour - if (aShapePath.ShapeType() == TopAbs_WIRE) { + bool isOk = false; + if ( aShapePath.ShapeType() == TopAbs_COMPOUND ) { + TopTools_SequenceOfShape anEdges; + TopExp_Explorer anExp; + BRep_Builder B; + TopoDS_Wire W; + B.MakeWire(W); + for ( anExp.Init( aShapePath, TopAbs_EDGE ); anExp.More(); anExp.Next() ) { + B.Add( W, anExp.Current() ); + isOk = true; + } + if ( isOk ) + aWirePath = W; + } + else if (aShapePath.ShapeType() == TopAbs_WIRE) { aWirePath = TopoDS::Wire(aShapePath); + isOk = true; } else { if (aShapePath.ShapeType() == TopAbs_EDGE) { TopoDS_Edge anEdge = TopoDS::Edge(aShapePath); aWirePath = BRepBuilderAPI_MakeWire(anEdge); + isOk = true; } - else { - if(aCI) delete aCI; - Standard_TypeMismatch::Raise("MakePipe aborted : path shape is neither a wire nor an edge"); - } + } + if ( !isOk ) { + if(aCI) delete aCI; + Standard_TypeMismatch::Raise("MakePipe aborted : path shape is neither a wire nor an edge"); } } diff --git a/src/GenerationGUI/GenerationGUI_PipeDlg.cxx b/src/GenerationGUI/GenerationGUI_PipeDlg.cxx index 5acbdd195..91ac4ab99 100644 --- a/src/GenerationGUI/GenerationGUI_PipeDlg.cxx +++ b/src/GenerationGUI/GenerationGUI_PipeDlg.cxx @@ -190,6 +190,7 @@ void GenerationGUI_PipeDlg::SelectionTypeButtonClicked() localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE ); } else { TColStd_MapOfInteger aMap; + aMap.Add(GEOM_COMPOUND); aMap.Add(GEOM_WIRE); aMap.Add(GEOM_LINE); globalSelection(aMap); @@ -370,6 +371,7 @@ void GenerationGUI_PipeDlg::SetEditCurrentArgument() localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE ); } else { TColStd_MapOfInteger aMap; + aMap.Add(GEOM_COMPOUND); aMap.Add(GEOM_WIRE); aMap.Add(GEOM_LINE); globalSelection(aMap);