From eba335c6158eb2ffeff1654d29db5ad99af524cd Mon Sep 17 00:00:00 2001 From: blobfish Date: Sun, 22 Mar 2015 12:37:30 -0400 Subject: [PATCH] Part: ModelRefine: catch bspline isEqual exception --- src/Mod/Part/App/modelRefine.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/Mod/Part/App/modelRefine.cpp b/src/Mod/Part/App/modelRefine.cpp index 2a7adb3d77..75f38c830c 100644 --- a/src/Mod/Part/App/modelRefine.cpp +++ b/src/Mod/Part/App/modelRefine.cpp @@ -61,6 +61,7 @@ #include #include #include +#include #include "modelRefine.h" using namespace ModelRefine; @@ -767,6 +768,8 @@ FaceTypedBSpline::FaceTypedBSpline() : FaceTypedBase(GeomAbs_BSplineSurface) bool FaceTypedBSpline::isEqual(const TopoDS_Face &faceOne, const TopoDS_Face &faceTwo) const { + try + { Handle(Geom_BSplineSurface) surfaceOne = Handle(Geom_BSplineSurface)::DownCast(BRep_Tool::Surface(faceOne)); Handle(Geom_BSplineSurface) surfaceTwo = Handle(Geom_BSplineSurface)::DownCast(BRep_Tool::Surface(faceTwo)); @@ -849,6 +852,22 @@ bool FaceTypedBSpline::isEqual(const TopoDS_Face &faceOne, const TopoDS_Face &fa if (vKnotSequenceOne.Value(indexV) != vKnotSequenceTwo.Value(indexV)) return false; return true; + } + catch (Standard_Failure) + { + Handle(Standard_Failure) e = Standard_Failure::Caught(); + std::ostringstream stream; + stream << "FaceTypedBSpline::isEqual: OCC Error: " << e->GetMessageString() << std::endl; + Base::Console().Message(stream.str().c_str()); + } + catch (...) + { + std::ostringstream stream; + stream << "FaceTypedBSpline::isEqual: Unknown Error" << std::endl; + Base::Console().Message(stream.str().c_str()); + } + + return false; } GeomAbs_SurfaceType FaceTypedBSpline::getType() const