X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGeomAlgoAPI%2FGeomAlgoAPI_DFLoader.cpp;h=289db4f28cc077d32dbccd8a57c54e82dc00905b;hb=f0cec241aae9ca16d86e166f45cb5c4987d2c792;hp=61e28412aab9d44a70420e17db223e8cee585566;hpb=31e91a8d11e03ddce87e8c2aa04695961a266a97;p=modules%2Fshaper.git diff --git a/src/GeomAlgoAPI/GeomAlgoAPI_DFLoader.cpp b/src/GeomAlgoAPI/GeomAlgoAPI_DFLoader.cpp index 61e28412a..289db4f28 100644 --- a/src/GeomAlgoAPI/GeomAlgoAPI_DFLoader.cpp +++ b/src/GeomAlgoAPI/GeomAlgoAPI_DFLoader.cpp @@ -13,20 +13,23 @@ //function : refineResult //purpose : //======================================================================= -const TopoDS_Shape GeomAlgoAPI_DFLoader::refineResult(const TopoDS_Shape& theResult) +const TopoDS_Shape GeomAlgoAPI_DFLoader::refineResult(const TopoDS_Shape& theResult) { - TopoDS_Shape aResult; - if (theResult.ShapeType() == TopAbs_COMPOUND) { - Standard_Integer nbSubResults = 0; - TopoDS_Iterator itr(theResult); - for (; itr.More(); itr.Next()) nbSubResults++; - if (nbSubResults == 1) { - itr.Initialize(theResult); - if (itr.More()) aResult = itr.Value(); - } else { - /// MPV: store compound anyway: it may be Boolean operation that produces two solids from one - aResult = theResult; + TopoDS_Shape aResult = theResult; + const TopAbs_ShapeEnum aShType = theResult.ShapeType(); + if(aShType == TopAbs_COMPOUND || aShType == TopAbs_SHELL || aShType == TopAbs_WIRE) { + Standard_Integer aSubResultsNb = 0; + TopoDS_Iterator anIt(theResult); + for(; anIt.More(); anIt.Next()) { + ++aSubResultsNb; + } + if(aSubResultsNb == 1) { + anIt.Initialize(theResult); + if(anIt.More()) { + aResult = anIt.Value(); + } } } + return aResult; }