summaryrefslogtreecommitdiff
path: root/src/dxftess-cgal.cc
diff options
context:
space:
mode:
authorkintel <kintel@b57f626f-c46c-0410-a088-ec61d464b74c>2010-02-02 17:39:23 (GMT)
committerkintel <kintel@b57f626f-c46c-0410-a088-ec61d464b74c>2010-02-02 17:39:23 (GMT)
commit5a8b764ab2342659761ff5202635830e7baea964 (patch)
tree8993a9c7ec0284f3ea04cf3ba0fad62c00de2af7 /src/dxftess-cgal.cc
parent234a3bf8efb3a1300ed9b3d2b064003fdf8210b5 (diff)
Let the known case of polygon intersection spew out an error message instead of crashing
git-svn-id: http://svn.clifford.at/openscad/trunk@412 b57f626f-c46c-0410-a088-ec61d464b74c
Diffstat (limited to 'src/dxftess-cgal.cc')
-rw-r--r--src/dxftess-cgal.cc13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/dxftess-cgal.cc b/src/dxftess-cgal.cc
index 68b85db..2e80fea 100644
--- a/src/dxftess-cgal.cc
+++ b/src/dxftess-cgal.cc
@@ -10,6 +10,8 @@
#include <CGAL/Delaunay_mesher_no_edge_refinement_2.h>
#include <CGAL/Delaunay_mesh_face_base_2.h>
#include <CGAL/Delaunay_mesh_criteria_2.h>
+#include <CGAL/assertions_behaviour.h>
+#include <CGAL/exceptions.h>
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef CGAL::Triangulation_vertex_base_2<K> Vb;
@@ -100,6 +102,9 @@ void dxf_tesselate(PolySet *ps, DxfData *dxf, double rot, bool up, bool /* do_tr
QHash<edge_t,int> edge_to_triangle;
QHash<edge_t,int> edge_to_path;
+ CGAL::Failure_behaviour old_behaviour = CGAL::set_error_behaviour(CGAL::THROW_EXCEPTION);
+ try {
+
// read path data and copy all relevant infos
for (int i = 0; i < dxf->paths.count(); i++)
{
@@ -151,6 +156,14 @@ void dxf_tesselate(PolySet *ps, DxfData *dxf, double rot, bool up, bool /* do_tr
}
}
+ }
+ catch (CGAL::Assertion_exception e) {
+ PRINTF("ERROR: Polygon intersection detected. Skipping affected polygons.");
+ CGAL::set_error_behaviour(old_behaviour);
+ return;
+ }
+ CGAL::set_error_behaviour(old_behaviour);
+
// run delaunay triangulation
std::list<CDTPoint> list_of_seeds;
CGAL::refine_Delaunay_mesh_2_without_edge_refinement(cdt,
contact: Jan Huwald // Impressum