Chow Loong Jin hyperair at debian.org
Wed Apr 29 05:25:41 EDT 2015

```On Wed, Apr
29, 2015 at 05:20:56PM +0800, Chow Loong Jin wrote:
> On Wed, Apr 29, 2015 at 01:32:58AM -0700, biskero wrote:
> > Ciao,
> >
> > thanks for the link.
> > Any suggestions on which function would apply to my case?
> > I am kind of new to openscad and it will help me a lot.
>
> sweep(), basically. sweep() has this signature:
>
>     sweep(shape, path_transforms, closed=false);
>
> shape is a list of 2D coordinates in a specific order. You can generate these by
> using one of the functions in <scad-utils/shapes.scad>. These coordinates can also
> be fed into polygon() to see what kind of shape you're getting.
>
> path_transforms is a list of 4x4 matrix transformations that are applied using
> multmatrix. Again, you can generate these individual transformations from
> are applied to the coordinates in shape to get their current position, and then
> joined to their previous operation.
>
> (translation, rotation, and scaling) that are analogous to the standard
> rotate(), translate() and scale() operations in OpenSCAD. These all generate 4x4
> matrices representing the operation. These matrices can be multiplied together
> to combine them in a similar order to how OpenSCAD works.
>
> closed is a boolean value defining whether or not you want your shape to be a
> closed loop. A rubber band is a closed loop, a string is open-ended.
>
>
> Here's an example:
>
>    sweep (circle (10, \$fn = 20), [translation ([0, 0, 0]), translation ([0, 0, 20])]);
>
> which is equivalent to:
>
>    linear_extrude (height = 20)
>    circle (r = 10, \$fn = 20);
>
> or
>
>    hull () {
>        translate ([0, 0, 0])
>        cylinder (r = 10, h = 0, \$fn = 20);
>
>        translate ([0, 0, 20])
>        cylinder (r = 10, h = 0, \$fn = 20);
>    }
>
> Note that the last implementation won't actually work because you can't have a
> cylinder with 0 height, but that's essentially what a circle is.

Oh, and here are two examples which are equivalent to help you understand how to
combine transformations:

rotate ([0, 0, 45])
translate ([10, 0, 0])
cube ([10, 10, 10]);

and

multmatrix (
rotation ([0, 0, 45]) *
translation ([10, 0, 0])
)
cube ([10, 10, 10]);

--
Kind regards,
Loong Jin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature