X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGeomAlgoAPI%2FGeomAlgoAPI_WireBuilder.cpp;h=f977184d6873e31c61bf6f8d65d9848d756beffe;hb=f0cec241aae9ca16d86e166f45cb5c4987d2c792;hp=b6b9dec26fcb4e8b66694c35d84a535956e94fe5;hpb=c44cee9c2c5f83a58f172a47037a8d9035e29b94;p=modules%2Fshaper.git diff --git a/src/GeomAlgoAPI/GeomAlgoAPI_WireBuilder.cpp b/src/GeomAlgoAPI/GeomAlgoAPI_WireBuilder.cpp index b6b9dec26..f977184d6 100644 --- a/src/GeomAlgoAPI/GeomAlgoAPI_WireBuilder.cpp +++ b/src/GeomAlgoAPI/GeomAlgoAPI_WireBuilder.cpp @@ -9,21 +9,24 @@ #include #include #include +#include //================================================================================================= std::shared_ptr GeomAlgoAPI_WireBuilder::wire(const ListOfShape& theShapes) { - BRepBuilderAPI_MakeWire aWireBuilder; + TopTools_ListOfShape aListOfEdges; for(ListOfShape::const_iterator anIt = theShapes.cbegin(); anIt != theShapes.cend(); ++anIt) { const TopoDS_Shape& aShape = (*anIt)->impl(); switch(aShape.ShapeType()) { case TopAbs_EDGE: { - aWireBuilder.Add(TopoDS::Edge(aShape)); + aListOfEdges.Append(aShape); break; } case TopAbs_WIRE: { - aWireBuilder.Add(TopoDS::Wire(aShape)); + for(TopExp_Explorer anExp(aShape, TopAbs_EDGE); anExp.More(); anExp.Next()) { + aListOfEdges.Append(anExp.Current()); + } break; } default: { @@ -32,6 +35,8 @@ std::shared_ptr GeomAlgoAPI_WireBuilder::wire(const ListOfShape& } } + BRepBuilderAPI_MakeWire aWireBuilder; + aWireBuilder.Add(aListOfEdges); if(aWireBuilder.Error() != BRepBuilderAPI_WireDone) { return GeomShapePtr(); }