From 398df1400a6093604d3e77da81b59d10f68dc088 Mon Sep 17 00:00:00 2001 From: skv Date: Wed, 6 May 2015 17:10:57 +0300 Subject: [PATCH] Fix for test case geom/boolean_operations_05/F5 (implement copying of source shapes for MakeFaceWires) --- src/GEOMImpl/GEOMImpl_ShapeDriver.cxx | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/GEOMImpl/GEOMImpl_ShapeDriver.cxx b/src/GEOMImpl/GEOMImpl_ShapeDriver.cxx index 8ad9f4349..933ad9eea 100644 --- a/src/GEOMImpl/GEOMImpl_ShapeDriver.cxx +++ b/src/GEOMImpl/GEOMImpl_ShapeDriver.cxx @@ -59,6 +59,8 @@ #include #include +#include + #include #include #include @@ -86,6 +88,7 @@ #include #include +#include #include #include #include @@ -208,6 +211,7 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(TFunction_Logbook& log) const // 1. Extract all edges from the given arguments TopTools_MapOfShape aMapEdges; Handle(TopTools_HSequenceOfShape) aSeqEdgesIn = new TopTools_HSequenceOfShape; + TColStd_IndexedDataMapOfTransientTransient aMapTShapes; for (ind = 1; ind <= nbshapes; ind++) { Handle(GEOM_Function) aRefSh_i = Handle(GEOM_Function)::DownCast(aShapes->Value(ind)); @@ -216,7 +220,12 @@ Standard_Integer GEOMImpl_ShapeDriver::Execute(TFunction_Logbook& log) const TopExp_Explorer anExpE_i (aSh_i, TopAbs_EDGE); for (; anExpE_i.More(); anExpE_i.Next()) { if (aMapEdges.Add(anExpE_i.Current())) { - aSeqEdgesIn->Append(anExpE_i.Current()); + // Copy the original shape. + TopoDS_Shape aShapeCopy; + + TNaming_CopyShape::CopyTool + (anExpE_i.Current(), aMapTShapes, aShapeCopy); + aSeqEdgesIn->Append(aShapeCopy); } } } -- 2.39.2