summaryrefslogtreecommitdiff
path: root/src/cgalutils.cc
diff options
context:
space:
mode:
authorMarius Kintel <marius@kintel.net>2013-12-15 23:21:51 (GMT)
committerMarius Kintel <marius@kintel.net>2013-12-15 23:21:51 (GMT)
commitdced79fb2d6a4bb1bd5992e611e1c209b910f820 (patch)
treef1491a4331debb8f89098553ceeff377a4053ab3 /src/cgalutils.cc
parent4fd18f6d72d3690dec11c7241a8127fe37007dec (diff)
parent446dc3d36d36ee3786615c6297a141c01ed972c0 (diff)
Merge pull request #574 from openscad/planar
Planar - see issue #349
Diffstat (limited to 'src/cgalutils.cc')
-rw-r--r--src/cgalutils.cc27
1 files changed, 12 insertions, 15 deletions
diff --git a/src/cgalutils.cc b/src/cgalutils.cc
index bb46f1c..12e743d 100644
--- a/src/cgalutils.cc
+++ b/src/cgalutils.cc
@@ -8,10 +8,9 @@
#include <map>
-PolySet *createPolySetFromPolyhedron(const CGAL_Polyhedron &p)
+bool createPolySetFromPolyhedron(const CGAL_Polyhedron &p, PolySet &ps)
{
- PolySet *ps = new PolySet();
-
+ bool err = false;
typedef CGAL_Polyhedron::Vertex Vertex;
typedef CGAL_Polyhedron::Vertex_const_iterator VCI;
typedef CGAL_Polyhedron::Facet_const_iterator FCI;
@@ -35,13 +34,13 @@ PolySet *createPolySetFromPolyhedron(const CGAL_Polyhedron &p)
double x3 = CGAL::to_double(v3.point().x());
double y3 = CGAL::to_double(v3.point().y());
double z3 = CGAL::to_double(v3.point().z());
- ps->append_poly();
- ps->append_vertex(x1, y1, z1);
- ps->append_vertex(x2, y2, z2);
- ps->append_vertex(x3, y3, z3);
+ ps.append_poly();
+ ps.append_vertex(x1, y1, z1);
+ ps.append_vertex(x2, y2, z2);
+ ps.append_vertex(x3, y3, z3);
} while (hc != hc_end);
}
- return ps;
+ return err;
}
#undef GEN_SURFACE_DEBUG
@@ -127,22 +126,20 @@ public:
}
};
-CGAL_Polyhedron *createPolyhedronFromPolySet(const PolySet &ps)
+bool createPolyhedronFromPolySet(const PolySet &ps, CGAL_Polyhedron &p)
{
- CGAL_Polyhedron *P = NULL;
+ bool err = false;
CGAL::Failure_behaviour old_behaviour = CGAL::set_error_behaviour(CGAL::THROW_EXCEPTION);
try {
- P = new CGAL_Polyhedron;
CGAL_Build_PolySet builder(ps);
- P->delegate(builder);
+ p.delegate(builder);
}
catch (const CGAL::Assertion_exception &e) {
PRINTB("CGAL error in CGAL_Build_PolySet: %s", e.what());
- delete P;
- P = NULL;
+ err = true;
}
CGAL::set_error_behaviour(old_behaviour);
- return P;
+ return err;
}
CGAL_Iso_cuboid_3 bounding_box( const CGAL_Nef_polyhedron3 &N )
contact: Jan Huwald // Impressum