X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FGEOMImpl%2FGEOMImpl_BooleanDriver.cxx;h=c419cd6d5f93adbc78297384662cad6e3a0c762f;hb=ba82372a2706c596357a33bd189808722f42489e;hp=4bf020b613f61545549e1b0ab13f0ea254538eaa;hpb=1d4b5b2a08784fdcf51a4bb0aba832ead67e8d9a;p=modules%2Fgeom.git diff --git a/src/GEOMImpl/GEOMImpl_BooleanDriver.cxx b/src/GEOMImpl/GEOMImpl_BooleanDriver.cxx index 4bf020b61..c419cd6d5 100644 --- a/src/GEOMImpl/GEOMImpl_BooleanDriver.cxx +++ b/src/GEOMImpl/GEOMImpl_BooleanDriver.cxx @@ -153,6 +153,7 @@ Standard_Integer GEOMImpl_BooleanDriver::Execute(TFunction_Logbook& log) const } if (isCompound) { + /* TopTools_ListOfShape listShapeC; AddSimpleShapes(C, listShapeC); TopTools_ListIteratorOfListOfShape itSubC (listShapeC); @@ -165,6 +166,14 @@ Standard_Integer GEOMImpl_BooleanDriver::Execute(TFunction_Logbook& log) const aShape = GEOMImpl_GlueDriver::GlueFaces(C, Precision::Confusion()); else aShape = C; + */ + + // As GlueFaces has been improved to keep all kind of shapes + TopExp_Explorer anExp (C, TopAbs_VERTEX); + if (anExp.More()) + aShape = GEOMImpl_GlueDriver::GlueFaces(C, Precision::Confusion(), Standard_True); + else + aShape = C; } } @@ -215,6 +224,7 @@ Standard_Integer GEOMImpl_BooleanDriver::Execute(TFunction_Logbook& log) const } if (isCompound) { + /* TopTools_ListOfShape listShapeC; AddSimpleShapes(C, listShapeC); TopTools_ListIteratorOfListOfShape itSubC (listShapeC); @@ -227,11 +237,20 @@ Standard_Integer GEOMImpl_BooleanDriver::Execute(TFunction_Logbook& log) const aShape = GEOMImpl_GlueDriver::GlueFaces(C, Precision::Confusion()); else aShape = C; + */ + + // As GlueFaces has been improved to keep all kind of shapes + TopExp_Explorer anExp (C, TopAbs_VERTEX); + if (anExp.More()) + aShape = GEOMImpl_GlueDriver::GlueFaces(C, Precision::Confusion(), Standard_True); + else + aShape = C; } } // perform FUSE operation else if (aType == BOOLEAN_FUSE) { + /* Fix for NPAL15379: refused // Check arguments TopTools_ListOfShape listShape1, listShape2; AddSimpleShapes(aShape1, listShape1); @@ -305,6 +324,7 @@ Standard_Integer GEOMImpl_BooleanDriver::Execute(TFunction_Logbook& log) const } } } + */ // Perform BRepAlgoAPI_Fuse BO (aShape1, aShape2); @@ -367,8 +387,16 @@ Standard_Integer GEOMImpl_BooleanDriver::Execute(TFunction_Logbook& log) const } } - if (isCompound) - aShape = C; + if (isCompound) { + //aShape = C; + + // As GlueFaces has been improved to keep all kind of shapes + TopExp_Explorer anExp (C, TopAbs_VERTEX); + if (anExp.More()) + aShape = GEOMImpl_GlueDriver::GlueFaces(C, Precision::Confusion(), Standard_True); + else + aShape = C; + } } // UNKNOWN operation