summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorclifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c>2010-01-05 20:38:33 (GMT)
committerclifford <clifford@b57f626f-c46c-0410-a088-ec61d464b74c>2010-01-05 20:38:33 (GMT)
commit966eb8f55e9460e5b200100940d98d88f5d47933 (patch)
treec4f4ff5d2aebe5b3db71b1d6c696c87936abfc58
parenta02e00083f385a1770103569e07b2b5eb8d7ee4f (diff)
Clifford Wolf:
Added missing "N.dim != 0" checks as needed e.g. for "if (false);" child nodes (fixes bug reported by Andrew Plumb) git-svn-id: http://svn.clifford.at/openscad/trunk@204 b57f626f-c46c-0410-a088-ec61d464b74c
-rw-r--r--csgops.cc3
-rw-r--r--module.cc9
-rw-r--r--render.cc3
-rw-r--r--transform.cc5
4 files changed, 12 insertions, 8 deletions
diff --git a/csgops.cc b/csgops.cc
index 9087346..c6b3742 100644
--- a/csgops.cc
+++ b/csgops.cc
@@ -76,7 +76,8 @@ CGAL_Nef_polyhedron CsgNode::render_cgal_nef_polyhedron() const
continue;
if (first) {
N = v->render_cgal_nef_polyhedron();
- first = false;
+ if (N.dim != 0)
+ first = false;
} else if (N.dim == 2) {
if (type == CSG_TYPE_UNION) {
N.p2 += v->render_cgal_nef_polyhedron().p2;
diff --git a/module.cc b/module.cc
index 4a0b703..2ddfaa4 100644
--- a/module.cc
+++ b/module.cc
@@ -241,14 +241,16 @@ static CGAL_Nef_polyhedron render_cgal_nef_polyhedron_backend(const AbstractNode
return *that->cgal_nef_cache[cache_id];
}
- bool is_first = true;
+ bool first = true;
CGAL_Nef_polyhedron N;
foreach (AbstractNode *v, that->children) {
if (v->modinst->tag_background)
continue;
- if (is_first)
+ if (first) {
N = v->render_cgal_nef_polyhedron();
- else if (N.dim == 2) {
+ if (N.dim != 0)
+ first = false;
+ } else if (N.dim == 2) {
if (intersect)
N.p2 *= v->render_cgal_nef_polyhedron().p2;
else
@@ -259,7 +261,6 @@ static CGAL_Nef_polyhedron render_cgal_nef_polyhedron_backend(const AbstractNode
else
N.p3 += v->render_cgal_nef_polyhedron().p3;
}
- is_first = false;
}
that->cgal_nef_cache.insert(cache_id, new CGAL_Nef_polyhedron(N), N.weight());
diff --git a/render.cc b/render.cc
index 532c2e9..e48c6f8 100644
--- a/render.cc
+++ b/render.cc
@@ -92,7 +92,8 @@ CGAL_Nef_polyhedron RenderNode::render_cgal_nef_polyhedron() const
continue;
if (first) {
N = v->render_cgal_nef_polyhedron();
- first = false;
+ if (N.dim != 0)
+ first = false;
} else if (N.dim == 2) {
N.p2 += v->render_cgal_nef_polyhedron().p2;
} else if (N.dim == 3) {
diff --git a/transform.cc b/transform.cc
index bd8ad8d..4e9ce0b 100644
--- a/transform.cc
+++ b/transform.cc
@@ -200,7 +200,8 @@ CGAL_Nef_polyhedron TransformNode::render_cgal_nef_polyhedron() const
continue;
if (first) {
N = v->render_cgal_nef_polyhedron();
- first = false;
+ if (N.dim != 0)
+ first = false;
} else if (N.dim == 2) {
N.p2 += v->render_cgal_nef_polyhedron().p2;
} else if (N.dim == 3) {
@@ -284,7 +285,7 @@ QString TransformNode::dump(QString indent) const
{
if (dump_cache.isEmpty()) {
QString text;
- text.sprintf("n%d: multmatrix([[%f %f %f %f], [%f %f %f %f], [%f %f %f %f], [%f %f %f %f]])", idx,
+ text.sprintf("n%d: multmatrix([[%f, %f, %f, %f], [%f, %f, %f, %f], [%f, %f, %f, %f], [%f, %f, %f, %f]])", idx,
m[0], m[4], m[ 8], m[12],
m[1], m[5], m[ 9], m[13],
m[2], m[6], m[10], m[14],
contact: Jan Huwald // Impressum