From 049056a99a469dc62c18c924833f818e71bcdb89 Mon Sep 17 00:00:00 2001 From: wmayer Date: Tue, 31 Jan 2023 14:26:57 +0100 Subject: [PATCH] Part: put instantiation of BRepAdaptor_Surface into try/catch block as for some broken faces it may fail --- src/Mod/Part/App/Tools.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/Mod/Part/App/Tools.cpp b/src/Mod/Part/App/Tools.cpp index 4639a4d0d7..c6c6f13bd2 100644 --- a/src/Mod/Part/App/Tools.cpp +++ b/src/Mod/Part/App/Tools.cpp @@ -610,11 +610,17 @@ Handle (Poly_Triangulation) Part::Tools::triangulationOfFace(const TopoDS_Face& return mesh; // If no triangulation exists then the shape is probably infinite - BRepAdaptor_Surface adapt(face); - double u1 = adapt.FirstUParameter(); - double u2 = adapt.LastUParameter(); - double v1 = adapt.FirstVParameter(); - double v2 = adapt.LastVParameter(); + double u1{}, u2{}, v1{}, v2{}; + try { + BRepAdaptor_Surface adapt(face); + u1 = adapt.FirstUParameter(); + u2 = adapt.LastUParameter(); + v1 = adapt.FirstVParameter(); + v2 = adapt.LastVParameter(); + } + catch (const Standard_Failure&) { + return nullptr; + } auto selectRange = [](double& p1, double& p2) { if (Precision::IsInfinite(p1) && Precision::IsInfinite(p2)) {