From 9d3d41be17c44efb3797117513a89dbbda0be77b Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Thu, 4 May 2017 10:29:31 +0800 Subject: [PATCH] update docs --- README.md | 1 + docs/images/lib-ring_extrude-1.JPG | Bin 0 -> 30269 bytes docs/images/lib-ring_extrude-2.JPG | Bin 0 -> 24217 bytes docs/lib-path_extrude.md | 2 +- docs/lib-ring_extrude.md | 52 +++++++++++++++++++++++++++++ 5 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 docs/images/lib-ring_extrude-1.JPG create mode 100644 docs/images/lib-ring_extrude-2.JPG create mode 100644 docs/lib-ring_extrude.md diff --git a/README.md b/README.md index ac774808..19c3d2f2 100644 --- a/README.md +++ b/README.md @@ -71,6 +71,7 @@ If OpenSCAD generates "WARNING: Ignoring unknown xxx function" or "WARNING: Igno - [ellipse_extrude](https://openhome.cc/eGossip/OpenSCAD/lib-ellipse_extrude.html) - [stereographic_extrude](https://openhome.cc/eGossip/OpenSCAD/lib-stereographic_extrude.html) - [path_extrude](https://openhome.cc/eGossip/OpenSCAD/lib-path_extrude.html) + - [ring_extrude](https://openhome.cc/eGossip/OpenSCAD/lib-ring_extrude.html) - Other - [turtle2d](https://openhome.cc/eGossip/OpenSCAD/lib-turtle2d.html) diff --git a/docs/images/lib-ring_extrude-1.JPG b/docs/images/lib-ring_extrude-1.JPG new file mode 100644 index 0000000000000000000000000000000000000000..e456cc9b60b0702d1513c2566a8103e0693157b0 GIT binary patch literal 30269 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 literal 0 HcmV?d00001 diff --git a/docs/lib-path_extrude.md b/docs/lib-path_extrude.md index 9c2bab9e..4bc13267 100644 --- a/docs/lib-path_extrude.md +++ b/docs/lib-path_extrude.md @@ -2,7 +2,7 @@ It extrudes a 2D shape along a path. This module is suitable for a path created by a continuous function. -It depends on the rotate_p function and the polysections module. Remember to include "rotate_p.scad" and "polysections.scad". +It depends on the `rotate_p` function and the `polysections` module. Remember to include "rotate_p.scad" and "polysections.scad". When using this module, you should use points to represent the 2D shape. You need to provide indexes of triangles, too. This module provides two prepared triangles indexes. One is `"RADIAL"`. See [polysections](https://openhome.cc/eGossip/OpenSCAD/lib-polysections.html) for details. diff --git a/docs/lib-ring_extrude.md b/docs/lib-ring_extrude.md new file mode 100644 index 00000000..a98ad382 --- /dev/null +++ b/docs/lib-ring_extrude.md @@ -0,0 +1,52 @@ +# ring_extrude + +Rotational extrusion spins a 2D shape around the Z-axis. It's similar to the built-in `rotate_extrude`; however, it supports `angle`, `twist` and `scale` options. + +Because we cannot retrieve the shape points of built-in 2D modules, it's necessary to provide `shapt_pts` and `triangles`. + +This module depends on `rotate_p`, `cross_section` and `polysections`. Remember to include corresponding ".scad". + +This module provides two prepared triangles indexes. One is `"RADIAL"`. See [polysections](https://openhome.cc/eGossip/OpenSCAD/lib-polysections.html) for details. + +## Parameters + +- `shape_pts` : A list of points represent a shape. See the example below. +- `radius` : The circle radius. +- `angle` : Defaults to 360. Specifies the number of degrees to sweep, starting at the positive X axis. +- `twist` : The number of degrees of through which the shape is extruded. +- `scale` : Scales the 2D shape by this value over the length of the extrusion. Scale can be a scalar or a vector. +- `triangles` : `"RADIAL"` (default), `"HOLLOW"` or user-defined indexes. See [polysections](https://openhome.cc/eGossip/OpenSCAD/lib-polysections.html) for details. + +## Examples + + include ; + include ; + include ; + include ; + + shape_pts = [ + [-2, -10], + [-2, 10], + [2, 10], + [2, -10] + ]; + + ring_extrude(shape_pts, radius = 50, twist = 180); + +![ring_extrude](images/lib-ring_extrude-1.JPG) + + include ; + include ; + include ; + include ; + + shape_pts = [ + [-2, -10], + [-2, 10], + [2, 10], + [2, -10] + ]; + + ring_extrude(shape_pts, radius = 50, angle = 180, scale = 2); + +![ring_extrude](images/lib-ring_extrude-2.JPG)