From 35e781f32984276830f69b50572e0d39f831b62a Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Sun, 14 May 2017 13:38:24 +0800 Subject: [PATCH] updated docs --- README.md | 1 + docs/images/lib-shape_trapezium-1.JPG | Bin 0 -> 8583 bytes docs/images/lib-shape_trapezium-2.JPG | Bin 0 -> 25794 bytes docs/lib-shape_trapezium.md | 51 ++++++++++++++++++++++++++ src/shape_trapezium.scad | 27 ++++++++++++++ 5 files changed, 79 insertions(+) create mode 100644 docs/images/lib-shape_trapezium-1.JPG create mode 100644 docs/images/lib-shape_trapezium-2.JPG create mode 100644 docs/lib-shape_trapezium.md create mode 100644 src/shape_trapezium.scad diff --git a/README.md b/README.md index 4c55f9af..aec561e1 100644 --- a/README.md +++ b/README.md @@ -88,6 +88,7 @@ Too many dependencies? Because OpenSCAD doesn't provide namespace management, I - [shape_pie](https://openhome.cc/eGossip/OpenSCAD/lib-shape_pie.html) - [shape_ellipse](https://openhome.cc/eGossip/OpenSCAD/lib-shape_ellipse.html) - [shape_square](https://openhome.cc/eGossip/OpenSCAD/lib-shape_square.html) + - [shape_trapezium](https://openhome.cc/eGossip/OpenSCAD/lib-shape_trapezium.html) - [shape_pentagram](https://openhome.cc/eGossip/OpenSCAD/lib-shape_pentagram.html) - [shape_superformula](https://openhome.cc/eGossip/OpenSCAD/lib-shape_superformula.html) diff --git a/docs/images/lib-shape_trapezium-1.JPG b/docs/images/lib-shape_trapezium-1.JPG new file mode 100644 index 0000000000000000000000000000000000000000..d09cfabcabaed11f53d20ca997079fe34a65d07f GIT binary patch literal 8583 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 literal 0 HcmV?d00001 diff --git a/docs/images/lib-shape_trapezium-2.JPG b/docs/images/lib-shape_trapezium-2.JPG new file mode 100644 index 0000000000000000000000000000000000000000..e500e8b24e2ac06e5f230ea54aa0cfbaf86bda9a GIT binary patch literal 25794 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 literal 0 HcmV?d00001 diff --git a/docs/lib-shape_trapezium.md b/docs/lib-shape_trapezium.md new file mode 100644 index 00000000..7293b45c --- /dev/null +++ b/docs/lib-shape_trapezium.md @@ -0,0 +1,51 @@ +# shape_trapezium + +Returns shape points of an isosceles trapezoid. They can be used with xxx_extrude modules of dotSCAD. The shape points can be also used with the built-in polygon module. + +## Parameters + +- `length` : The base length of an isosceles trapezium. It also accepts a vector `[a, b]`. `a` is the bottom base and `b` is the top base. +- `h` : The height of the cylinder or cone. +- `corner_r` : The circle radius which fits the edges of the bottom and the top. +- `$fa`, `$fs`, `$fn` : Used to control the corner fragments. Check [the circle module](https://en.wikibooks.org/wiki/OpenSCAD_User_Manual/Using_the_2D_Subsystem#circle) for more details. + +## Examples + + include ; + + polygon( + shape_trapezium([20, 10], + h = 20, + corner_r = 2) + ); + +![shape_trapezium](images/lib-shape_trapezium-1.JPG) + + include ; + include ; + include ; + include ; + include ; + + t_step = 0.05; + width = 2; + + shape_pts = shape_trapezium( + [20, 10], + h = 20, + corner_r = 2 + ); + + p0 = [0, 0, 0]; + p1 = [40, 60, 35]; + p2 = [-50, 70, 45]; + p3 = [20, 150, 55]; + p4 = [80, 50, 60]; + + path_pts = bezier_curve(t_step, + [p0, p1, p2, p3, p4] + ); + + path_extrude(shape_pts, path_pts); + +![shape_trapezium](images/lib-shape_trapezium-2.JPG) \ No newline at end of file diff --git a/src/shape_trapezium.scad b/src/shape_trapezium.scad new file mode 100644 index 00000000..08f3cf6d --- /dev/null +++ b/src/shape_trapezium.scad @@ -0,0 +1,27 @@ +/** +* shape_trapezium.scad +* +* Returns shape points of an isosceles trapezium. +* They can be used with xxx_extrude modules of dotSCAD. +* The shape points can be also used with the built-in polygon module. +* +* @copyright Justin Lin, 2017 +* @license https://opensource.org/licenses/lgpl-3.0.html +* +* @see https://openhome.cc/eGossip/OpenSCAD/lib-shape_trapezium.html +* +**/ + +include <__private__/__is_vector.scad>; +include <__private__/__frags.scad>; +include <__private__/__pie_for_rounding.scad>; +include <__private__/__half_trapezium.scad>; +include <__private__/__trapezium.scad>; + +function shape_trapezium(radius, h, corner_r = 0) = + __trapezium( + radius = radius, + h = h, + round_r = corner_r + ); + \ No newline at end of file