diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/polyset.cc | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/polyset.cc b/src/polyset.cc index 8eccf37..b8e77f4 100644 --- a/src/polyset.cc +++ b/src/polyset.cc @@ -26,6 +26,8 @@ #include "polyset.h" #include "printutils.h" #include "Preferences.h" +#include <CGAL/assertions_behaviour.h> +#include <CGAL/exceptions.h> #include <Eigen/Core> #include <Eigen/LU> @@ -647,8 +649,10 @@ CGAL_Nef_polyhedron PolySet::render_cgal_nef_polyhedron() const #endif } - else + else // not (this->is2d) { + CGAL::Failure_behaviour old_behaviour = CGAL::set_error_behaviour(CGAL::THROW_EXCEPTION); + try { CGAL_Polyhedron P; CGAL_Build_PolySet builder(this); P.delegate(builder); @@ -657,6 +661,12 @@ CGAL_Nef_polyhedron PolySet::render_cgal_nef_polyhedron() const #endif CGAL_Nef_polyhedron3 N(P); return CGAL_Nef_polyhedron(N); + } + catch (CGAL::Assertion_exception e) { + PRINTF("ERROR: Illegal polygonal object - make sure all polygons are defined with the same winding order. Skipping affected object."); + CGAL::set_error_behaviour(old_behaviour); + return CGAL_Nef_polyhedron(); + } } return CGAL_Nef_polyhedron(); } |