From f1116dc8cf1de0c5149218a838dd2babfc22c94e Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Wed, 13 Oct 2021 16:09:12 +0800 Subject: [PATCH] add doc --- README.md | 2 +- docs/images/lib3x-polyline_join-1.JPG | Bin 0 -> 30200 bytes docs/images/lib3x-polyline_join-2.JPG | Bin 0 -> 25677 bytes docs/lib3x-polyline_join.md | 40 ++++++++++++++++++++++++++ 4 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 docs/images/lib3x-polyline_join-1.JPG create mode 100644 docs/images/lib3x-polyline_join-2.JPG create mode 100644 docs/lib3x-polyline_join.md diff --git a/README.md b/README.md index 6bb474ca..2ff73e99 100644 --- a/README.md +++ b/README.md @@ -370,7 +370,7 @@ These examples incubate dotSCAD and dotSCAD refactors these examples. See [examp Signature | Description --|-- [**select**(i)](https://openhome.cc/eGossip/OpenSCAD/lib3x-select.html) | select module objects. -polyline_join | place a join on each point. Hull each pair of joins and union all convex hulls. +[`polyline_join(points)`](https://openhome.cc/eGossip/OpenSCAD/lib3x-polyline_join.html) | place a join on each point. Hull each pair of joins and union all convex hulls. ## Polyhedra diff --git a/docs/images/lib3x-polyline_join-1.JPG b/docs/images/lib3x-polyline_join-1.JPG new file mode 100644 index 0000000000000000000000000000000000000000..3376706e8a3da8e8ce9694a3b0202d57b1b89033 GIT binary patch literal 30200 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 V>l6^VL`flWR8IjGW7Lm{e*xdqJ{JH0 literal 0 HcmV?d00001 diff --git a/docs/images/lib3x-polyline_join-2.JPG b/docs/images/lib3x-polyline_join-2.JPG new file mode 100644 index 0000000000000000000000000000000000000000..3766f295180ec3d43b83dabbb8c20be0650c82e7 GIT binary patch literal 25677 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 + + polyline_join([[0, 0], [10, 0], [10, 10], [0, 10]]) + square(1); + + polyline_join([[15, 0], [25, 0], [25, 10], [15, 10]]) { + square(1); + circle(1); + square(1); + circle(2); + } + +![polyline_join](images/lib3x-polyline_join-1.JPG) + + use ; + + polyline_join([[0, 0, 0], [10, 0, 0], [10, 0, 10], [10, 10, 10]]) + cube(1); + + polyline_join([[15, 0, 0], [25, 0, 0], [25, 0, 10], [25, 10, 10]]) { + cube(1); + sphere(1); + cube(1); + sphere(2); + } + +![polyline_join](images/lib3x-polyline_join-2.JPG) + + +