From cac51e8168b6d480dc491576dadfe4744160d288 Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Sun, 23 Apr 2017 11:16:34 +0800 Subject: [PATCH] added along_with --- README.md | 1 + docs/images/lib-along_with-1.JPG | Bin 0 -> 31897 bytes docs/images/lib-along_with-2.JPG | Bin 0 -> 21577 bytes docs/lib-along_with.md | 42 +++++++++++++++++++++++++++++++ src/along_with.scad | 26 +++++++++++++++++++ 5 files changed, 69 insertions(+) create mode 100644 docs/images/lib-along_with-1.JPG create mode 100644 docs/images/lib-along_with-2.JPG create mode 100644 docs/lib-along_with.md create mode 100644 src/along_with.scad diff --git a/README.md b/README.md index 26b9da14..38d6934d 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,7 @@ Some modules may depend on other modules. For example, the `polyline2d` module d - [function_grapher](https://openhome.cc/eGossip/OpenSCAD/lib-function_grapher.html) - Transformation + - [along_with](https://openhome.cc/eGossip/OpenSCAD/lib-along_with.html) - [hollow_out](https://openhome.cc/eGossip/OpenSCAD/lib-hollow_out.html) - [bend](https://openhome.cc/eGossip/OpenSCAD/lib-bend.html) diff --git a/docs/images/lib-along_with-1.JPG b/docs/images/lib-along_with-1.JPG new file mode 100644 index 0000000000000000000000000000000000000000..39b6a1964aa4c2a6d5b6ce54dc6fd1cd1ec481a6 GIT binary patch literal 31897 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 z%0A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 JE2dwQ{|C#u3GM&@ literal 0 HcmV?d00001 diff --git a/docs/images/lib-along_with-2.JPG b/docs/images/lib-along_with-2.JPG new file mode 100644 index 0000000000000000000000000000000000000000..6f73b85e01a74525049f8dac271c136adfcc921e GIT binary patch literal 21577 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 + include ; + + $fn = 24; + + points = circle_path(radius = 50); + + along_with(points) + sphere(5, center = true); + +![along_with](images/lib-along_with-1.JPG) + + include ; + include ; + + $fn = 24; + + points = circle_path(radius = 50); + + along_with(points) { + linear_extrude(10) text("A", valign = "center", halign = "center"); + linear_extrude(5) circle(2); + sphere(1); + cube(5); + linear_extrude(10) text("A", valign = "center", halign = "center"); + linear_extrude(5) circle(2); + sphere(1); + cube(5); + } + +![along_with](images/lib-along_with-2.JPG) + diff --git a/src/along_with.scad b/src/along_with.scad new file mode 100644 index 00000000..316fb27b --- /dev/null +++ b/src/along_with.scad @@ -0,0 +1,26 @@ +/** +* along_with.scad +* +* Puts children along the given path. If there's only one child, +* it will put the child for each point. +* +* @copyright Justin Lin, 2017 +* @license https://opensource.org/licenses/lgpl-3.0.html +* +* @see https://openhome.cc/eGossip/OpenSCAD/lib-along_with.html +* +**/ + +module along_with(points) { + if($children == 1) { + for(i = [0:len(points) - 1]) { + translate(points[i]) + children(0); + } + } else { + for(i = [0:min(len(points), $children) - 1]) { + translate(points[i]) + children(i); + } + } +} \ No newline at end of file