From 15959bc32cc5ba649babac5636bb544e5e46868b Mon Sep 17 00:00:00 2001 From: don bright Date: Wed, 22 Aug 2012 12:07:46 +0200 Subject: stop crash bug reported by Giles Bathgate diff --git a/src/CGALEvaluator.cc b/src/CGALEvaluator.cc index ac6190f..86be59b 100644 --- a/src/CGALEvaluator.cc +++ b/src/CGALEvaluator.cc @@ -150,13 +150,18 @@ CGAL_Nef_polyhedron CGALEvaluator::applyHull(const CgaladvNode &node) } else if (dim == 3) { CGAL_Polyhedron P; - chN.p3->convert_to_Polyhedron(P); - std::transform(P.vertices_begin(), P.vertices_end(), std::back_inserter(points3d), - boost::bind(static_cast(&CGAL_Polyhedron::Vertex::point), _1)); + if (!chN.p3->is_simple()) { + PRINT("Object isn't a valid 2-manifold! Please modify your design. See http://en.wikibooks.org/wiki/OpenSCAD_User_Manual/STL_Import_and_Export"); + } + else { + chN.p3->convert_to_Polyhedron(P); + std::transform(P.vertices_begin(), P.vertices_end(), std::back_inserter(points3d), + boost::bind(static_cast(&CGAL_Polyhedron::Vertex::point), _1)); + } } chnode->progress_report(); } - + if (dim == 2) { std::list result; CGAL::convex_hull_2(points2d.begin(), points2d.end(),std:: back_inserter(result)); @@ -165,7 +170,8 @@ CGAL_Nef_polyhedron CGALEvaluator::applyHull(const CgaladvNode &node) } else if (dim == 3) { CGAL_Polyhedron P; - CGAL::convex_hull_3(points3d.begin(), points3d.end(), P); + if (points3d.size()>3) + CGAL::convex_hull_3(points3d.begin(), points3d.end(), P); N = CGAL_Nef_polyhedron(new CGAL_Nef_polyhedron3(P)); } return N; -- cgit v0.10.1 From 94f32b76470486d16a161824113197bb408f3617 Mon Sep 17 00:00:00 2001 From: don bright Date: Wed, 22 Aug 2012 12:08:23 +0200 Subject: cleanuyp diff --git a/src/CGALEvaluator.cc b/src/CGALEvaluator.cc index 86be59b..3cf2862 100644 --- a/src/CGALEvaluator.cc +++ b/src/CGALEvaluator.cc @@ -151,7 +151,7 @@ CGAL_Nef_polyhedron CGALEvaluator::applyHull(const CgaladvNode &node) else if (dim == 3) { CGAL_Polyhedron P; if (!chN.p3->is_simple()) { - PRINT("Object isn't a valid 2-manifold! Please modify your design. See http://en.wikibooks.org/wiki/OpenSCAD_User_Manual/STL_Import_and_Export"); + PRINT("Object isn't a valid 2-manifold! Please modify your design. See http://en.wikibooks.org/wiki/OpenSCAD_User_Manual/STL_Import_and_Export"); } else { chN.p3->convert_to_Polyhedron(P); @@ -161,7 +161,6 @@ CGAL_Nef_polyhedron CGALEvaluator::applyHull(const CgaladvNode &node) } chnode->progress_report(); } - if (dim == 2) { std::list result; CGAL::convex_hull_2(points2d.begin(), points2d.end(),std:: back_inserter(result)); -- cgit v0.10.1 From 59080526a488a8dfaafdb7ba26d59c29b7abfc13 Mon Sep 17 00:00:00 2001 From: don bright Date: Wed, 22 Aug 2012 12:10:21 +0200 Subject: cleanup diff --git a/src/CGALEvaluator.cc b/src/CGALEvaluator.cc index 3cf2862..064a36a 100644 --- a/src/CGALEvaluator.cc +++ b/src/CGALEvaluator.cc @@ -151,7 +151,7 @@ CGAL_Nef_polyhedron CGALEvaluator::applyHull(const CgaladvNode &node) else if (dim == 3) { CGAL_Polyhedron P; if (!chN.p3->is_simple()) { - PRINT("Object isn't a valid 2-manifold! Please modify your design. See http://en.wikibooks.org/wiki/OpenSCAD_User_Manual/STL_Import_and_Export"); + PRINT("Hull() currently requires a valid 2-manifold. Please modify your design. See http://en.wikibooks.org/wiki/OpenSCAD_User_Manual/STL_Import_and_Export"); } else { chN.p3->convert_to_Polyhedron(P); @@ -161,6 +161,7 @@ CGAL_Nef_polyhedron CGALEvaluator::applyHull(const CgaladvNode &node) } chnode->progress_report(); } + if (dim == 2) { std::list result; CGAL::convex_hull_2(points2d.begin(), points2d.end(),std:: back_inserter(result)); -- cgit v0.10.1 From 2ac32862901dc28fe4d360b7c444e679cad430d7 Mon Sep 17 00:00:00 2001 From: don bright Date: Wed, 22 Aug 2012 12:23:17 +0200 Subject: add line to hull test diff --git a/testdata/scad/features/hull3-tests.scad b/testdata/scad/features/hull3-tests.scad index 12c8a11..b6b3fe4 100644 --- a/testdata/scad/features/hull3-tests.scad +++ b/testdata/scad/features/hull3-tests.scad @@ -15,3 +15,14 @@ translate([25,0,0]) hull() { cylinder(r=5, h=5, center=true); } } + +// Don't Crash (issue 188) + +translate([-5,-5,-5]) { + hull() { + intersection(){ + cube([1,1,1]); + translate([-1,-1,-1]) cube([1,1,1]); + } +} + -- cgit v0.10.1