discuss@lists.openscad.org

OpenSCAD general discussion Mailing-list

View all threads

Sweep-ish question

JB
Jordan Brown
Fri, Jan 9, 2026 2:49 AM

On 1/8/2026 6:40 PM, jon jonbondy.com via Discuss wrote:

Is there any way to move a path once you create it.  For example, if I
generate a helix() and I try to apply translate() or up(), I get error
messages.

Sorry.  This seems so fundamental.

It is fundamental, but just because it's fundamental doesn't mean you
can't make a mistake using it :-)

include <BOSL2/std.scad>

$fa = 1;
$fs = 0.5;

spiral = helix(turns=1, h=100, r1=50, r2 = 5);

up(10) path_sweep(circle(r=5), spiral);
path_sweep(circle(r=5), left(50, spiral));
path_sweep(circle(r=5), translate([20,20,20], spiral));

On 1/8/2026 6:40 PM, jon jonbondy.com via Discuss wrote: > > Is there any way to move a path once you create it.  For example, if I > generate a helix() and I try to apply translate() or up(), I get error > messages. > > Sorry.  This seems so fundamental. > It is fundamental, but just because it's fundamental doesn't mean you can't make a mistake using it :-) include <BOSL2/std.scad> $fa = 1; $fs = 0.5; spiral = helix(turns=1, h=100, r1=50, r2 = 5); up(10) path_sweep(circle(r=5), spiral); path_sweep(circle(r=5), left(50, spiral)); path_sweep(circle(r=5), translate([20,20,20], spiral));
JJ
jon jonbondy.com
Fri, Jan 9, 2026 1:07 PM

Thanks.

This works:

translate([-90, -40, 100], spiral1)

but this does not:

rotate([0, 0, 45], translate([-90, -40, 100], spiral1))

Does this mean that translate() is a function but rotate() is not?

Jon

On 1/8/2026 9:49 PM, Jordan Brown wrote:
On 1/8/2026 6:40 PM, jon jonbondy.com via Discuss wrote:

Is there any way to move a path once you create it.  For example, if I generate a helix() and I try to apply translate() or up(), I get error messages.

Sorry.  This seems so fundamental.

It is fundamental, but just because it's fundamental doesn't mean you can't make a mistake using it :-)

include <BOSL2/std.scad>

$fa = 1;
$fs = 0.5;

spiral = helix(turns=1, h=100, r1=50, r2 = 5);

up(10) path_sweep(circle(r=5), spiral);
path_sweep(circle(r=5), left(50, spiral));
path_sweep(circle(r=5), translate([20,20,20], spiral));

[cid:part1.glzJDMFL.vTmOpewt@jonbondy.com]

Thanks. This works: translate([-90, -40, 100], spiral1) but this does not: rotate([0, 0, 45], translate([-90, -40, 100], spiral1)) Does this mean that translate() is a function but rotate() is not? Jon On 1/8/2026 9:49 PM, Jordan Brown wrote: On 1/8/2026 6:40 PM, jon jonbondy.com via Discuss wrote: Is there any way to move a path once you create it. For example, if I generate a helix() and I try to apply translate() or up(), I get error messages. Sorry. This seems so fundamental. It is fundamental, but just because it's fundamental doesn't mean you can't make a mistake using it :-) include <BOSL2/std.scad> $fa = 1; $fs = 0.5; spiral = helix(turns=1, h=100, r1=50, r2 = 5); up(10) path_sweep(circle(r=5), spiral); path_sweep(circle(r=5), left(50, spiral)); path_sweep(circle(r=5), translate([20,20,20], spiral)); [cid:part1.glzJDMFL.vTmOpewt@jonbondy.com]
AM
Adrian Mariano
Fri, Jan 9, 2026 1:20 PM

There is indeed no rotate() function defined by BOSL2.

I recommend using zrot(), xrot() or yrot().  The BOSL2 equivalent of
rotate() is rot() but because it has many arguments, you can't just write
rotate(angle, point_list).  You must use a position argument and write
rotate(angle,p=point_list).  To avoid this nuisance, use the other ones, so
like in your example, zrot(45,translate(...,spiral1)).

On Fri, Jan 9, 2026 at 8:08 AM jon jonbondy.com via Discuss <
discuss@lists.openscad.org> wrote:

Thanks.

This works:

translate([-90, -40, 100], spiral1)

but this does not:

rotate([0, 0, 45], translate([-90, -40, 100], spiral1))

Does this mean that translate() is a function but rotate() is not?

Jon

On 1/8/2026 9:49 PM, Jordan Brown wrote:

On 1/8/2026 6:40 PM, jon jonbondy.com via Discuss wrote:

Is there any way to move a path once you create it.  For example, if I
generate a helix() and I try to apply translate() or up(), I get error
messages.

Sorry.  This seems so fundamental.

It is fundamental, but just because it's fundamental doesn't mean you
can't make a mistake using it :-)

include <BOSL2/std.scad>

$fa = 1;
$fs = 0.5;

spiral = helix(turns=1, h=100, r1=50, r2 = 5);

up(10) path_sweep(circle(r=5), spiral);
path_sweep(circle(r=5), left(50, spiral));
path_sweep(circle(r=5), translate([20,20,20], spiral));


OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org

There is indeed no rotate() function defined by BOSL2. I recommend using zrot(), xrot() or yrot(). The BOSL2 equivalent of rotate() is rot() but because it has many arguments, you can't just write rotate(angle, point_list). You must use a position argument and write rotate(angle,p=point_list). To avoid this nuisance, use the other ones, so like in your example, zrot(45,translate(...,spiral1)). On Fri, Jan 9, 2026 at 8:08 AM jon jonbondy.com via Discuss < discuss@lists.openscad.org> wrote: > Thanks. > > This works: > > translate([-90, -40, 100], spiral1) > > but this does not: > > rotate([0, 0, 45], translate([-90, -40, 100], spiral1)) > > Does this mean that translate() is a function but rotate() is not? > > Jon > > On 1/8/2026 9:49 PM, Jordan Brown wrote: > > On 1/8/2026 6:40 PM, jon jonbondy.com via Discuss wrote: > > Is there any way to move a path once you create it. For example, if I > generate a helix() and I try to apply translate() or up(), I get error > messages. > > Sorry. This seems so fundamental. > > > It is fundamental, but just because it's fundamental doesn't mean you > can't make a mistake using it :-) > > include <BOSL2/std.scad> > > $fa = 1; > $fs = 0.5; > > spiral = helix(turns=1, h=100, r1=50, r2 = 5); > > up(10) path_sweep(circle(r=5), spiral); > path_sweep(circle(r=5), left(50, spiral)); > path_sweep(circle(r=5), translate([20,20,20], spiral)); > > > > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org