Salome HOME
Mantis issue 0021934: Delete the internal faces of an object. Correction to avoid...
authorjfa <jfa@opencascade.com>
Mon, 24 Jun 2013 11:47:08 +0000 (11:47 +0000)
committerjfa <jfa@opencascade.com>
Mon, 24 Jun 2013 11:47:08 +0000 (11:47 +0000)
src/GEOMImpl/GEOMImpl_HealingDriver.cxx

index 644b8a835e4d51f754ceac6d93a77a738e843e90..a7514b0dd586dcc28bbd2868f7ecee0da36c65c7 100644 (file)
@@ -458,18 +458,21 @@ Standard_Boolean GEOMImpl_HealingDriver::RemoveInternalFaces (const TopoDS_Shape
   aTool.SetShape(theOriginalShape);
   aTool.Perform();
 
-  if (aTool.ErrorStatus() != 0)
-    StdFail_NotDone::Raise("GEOMAlgo_RemoverWebs failed!");
-
-  theOutShape = aTool.Result();
-
-  // as GEOMAlgo_RemoverWebs always produces compound, lets simplify it
-  // for the case, if it contains only one sub-shape
-  TopTools_ListOfShape listShapeRes;
-  GEOMUtils::AddSimpleShapes(theOutShape, listShapeRes);
-  if (listShapeRes.Extent() == 1) {
-    theOutShape = listShapeRes.First();
+  if (aTool.ErrorStatus() == 0) { // OK
+    theOutShape = aTool.Result();
+
+    // as GEOMAlgo_RemoverWebs always produces compound, lets simplify it
+    // for the case, if it contains only one sub-shape
+    TopTools_ListOfShape listShapeRes;
+    GEOMUtils::AddSimpleShapes(theOutShape, listShapeRes);
+    if (listShapeRes.Extent() == 1) {
+      theOutShape = listShapeRes.First();
+    }
   }
+  else if (aTool.ErrorStatus() == 11) // invalid argument (contains non-solids), do nothing
+    theOutShape = theOriginalShape;
+  else // error
+    StdFail_NotDone::Raise("GEOMAlgo_RemoverWebs failed!");
 
   return Standard_True;
 }