0020719: EDF 1232 GEOM : Pipe construction dialog box, impossible to select a group or a compound

This commit is contained in:
dmv 2010-04-29 13:15:58 +00:00
parent 615afae166
commit a4a980368a
2 changed files with 23 additions and 5 deletions

View File

@ -1946,18 +1946,34 @@ Standard_Integer GEOMImpl_PipeDriver::Execute(TFunction_Logbook& log) const
} }
// Get path contour // 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); aWirePath = TopoDS::Wire(aShapePath);
isOk = true;
} }
else { else {
if (aShapePath.ShapeType() == TopAbs_EDGE) { if (aShapePath.ShapeType() == TopAbs_EDGE) {
TopoDS_Edge anEdge = TopoDS::Edge(aShapePath); TopoDS_Edge anEdge = TopoDS::Edge(aShapePath);
aWirePath = BRepBuilderAPI_MakeWire(anEdge); aWirePath = BRepBuilderAPI_MakeWire(anEdge);
isOk = true;
} }
else { }
if(aCI) delete aCI; if ( !isOk ) {
Standard_TypeMismatch::Raise("MakePipe aborted : path shape is neither a wire nor an edge"); if(aCI) delete aCI;
} Standard_TypeMismatch::Raise("MakePipe aborted : path shape is neither a wire nor an edge");
} }
} }

View File

@ -190,6 +190,7 @@ void GenerationGUI_PipeDlg::SelectionTypeButtonClicked()
localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE ); localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
} else { } else {
TColStd_MapOfInteger aMap; TColStd_MapOfInteger aMap;
aMap.Add(GEOM_COMPOUND);
aMap.Add(GEOM_WIRE); aMap.Add(GEOM_WIRE);
aMap.Add(GEOM_LINE); aMap.Add(GEOM_LINE);
globalSelection(aMap); globalSelection(aMap);
@ -370,6 +371,7 @@ void GenerationGUI_PipeDlg::SetEditCurrentArgument()
localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE ); localSelection( GEOM::GEOM_Object::_nil(), TopAbs_EDGE );
} else { } else {
TColStd_MapOfInteger aMap; TColStd_MapOfInteger aMap;
aMap.Add(GEOM_COMPOUND);
aMap.Add(GEOM_WIRE); aMap.Add(GEOM_WIRE);
aMap.Add(GEOM_LINE); aMap.Add(GEOM_LINE);
globalSelection(aMap); globalSelection(aMap);