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.Perform();
if (aTool.ErrorStatus() != 0)
StdFail_NotDone::Raise("GEOMAlgo_RemoverWebs failed!");
if (aTool.ErrorStatus() == 0) { // OK
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
TopTools_ListOfShape listShapeRes;
GEOMUtils::AddSimpleShapes(theOutShape, listShapeRes);
if (listShapeRes.Extent() == 1) {
theOutShape = listShapeRes.First();
// 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;
}