diff --git a/README.md b/README.md index b02093dd..fa9ee9c9 100644 --- a/README.md +++ b/README.md @@ -52,9 +52,12 @@ Some modules may depend on other modules. For example, the `polyline2d` module d - [archimedean_spiral](https://openhome.cc/eGossip/OpenSCAD/lib-archimedean_spiral.html) - [sphere_spiral](https://openhome.cc/eGossip/OpenSCAD/lib-sphere_spiral.html) -- Other +- Extrude - [box_extrude](https://openhome.cc/eGossip/OpenSCAD/lib-box_extrude.html) + - [ellipse_extrude](https://openhome.cc/eGossip/OpenSCAD/lib-ellipse_extrude.html) - [stereographic_extrude](https://openhome.cc/eGossip/OpenSCAD/lib-stereographic_extrude.html) + +- Other - [turtle2d](https://openhome.cc/eGossip/OpenSCAD/lib-turtle2d.html) - [turtle3d](https://openhome.cc/eGossip/OpenSCAD/lib-turtle3d.html) - [log](https://openhome.cc/eGossip/OpenSCAD/lib-log.html) diff --git a/docs/images/lib-ellipse_extrude-1.JPG b/docs/images/lib-ellipse_extrude-1.JPG new file mode 100644 index 00000000..a7d7b668 Binary files /dev/null and b/docs/images/lib-ellipse_extrude-1.JPG differ diff --git a/docs/images/lib-ellipse_extrude-2.JPG b/docs/images/lib-ellipse_extrude-2.JPG new file mode 100644 index 00000000..0dcfee73 Binary files /dev/null and b/docs/images/lib-ellipse_extrude-2.JPG differ diff --git a/docs/images/lib-ellipse_extrude-3.JPG b/docs/images/lib-ellipse_extrude-3.JPG new file mode 100644 index 00000000..b1f24b38 Binary files /dev/null and b/docs/images/lib-ellipse_extrude-3.JPG differ diff --git a/docs/images/lib-ellipse_extrude-4.JPG b/docs/images/lib-ellipse_extrude-4.JPG new file mode 100644 index 00000000..0a15ea38 Binary files /dev/null and b/docs/images/lib-ellipse_extrude-4.JPG differ diff --git a/docs/lib-ellipse_extrude.md b/docs/lib-ellipse_extrude.md new file mode 100644 index 00000000..b2f1e66e --- /dev/null +++ b/docs/lib-ellipse_extrude.md @@ -0,0 +1,49 @@ +# ellipse_extrude + +Extrudes a 2D object along the path of an ellipse from 0 to 180 degrees. The semi-major axis is not necessary because it's eliminated while calculating. + +## Parameters + +- `semi_minor_axis` : The semi-minor axis of the ellipse. +- `height` : The extruded height. It defaults to `semi_minor_axis` if ignored. The `height` should not greater than `semi_minor_axis`. If it's greater than `semi_minor_axis`, the module will use `semi_minor_axis`. +- `center`, `convexity`, `twist`, `slices`: The same as respective parameters of `linear_extrude`. + +## Examples + + include ; + + semi_minor_axis = 5; + + ellipse_extrude(semi_minor_axis) + circle(semi_minor_axis * 2); + +![ellipse_extrude](images/lib-ellipse_extrude-1.JPG) + + include ; + + semi_minor_axis = 5; + + ellipse_extrude(semi_minor_axis, height = 4.5) + text("A", valign = "center", halign = "center"); + +![ellipse_extrude](images/lib-ellipse_extrude-2.JPG) + + include ; + + semi_minor_axis = 5; + + ellipse_extrude(semi_minor_axis) + text("♥", size = 40, valign = "center", halign = "center"); + mirror([0, 0, 1]) ellipse_extrude(semi_minor_axis) + text("♥", size = 40, valign = "center", halign = "center"); + +![ellipse_extrude](images/lib-ellipse_extrude-3.JPG) + + include ; + + semi_minor_axis = 10; + + ellipse_extrude(semi_minor_axis, twist = 30, slices = 10) + text("♥", size = 40, valign = "center", halign = "center"); + +![ellipse_extrude](images/lib-ellipse_extrude-4.JPG)