From bc7ff5aa8d73ff08bd847bc8d0f41dc26deee54e Mon Sep 17 00:00:00 2001 From: Marius Kintel Date: Thu, 27 Dec 2012 17:30:13 +0100 Subject: [PATCH] Ignore dimension when evaluating control modules mixed with geometry children. Fixes #229 --- src/CGALEvaluator.cc | 1 + .../scad/features/control-hull-dimension.scad | 4 ++++ .../control-hull-dimension-expected.png | Bin 0 -> 6301 bytes .../dumptest/control-hull-dimension-expected.txt | 5 +++++ .../control-hull-dimension-expected.png | Bin 0 -> 6868 bytes .../control-hull-dimension-expected.png | Bin 0 -> 6868 bytes 6 files changed, 10 insertions(+) create mode 100644 testdata/scad/features/control-hull-dimension.scad create mode 100644 tests/regression/cgalpngtest/control-hull-dimension-expected.png create mode 100644 tests/regression/dumptest/control-hull-dimension-expected.txt create mode 100644 tests/regression/opencsgtest/control-hull-dimension-expected.png create mode 100644 tests/regression/throwntogethertest/control-hull-dimension-expected.png diff --git a/src/CGALEvaluator.cc b/src/CGALEvaluator.cc index 5e168922..a4744c26 100644 --- a/src/CGALEvaluator.cc +++ b/src/CGALEvaluator.cc @@ -130,6 +130,7 @@ CGAL_Nef_polyhedron CGALEvaluator::applyHull(const CgaladvNode &node) const CGAL_Nef_polyhedron &chN = item.second; // FIXME: Don't use deep access to modinst members if (chnode->modinst->isBackground()) continue; + if (chN.dim == 0) continue; // Ignore object with dimension 0 (e.g. echo) if (dim == 0) { dim = chN.dim; } diff --git a/testdata/scad/features/control-hull-dimension.scad b/testdata/scad/features/control-hull-dimension.scad new file mode 100644 index 00000000..c8736db4 --- /dev/null +++ b/testdata/scad/features/control-hull-dimension.scad @@ -0,0 +1,4 @@ +hull() { + circle(1); + echo(1); +} diff --git a/tests/regression/cgalpngtest/control-hull-dimension-expected.png b/tests/regression/cgalpngtest/control-hull-dimension-expected.png new file mode 100644 index 0000000000000000000000000000000000000000..ceeaf549e17221a5afb4be20e1f4e1062a3f9454 GIT binary patch literal 6301 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 literal 0 HcmV?d00001 diff --git a/tests/regression/dumptest/control-hull-dimension-expected.txt b/tests/regression/dumptest/control-hull-dimension-expected.txt new file mode 100644 index 00000000..be2e4ee8 --- /dev/null +++ b/tests/regression/dumptest/control-hull-dimension-expected.txt @@ -0,0 +1,5 @@ + hull() { + circle($fn = 0, $fa = 12, $fs = 2, r = 1); + group(); + } + diff --git a/tests/regression/opencsgtest/control-hull-dimension-expected.png b/tests/regression/opencsgtest/control-hull-dimension-expected.png new file mode 100644 index 0000000000000000000000000000000000000000..52d11c14ded61e42eb3899b477a7ebc8a15fbc8d GIT binary patch literal 6868 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 DG62gf literal 0 HcmV?d00001 diff --git a/tests/regression/throwntogethertest/control-hull-dimension-expected.png b/tests/regression/throwntogethertest/control-hull-dimension-expected.png new file mode 100644 index 0000000000000000000000000000000000000000..52d11c14ded61e42eb3899b477a7ebc8a15fbc8d GIT binary patch literal 6868 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 DG62gf literal 0 HcmV?d00001