summaryrefslogtreecommitdiff
path: root/src/polyset.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/polyset.cc')
-rw-r--r--src/polyset.cc12
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();
}
contact: Jan Huwald // Impressum