From 569a0091c3dddb55b8e45f9bf22b23f4973098c6 Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Sat, 14 Aug 2021 08:34:41 +0800 Subject: [PATCH] add rails2sections --- docs/images/lib3x-rails2sections-1.JPG | Bin 0 -> 26264 bytes docs/images/lib3x-rails2sections-2.JPG | Bin 0 -> 26309 bytes docs/lib3x-rails2sections.md | 65 +++++++++++++++++++++++++ src/rails2sections.scad | 22 +++++++++ 4 files changed, 87 insertions(+) create mode 100644 docs/images/lib3x-rails2sections-1.JPG create mode 100644 docs/images/lib3x-rails2sections-2.JPG create mode 100644 docs/lib3x-rails2sections.md create mode 100644 src/rails2sections.scad diff --git a/docs/images/lib3x-rails2sections-1.JPG b/docs/images/lib3x-rails2sections-1.JPG new file mode 100644 index 0000000000000000000000000000000000000000..bb8c171678ad03cf087595443aef475419f5bea6 GIT binary patch literal 26264 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ΚX$G5xs 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 + use ; + use ; + + rails = [ + [[5, 0, 5], [15, 10, 10], [25, 20, 5]], + [[-5, 0, 5], [-15, 10, 10], [-25, 20, 5]], + [[-5, 0, -5], [-15, 10, -10], [-25, 20, -5]], + [[5, 0, -5], [15, 10, -10], [25, 20, -5]] + ]; + + sections = rails2sections(rails); + + sweep(sections); + + #for(path = rails) { + hull_polyline3d(path, 0.5); + } + +![rails2sections](images/lib3x-rails2sections-1.JPG) + + use ; + use ; + use ; + use ; + + t_step = 0.05; + + rails = [ + bezier_curve(t_step, + [[1.25, 0, 5], [5, 20, 5], [16, 20, -2], [18, 20, 10], [30, 15, 8]] + ), + bezier_curve(t_step, + [[-1.25, 0, 5], [0, 20, 5], [16, 22, -2], [18, 20, 10], [30, 25, 8]] + ), + bezier_curve(t_step, + [[-1.25, 0, -5], [0, 20, -5], [16, 20, 1], [18, 27, -3], [20, 27, -5]] + ), + bezier_curve(t_step, + [[1.25, 0, -5], [5, 20, -5], [16, 20, 1], [18, 17.5, -3], [20, 17.5, -5]] + ) + ]; + + + sections = rails2sections(rails); + + sweep(sections); + + #for(path = rails) { + hull_polyline3d(path, 0.5); + } + +![rails2sections](images/lib3x-rails2sections-2.JPG) diff --git a/src/rails2sections.scad b/src/rails2sections.scad new file mode 100644 index 00000000..67009c9b --- /dev/null +++ b/src/rails2sections.scad @@ -0,0 +1,22 @@ +/** +* rails2sections.scad +* +* @copyright Justin Lin, 2021 +* @license https://opensource.org/licenses/lgpl-3.0.html +* +* @see https://openhome.cc/eGossip/OpenSCAD/lib3x-rails2sections.html +* +**/ + +function rails2sections(rails) = + let( + leng_rail = len(rails[0]), + leng_rails = len(rails) + ) + [ + for(i = 0; i < leng_rail; i = i + 1) + [ + for(j = 0; j < leng_rails; j = j + 1) + rails[j][i] + ] + ]; \ No newline at end of file