Mantis issue 0021934: Delete the internal faces of an object. Correction to avoid errors on not suitable arguments.

This commit is contained in:
jfa 2013-06-24 11:47:08 +00:00
parent 8c5cdd2d44
commit 182542382e

View File

@ -458,18 +458,21 @@ Standard_Boolean GEOMImpl_HealingDriver::RemoveInternalFaces (const TopoDS_Shape
aTool.SetShape(theOriginalShape); aTool.SetShape(theOriginalShape);
aTool.Perform(); aTool.Perform();
if (aTool.ErrorStatus() != 0) if (aTool.ErrorStatus() == 0) { // OK
StdFail_NotDone::Raise("GEOMAlgo_RemoverWebs failed!"); theOutShape = aTool.Result();
theOutShape = aTool.Result(); // as GEOMAlgo_RemoverWebs always produces compound, lets simplify it
// for the case, if it contains only one sub-shape
// as GEOMAlgo_RemoverWebs always produces compound, lets simplify it TopTools_ListOfShape listShapeRes;
// for the case, if it contains only one sub-shape GEOMUtils::AddSimpleShapes(theOutShape, listShapeRes);
TopTools_ListOfShape listShapeRes; if (listShapeRes.Extent() == 1) {
GEOMUtils::AddSimpleShapes(theOutShape, listShapeRes); theOutShape = listShapeRes.First();
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; return Standard_True;
} }