From: jfa Date: Wed, 15 Aug 2018 09:59:41 +0000 (+0300) Subject: 0023497: EDF 15720 - Projection transforms the type of shape X-Git-Tag: SHAPER_V9_1_0RC1 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=2b527066538454203ec286ba6e8f5dc86d28680b;p=modules%2Fgeom.git 0023497: EDF 15720 - Projection transforms the type of shape --- diff --git a/src/GEOMImpl/GEOMImpl_ProjectionDriver.cxx b/src/GEOMImpl/GEOMImpl_ProjectionDriver.cxx index 5195bb8c8..564b32a84 100644 --- a/src/GEOMImpl/GEOMImpl_ProjectionDriver.cxx +++ b/src/GEOMImpl/GEOMImpl_ProjectionDriver.cxx @@ -235,11 +235,23 @@ Standard_Integer GEOMImpl_ProjectionDriver::Execute(Handle(TFunction_Logbook)& l // check that the result shape is an empty compound // (IPAL22905: TC650: Projection on face dialog problems) - if( !aShape.IsNull() && aShape.ShapeType() == TopAbs_COMPOUND ) + if (!aShape.IsNull() && aShape.ShapeType() == TopAbs_COMPOUND) { - TopoDS_Iterator anIter( aShape ); - if( !anIter.More() ) + TopoDS_Iterator anIter(aShape); + if (!anIter.More()) Standard_ConstructionError::Raise("Projection aborted : empty compound produced"); + + if (anOriginal.ShapeType() == TopAbs_WIRE) { + // Make wire from resulting compound (Mantis issue 0023497) + TopTools_ListOfShape anEdgesList; + for (; anIter.More(); anIter.Next()) { + anEdgesList.Append(anIter.Value()); + } + BRepBuilderAPI_MakeWire aMkWire; + aMkWire.Add(anEdgesList); + if (aMkWire.IsDone()) + aShape = aMkWire.Wire(); + } } }