NH
nop head
Fri, Aug 15, 2025 8:07 AM
Also, I have modules that do just do echo for BOM generation. So they don't
operate on their children or make shapes.
On Fri, 15 Aug 2025 at 06:24, Jordan Brown via Discuss <
discuss@lists.openscad.org> wrote:
On 8/14/2025 8:58 PM, Todd Allen via Discuss wrote:
I find modules which neither generate shapes nor do operations on shapes
of their children very useful. I increasingly like to use modules which
only set or update special $ variables based on parameters to the module
and then call children() which use those variables.
I'd say that in a sense that's doing something to the children. But yet,
that's an interesting case that isn't clearly addressed by the
object/operator split. Like I said, it's a useful categorization but not a
complete description.
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org
Also, I have modules that do just do echo for BOM generation. So they don't
operate on their children or make shapes.
On Fri, 15 Aug 2025 at 06:24, Jordan Brown via Discuss <
discuss@lists.openscad.org> wrote:
> On 8/14/2025 8:58 PM, Todd Allen via Discuss wrote:
>
> I find modules which neither generate shapes nor do operations on shapes
> of their children very useful. I increasingly like to use modules which
> only set or update special $ variables based on parameters to the module
> and then call children() which use those variables.
>
> I'd say that in a sense that's doing something to the children. But yet,
> that's an interesting case that isn't clearly addressed by the
> object/operator split. Like I said, it's a useful categorization but not a
> complete description.
>
>
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org
MM
Michael Marx (spintel)
Fri, Aug 15, 2025 8:44 AM
The OpenSCAD Mailing-list uses Mailman3.
Subscribers can change their Profile settings via https://lists.openscad.org/profile, you will need to sign-in.
Profile settings are also under the top/right user menu in the EMPATHY archive browser.
The settings are: (the starred setting will prevent duplicates when someone uses Reply-All)
I haven't checked, but quite possibly the mailing list suppresses the copy that it would send to you when it sees that you're on the To/CC list and so would have gotten a copy directly. That's one of the Mailman 2 options.
So your mail client is not doing something magic... you're just looking at a message that the mailing list didn't have a chance to muck with.
The OpenSCAD Mailing-list uses Mailman3.
Subscribers can change their Profile settings via https://lists.openscad.org/profile, you will need to sign-in.
Profile settings are also under the top/right user menu in the EMPATHY archive browser.
The settings are: (the starred setting will prevent duplicates when someone uses Reply-All)
I haven't checked, but quite possibly the mailing list suppresses the copy that it would send to you when it sees that you're on the To/CC list and so would have gotten a copy directly. That's one of the Mailman 2 options.
So your mail client is not doing something magic... you're just looking at a message that the mailing list didn't have a chance to muck with.
L
larry
Mon, Dec 8, 2025 4:06 PM
On Thu, 2025-08-14 at 10:58 +0200, Peter Kriens via Discuss wrote:
Maybe if you're purely data driven?
What I like about the attachment model is how you never have to
figure out positions. Worst case a shift from a well known position
relative to another object. You can get highly complex components and
easily change major parts without having to refactor and recalculate
a lot. Positions then quickly become complex to calculate when the
objects are at angles. I learned that for injection molding
everything is slightly angled to allow the release of the mold but it
means there are never any easy modulo 90 degree angles. (The
rounded_prism() is my hero).
The absolute crown enabled by the attachment model is however, the
prism_connector ...
PastedGraphic-3.png
When I try this one, it doesn't understand "attach_part()". I could not
find it in BOSL2.
diff()
tube( id=50, h = 10, rounding=1, wall=2)// the ring
let(tube=parent())
attach_part("inside")
prism_connector( // the solid tube on the
inside of
circle(d=7), // the ring
parent(), LEFT,
parent(), RIGHT,
fillet=1
)
restore(tube)
tag("remove")
prism_connector( // the inside of the tube
with
circle(d=5), // exit on the outside of
the ring
parent(), LEFT,
parent(), RIGHT,
fillet=1
)
;
For me the attachment model of BOSL2 is the main reason I did not
dive into Python. It is absolute stunning, it is now hard for me to
believe you can make complex modular components without them.
Peter Kriens
On 13 Aug 2025, at 20:46, Leonard Martin Struttmann via Discuss
discuss@lists.openscad.org wrote:
That's good, and very efficient for designs of that type.
However, it's been years since I designed any models of that type.
The vast majority of my designs (models of existing printed circuit
boards) consists of placing cubes and cylinders at known distances
from the origin. And it's all table-driven. In my workflow, I
never place a shape in reference to an existing shape.
On Wed, Aug 13, 2025 at 11:40 AM Jordan Brown
openscad@jordan.maileater.net wrote:
On 8/13/2025 4:32 AM, Leonard Martin Struttmann via Discuss
wrote:
However, I have yet to find a use-case in my projects where
attachments are easier than the native translate()/rotate()
OpenSCAD primitives.
Quick: build a cube with a cylinder sticking out of the right
side.
include <BOSL2/std.scad>
cube(10) attach(RIGHT) cylinder(h=10, r=3);
Yes, you can do that with rotate and translate. (Or is it
translate and rotate?)
How about if the cylinder is sticking out the corner of the cube?
include <BOSL2/std.scad>
cube(10) attach(RIGHT+FRONT+TOP) cylinder(h=10, r=3);
Now put a sphere at the end of the cylinder, with the sphere
barely touching the cylinder:
include <BOSL2/std.scad>
cube(10)
attach(RIGHT) cylinder(h=10, r=3)
attach(TOP, BOTTOM) sphere(r=3);
cubesz = 10;
cylh = 10;
spherer = 3;
cube(cubesz);
translate([cubesz, cubesz/2, cubesz/2]) rotate([0,90,0]) {
cylinder(h=cylh, r=3);
translate([0,0,cylh + spherer])
sphere(r=spherer);
}
Note: I didn't need the variables, but I did if I wanted to
avoid duplicating the numbers.
On Thu, 2025-08-14 at 10:58 +0200, Peter Kriens via Discuss wrote:
> Maybe if you're purely data driven?
>
> What I like about the attachment model is how you never have to
> figure out positions. Worst case a shift from a well known position
> relative to another object. You can get highly complex components and
> easily change major parts without having to refactor and recalculate
> a lot. Positions then quickly become complex to calculate when the
> objects are at angles. I learned that for injection molding
> everything is slightly angled to allow the release of the mold but it
> means there are never any easy modulo 90 degree angles. (The
> rounded_prism() is my hero).
>
> The absolute crown enabled by the attachment model is however, the
> prism_connector ...
>
> PastedGraphic-3.png
When I try this one, it doesn't understand "attach_part()". I could not
find it in BOSL2.
> > diff()
> > tube( id=50, h = 10, rounding=1, wall=2)// the ring
> > let(tube=parent())
> > attach_part("inside")
> > prism_connector( // the solid tube on the
> > inside of
> > circle(d=7), // the ring
> > parent(), LEFT,
> > parent(), RIGHT,
> > fillet=1
> > )
> > restore(tube)
> > tag("remove")
> > prism_connector( // the inside of the tube
> > with
> > circle(d=5), // exit on the outside of
> > the ring
> > parent(), LEFT,
> > parent(), RIGHT,
> > fillet=1
> > )
> > ;
>
>
> For me the attachment model of BOSL2 is the main reason I did not
> dive into Python. It is absolute stunning, it is now hard for me to
> believe you can make complex modular components without them.
>
> Peter Kriens
>
>
>
> > On 13 Aug 2025, at 20:46, Leonard Martin Struttmann via Discuss
> > <discuss@lists.openscad.org> wrote:
> >
> > That's good, and very efficient for designs of that type.
> >
> > However, it's been years since I designed any models of that type.
> > The vast majority of my designs (models of existing printed circuit
> > boards) consists of placing cubes and cylinders at known distances
> > from the origin. And it's all table-driven. In my workflow, I
> > never place a shape in reference to an existing shape.
> >
> >
> > On Wed, Aug 13, 2025 at 11:40 AM Jordan Brown
> > <openscad@jordan.maileater.net> wrote:
> > > On 8/13/2025 4:32 AM, Leonard Martin Struttmann via Discuss
> > > wrote:
> > >
> > > > However, I have yet to find a use-case in my projects where
> > > > attachments are easier than the native translate()/rotate()
> > > > OpenSCAD primitives.
> > >
> > > Quick: build a cube with a cylinder sticking out of the right
> > > side.
> > >
> > > > include <BOSL2/std.scad>
> > > >
> > > > cube(10) attach(RIGHT) cylinder(h=10, r=3);
> > >
> > >
> > >
> > > Yes, you can do that with rotate and translate. (Or is it
> > > translate and rotate?)
> > > How about if the cylinder is sticking out the corner of the cube?
> > >
> > > > include <BOSL2/std.scad>
> > > >
> > > > cube(10) attach(RIGHT+FRONT+TOP) cylinder(h=10, r=3);
> > >
> > > Now put a sphere at the end of the cylinder, with the sphere
> > > barely touching the cylinder:
> > >
> > > > include <BOSL2/std.scad>
> > > >
> > > > cube(10)
> > > > attach(RIGHT) cylinder(h=10, r=3)
> > > > attach(TOP, BOTTOM) sphere(r=3);
> > >
> > > Versus:
> > >
> > > > cubesz = 10;
> > > > cylh = 10;
> > > > spherer = 3;
> > > > cube(cubesz);
> > > > translate([cubesz, cubesz/2, cubesz/2]) rotate([0,90,0]) {
> > > > cylinder(h=cylh, r=3);
> > > > translate([0,0,cylh + spherer])
> > > > sphere(r=spherer);
> > > > }
> > >
> > > Note: I didn't *need* the variables, but I did if I wanted to
> > > avoid duplicating the numbers.
> > >
> > >
> > _______________________________________________
> > OpenSCAD mailing list
> > To unsubscribe send an email to discuss-leave@lists.openscad.org
>
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org
AM
Adrian Mariano
Mon, Dec 8, 2025 9:37 PM
larry, sounds like you need to update your BOSL2. The attach_part()
feature is fairly new.
On Mon, Dec 8, 2025 at 11:06 AM larry via Discuss <
discuss@lists.openscad.org> wrote:
On Thu, 2025-08-14 at 10:58 +0200, Peter Kriens via Discuss wrote:
Maybe if you're purely data driven?
What I like about the attachment model is how you never have to
figure out positions. Worst case a shift from a well known position
relative to another object. You can get highly complex components and
easily change major parts without having to refactor and recalculate
a lot. Positions then quickly become complex to calculate when the
objects are at angles. I learned that for injection molding
everything is slightly angled to allow the release of the mold but it
means there are never any easy modulo 90 degree angles. (The
rounded_prism() is my hero).
The absolute crown enabled by the attachment model is however, the
prism_connector ...
PastedGraphic-3.png
When I try this one, it doesn't understand "attach_part()". I could not
find it in BOSL2.
diff()
tube( id=50, h = 10, rounding=1, wall=2)// the ring
let(tube=parent())
attach_part("inside")
prism_connector( // the solid tube on the
inside of
circle(d=7), // the ring
parent(), LEFT,
parent(), RIGHT,
fillet=1
)
restore(tube)
tag("remove")
prism_connector( // the inside of the tube
with
circle(d=5), // exit on the outside of
the ring
parent(), LEFT,
parent(), RIGHT,
fillet=1
)
;
For me the attachment model of BOSL2 is the main reason I did not
dive into Python. It is absolute stunning, it is now hard for me to
believe you can make complex modular components without them.
Peter Kriens
On 13 Aug 2025, at 20:46, Leonard Martin Struttmann via Discuss
discuss@lists.openscad.org wrote:
That's good, and very efficient for designs of that type.
However, it's been years since I designed any models of that type.
The vast majority of my designs (models of existing printed circuit
boards) consists of placing cubes and cylinders at known distances
from the origin. And it's all table-driven. In my workflow, I
never place a shape in reference to an existing shape.
On Wed, Aug 13, 2025 at 11:40 AM Jordan Brown
openscad@jordan.maileater.net wrote:
On 8/13/2025 4:32 AM, Leonard Martin Struttmann via Discuss
wrote:
However, I have yet to find a use-case in my projects where
attachments are easier than the native translate()/rotate()
OpenSCAD primitives.
Quick: build a cube with a cylinder sticking out of the right
side.
include <BOSL2/std.scad>
cube(10) attach(RIGHT) cylinder(h=10, r=3);
Yes, you can do that with rotate and translate. (Or is it
translate and rotate?)
How about if the cylinder is sticking out the corner of the cube?
include <BOSL2/std.scad>
cube(10) attach(RIGHT+FRONT+TOP) cylinder(h=10, r=3);
Now put a sphere at the end of the cylinder, with the sphere
barely touching the cylinder:
include <BOSL2/std.scad>
cube(10)
attach(RIGHT) cylinder(h=10, r=3)
attach(TOP, BOTTOM) sphere(r=3);
cubesz = 10;
cylh = 10;
spherer = 3;
cube(cubesz);
translate([cubesz, cubesz/2, cubesz/2]) rotate([0,90,0]) {
cylinder(h=cylh, r=3);
translate([0,0,cylh + spherer])
sphere(r=spherer);
}
Note: I didn't need the variables, but I did if I wanted to
avoid duplicating the numbers.
larry, sounds like you need to update your BOSL2. The attach_part()
feature is fairly new.
On Mon, Dec 8, 2025 at 11:06 AM larry via Discuss <
discuss@lists.openscad.org> wrote:
> On Thu, 2025-08-14 at 10:58 +0200, Peter Kriens via Discuss wrote:
> > Maybe if you're purely data driven?
> >
> > What I like about the attachment model is how you never have to
> > figure out positions. Worst case a shift from a well known position
> > relative to another object. You can get highly complex components and
> > easily change major parts without having to refactor and recalculate
> > a lot. Positions then quickly become complex to calculate when the
> > objects are at angles. I learned that for injection molding
> > everything is slightly angled to allow the release of the mold but it
> > means there are never any easy modulo 90 degree angles. (The
> > rounded_prism() is my hero).
> >
> > The absolute crown enabled by the attachment model is however, the
> > prism_connector ...
> >
> > PastedGraphic-3.png
>
> When I try this one, it doesn't understand "attach_part()". I could not
> find it in BOSL2.
>
> > > diff()
> > > tube( id=50, h = 10, rounding=1, wall=2)// the ring
> > > let(tube=parent())
> > > attach_part("inside")
> > > prism_connector( // the solid tube on the
> > > inside of
> > > circle(d=7), // the ring
> > > parent(), LEFT,
> > > parent(), RIGHT,
> > > fillet=1
> > > )
> > > restore(tube)
> > > tag("remove")
> > > prism_connector( // the inside of the tube
> > > with
> > > circle(d=5), // exit on the outside of
> > > the ring
> > > parent(), LEFT,
> > > parent(), RIGHT,
> > > fillet=1
> > > )
> > > ;
> >
> >
> > For me the attachment model of BOSL2 is the main reason I did not
> > dive into Python. It is absolute stunning, it is now hard for me to
> > believe you can make complex modular components without them.
> >
> > Peter Kriens
> >
> >
> >
> > > On 13 Aug 2025, at 20:46, Leonard Martin Struttmann via Discuss
> > > <discuss@lists.openscad.org> wrote:
> > >
> > > That's good, and very efficient for designs of that type.
> > >
> > > However, it's been years since I designed any models of that type.
> > > The vast majority of my designs (models of existing printed circuit
> > > boards) consists of placing cubes and cylinders at known distances
> > > from the origin. And it's all table-driven. In my workflow, I
> > > never place a shape in reference to an existing shape.
> > >
> > >
> > > On Wed, Aug 13, 2025 at 11:40 AM Jordan Brown
> > > <openscad@jordan.maileater.net> wrote:
> > > > On 8/13/2025 4:32 AM, Leonard Martin Struttmann via Discuss
> > > > wrote:
> > > >
> > > > > However, I have yet to find a use-case in my projects where
> > > > > attachments are easier than the native translate()/rotate()
> > > > > OpenSCAD primitives.
> > > >
> > > > Quick: build a cube with a cylinder sticking out of the right
> > > > side.
> > > >
> > > > > include <BOSL2/std.scad>
> > > > >
> > > > > cube(10) attach(RIGHT) cylinder(h=10, r=3);
> > > >
> > > >
> > > >
> > > > Yes, you can do that with rotate and translate. (Or is it
> > > > translate and rotate?)
> > > > How about if the cylinder is sticking out the corner of the cube?
> > > >
> > > > > include <BOSL2/std.scad>
> > > > >
> > > > > cube(10) attach(RIGHT+FRONT+TOP) cylinder(h=10, r=3);
> > > >
> > > > Now put a sphere at the end of the cylinder, with the sphere
> > > > barely touching the cylinder:
> > > >
> > > > > include <BOSL2/std.scad>
> > > > >
> > > > > cube(10)
> > > > > attach(RIGHT) cylinder(h=10, r=3)
> > > > > attach(TOP, BOTTOM) sphere(r=3);
> > > >
> > > > Versus:
> > > >
> > > > > cubesz = 10;
> > > > > cylh = 10;
> > > > > spherer = 3;
> > > > > cube(cubesz);
> > > > > translate([cubesz, cubesz/2, cubesz/2]) rotate([0,90,0]) {
> > > > > cylinder(h=cylh, r=3);
> > > > > translate([0,0,cylh + spherer])
> > > > > sphere(r=spherer);
> > > > > }
> > > >
> > > > Note: I didn't *need* the variables, but I did if I wanted to
> > > > avoid duplicating the numbers.
> > > >
> > > >
> > > _______________________________________________
> > > OpenSCAD mailing list
> > > To unsubscribe send an email to discuss-leave@lists.openscad.org
> >
> > _______________________________________________
> > OpenSCAD mailing list
> > To unsubscribe send an email to discuss-leave@lists.openscad.org
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org
L
larry
Tue, Dec 9, 2025 12:14 AM
On Mon, 2025-12-08 at 16:37 -0500, Adrian Mariano via Discuss wrote:
larry, sounds like you need to update your BOSL2. The attach_part()
feature is fairly new.
I did, but I put it in the wrong place. It's there now, but Peter's
code still gives me the unknown module error for attach_part.
I think there's more to it. The code really doesn't look right.
I guess I'll try the attachment tutorial.
//----
include <BOSL2/std.scad>
$fn= $preview ? 60 : 180;
diff()
tube( id=50, h = 10, rounding=1, wall=2) // the ring
let(tube=parent())
attach_part("inside")
prism_connector( // the solid tube on the inside of
circle(d=7), // the ring
parent(), LEFT,
parent(), RIGHT,
fillet=1
)
restore(tube)
tag("remove")
prism_connector( // the inside of the tubewith
circle(d=5), // exit on the outside of the ring
parent(), LEFT,
parent(), RIGHT,
fillet=1
);
//----
On Thu, 2025-08-14 at 10:58 +0200, Peter Kriens via Discuss wrote:
Maybe if you're purely data driven?
What I like about the attachment model is how you never have to
figure out positions. Worst case a shift from a well known
position
relative to another object. You can get highly complex components
and
easily change major parts without having to refactor and
recalculate
a lot. Positions then quickly become complex to calculate when
the
objects are at angles. I learned that for injection molding
everything is slightly angled to allow the release of the mold
but it
means there are never any easy modulo 90 degree angles. (The
rounded_prism() is my hero).
The absolute crown enabled by the attachment model is however,
the
prism_connector ...
PastedGraphic-3.png
When I try this one, it doesn't understand "attach_part()". I could
not
find it in BOSL2.
diff()
tube( id=50, h = 10, rounding=1, wall=2)// the ring
let(tube=parent())
attach_part("inside")
prism_connector( // the solid tube on the
inside of
circle(d=7), // the ring
parent(), LEFT,
parent(), RIGHT,
fillet=1
)
restore(tube)
tag("remove")
prism_connector( // the inside of the tube
with
circle(d=5), // exit on the outside of
the ring
parent(), LEFT,
parent(), RIGHT,
fillet=1
)
;
For me the attachment model of BOSL2 is the main reason I did not
dive into Python. It is absolute stunning, it is now hard for me
to
believe you can make complex modular components without them.
Peter Kriens
On 13 Aug 2025, at 20:46, Leonard Martin Struttmann via Discuss
discuss@lists.openscad.org wrote:
That's good, and very efficient for designs of that type.
However, it's been years since I designed any models of that
type.
The vast majority of my designs (models of existing printed
circuit
boards) consists of placing cubes and cylinders at known
distances
from the origin. And it's all table-driven. In my workflow, I
never place a shape in reference to an existing shape.
On Wed, Aug 13, 2025 at 11:40 AM Jordan Brown
openscad@jordan.maileater.net wrote:
On 8/13/2025 4:32 AM, Leonard Martin Struttmann via Discuss
wrote:
However, I have yet to find a use-case in my projects where
attachments are easier than the native translate()/rotate()
OpenSCAD primitives.
Quick: build a cube with a cylinder sticking out of the
right
side.
include <BOSL2/std.scad>
cube(10) attach(RIGHT) cylinder(h=10, r=3);
Yes, you can do that with rotate and translate. (Or is it
translate and rotate?)
How about if the cylinder is sticking out the corner of the
cube?
include <BOSL2/std.scad>
cube(10) attach(RIGHT+FRONT+TOP) cylinder(h=10, r=3);
Now put a sphere at the end of the cylinder, with the sphere
barely touching the cylinder:
include <BOSL2/std.scad>
cube(10)
attach(RIGHT) cylinder(h=10, r=3)
attach(TOP, BOTTOM) sphere(r=3);
cubesz = 10;
cylh = 10;
spherer = 3;
cube(cubesz);
translate([cubesz, cubesz/2, cubesz/2]) rotate([0,90,0]) {
cylinder(h=cylh, r=3);
translate([0,0,cylh + spherer])
sphere(r=spherer);
}
Note: I didn't need the variables, but I did if I wanted
to
avoid duplicating the numbers.
On Mon, 2025-12-08 at 16:37 -0500, Adrian Mariano via Discuss wrote:
> larry, sounds like you need to update your BOSL2. The attach_part()
> feature is fairly new.
I did, but I put it in the wrong place. It's there now, but Peter's
code still gives me the unknown module error for attach_part.
I think there's more to it. The code really doesn't look right.
I guess I'll try the attachment tutorial.
//----
include <BOSL2/std.scad>
$fn= $preview ? 60 : 180;
diff()
tube( id=50, h = 10, rounding=1, wall=2) // the ring
let(tube=parent())
attach_part("inside")
prism_connector( // the solid tube on the inside of
circle(d=7), // the ring
parent(), LEFT,
parent(), RIGHT,
fillet=1
)
restore(tube)
tag("remove")
prism_connector( // the inside of the tubewith
circle(d=5), // exit on the outside of the ring
parent(), LEFT,
parent(), RIGHT,
fillet=1
);
//----
> On Mon, Dec 8, 2025 at 11:06 AM larry via Discuss
> <discuss@lists.openscad.org> wrote:
> > On Thu, 2025-08-14 at 10:58 +0200, Peter Kriens via Discuss wrote:
> > > Maybe if you're purely data driven?
> > >
> > > What I like about the attachment model is how you never have to
> > > figure out positions. Worst case a shift from a well known
> > > position
> > > relative to another object. You can get highly complex components
> > > and
> > > easily change major parts without having to refactor and
> > > recalculate
> > > a lot. Positions then quickly become complex to calculate when
> > > the
> > > objects are at angles. I learned that for injection molding
> > > everything is slightly angled to allow the release of the mold
> > > but it
> > > means there are never any easy modulo 90 degree angles. (The
> > > rounded_prism() is my hero).
> > >
> > > The absolute crown enabled by the attachment model is however,
> > > the
> > > prism_connector ...
> > >
> > > PastedGraphic-3.png
> >
> > When I try this one, it doesn't understand "attach_part()". I could
> > not
> > find it in BOSL2.
> >
> > > > diff()
> > > > tube( id=50, h = 10, rounding=1, wall=2)// the ring
> > > > let(tube=parent())
> > > > attach_part("inside")
> > > > prism_connector( // the solid tube on the
> > > > inside of
> > > > circle(d=7), // the ring
> > > > parent(), LEFT,
> > > > parent(), RIGHT,
> > > > fillet=1
> > > > )
> > > > restore(tube)
> > > > tag("remove")
> > > > prism_connector( // the inside of the tube
> > > > with
> > > > circle(d=5), // exit on the outside of
> > > > the ring
> > > > parent(), LEFT,
> > > > parent(), RIGHT,
> > > > fillet=1
> > > > )
> > > > ;
> > >
> > >
> > > For me the attachment model of BOSL2 is the main reason I did not
> > > dive into Python. It is absolute stunning, it is now hard for me
> > > to
> > > believe you can make complex modular components without them.
> > >
> > > Peter Kriens
> > >
> > >
> > >
> > > > On 13 Aug 2025, at 20:46, Leonard Martin Struttmann via Discuss
> > > > <discuss@lists.openscad.org> wrote:
> > > >
> > > > That's good, and very efficient for designs of that type.
> > > >
> > > > However, it's been years since I designed any models of that
> > > > type.
> > > > The vast majority of my designs (models of existing printed
> > > > circuit
> > > > boards) consists of placing cubes and cylinders at known
> > > > distances
> > > > from the origin. And it's all table-driven. In my workflow, I
> > > > never place a shape in reference to an existing shape.
> > > >
> > > >
> > > > On Wed, Aug 13, 2025 at 11:40 AM Jordan Brown
> > > > <openscad@jordan.maileater.net> wrote:
> > > > > On 8/13/2025 4:32 AM, Leonard Martin Struttmann via Discuss
> > > > > wrote:
> > > > >
> > > > > > However, I have yet to find a use-case in my projects where
> > > > > > attachments are easier than the native translate()/rotate()
> > > > > > OpenSCAD primitives.
> > > > >
> > > > > Quick: build a cube with a cylinder sticking out of the
> > > > > right
> > > > > side.
> > > > >
> > > > > > include <BOSL2/std.scad>
> > > > > >
> > > > > > cube(10) attach(RIGHT) cylinder(h=10, r=3);
> > > > >
> > > > >
> > > > >
> > > > > Yes, you can do that with rotate and translate. (Or is it
> > > > > translate and rotate?)
> > > > > How about if the cylinder is sticking out the corner of the
> > > > > cube?
> > > > >
> > > > > > include <BOSL2/std.scad>
> > > > > >
> > > > > > cube(10) attach(RIGHT+FRONT+TOP) cylinder(h=10, r=3);
> > > > >
> > > > > Now put a sphere at the end of the cylinder, with the sphere
> > > > > barely touching the cylinder:
> > > > >
> > > > > > include <BOSL2/std.scad>
> > > > > >
> > > > > > cube(10)
> > > > > > attach(RIGHT) cylinder(h=10, r=3)
> > > > > > attach(TOP, BOTTOM) sphere(r=3);
> > > > >
> > > > > Versus:
> > > > >
> > > > > > cubesz = 10;
> > > > > > cylh = 10;
> > > > > > spherer = 3;
> > > > > > cube(cubesz);
> > > > > > translate([cubesz, cubesz/2, cubesz/2]) rotate([0,90,0]) {
> > > > > > cylinder(h=cylh, r=3);
> > > > > > translate([0,0,cylh + spherer])
> > > > > > sphere(r=spherer);
> > > > > > }
> > > > >
> > > > > Note: I didn't *need* the variables, but I did if I wanted
> > > > > to
> > > > > avoid duplicating the numbers.
> > > > >
> > > > >
> > > > _______________________________________________
> > > > OpenSCAD mailing list
> > > > To unsubscribe send an email to
> > > > discuss-leave@lists.openscad.org
> > >
> > > _______________________________________________
> > > OpenSCAD mailing list
> > > To unsubscribe send an email to discuss-leave@lists.openscad.org
> > _______________________________________________
> > OpenSCAD mailing list
> > To unsubscribe send an email to discuss-leave@lists.openscad.org
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org
AM
Adrian Mariano
Tue, Dec 9, 2025 12:59 AM
If you get unknown module for attach_part then your BOSL2 is still not
updated. You need to figure that out. The code is correct and produces
the image Peter showed.
On Mon, Dec 8, 2025 at 7:15 PM larry via Discuss discuss@lists.openscad.org
wrote:
On Mon, 2025-12-08 at 16:37 -0500, Adrian Mariano via Discuss wrote:
larry, sounds like you need to update your BOSL2. The attach_part()
feature is fairly new.
I did, but I put it in the wrong place. It's there now, but Peter's
code still gives me the unknown module error for attach_part.
I think there's more to it. The code really doesn't look right.
I guess I'll try the attachment tutorial.
//----
include <BOSL2/std.scad>
$fn= $preview ? 60 : 180;
diff()
tube( id=50, h = 10, rounding=1, wall=2) // the ring
let(tube=parent())
attach_part("inside")
prism_connector( // the solid tube on the inside of
circle(d=7), // the ring
parent(), LEFT,
parent(), RIGHT,
fillet=1
)
restore(tube)
tag("remove")
prism_connector( // the inside of the tubewith
circle(d=5), // exit on the outside of the ring
parent(), LEFT,
parent(), RIGHT,
fillet=1
);
//----
On Thu, 2025-08-14 at 10:58 +0200, Peter Kriens via Discuss wrote:
Maybe if you're purely data driven?
What I like about the attachment model is how you never have to
figure out positions. Worst case a shift from a well known
position
relative to another object. You can get highly complex components
and
easily change major parts without having to refactor and
recalculate
a lot. Positions then quickly become complex to calculate when
the
objects are at angles. I learned that for injection molding
everything is slightly angled to allow the release of the mold
but it
means there are never any easy modulo 90 degree angles. (The
rounded_prism() is my hero).
The absolute crown enabled by the attachment model is however,
the
prism_connector ...
PastedGraphic-3.png
When I try this one, it doesn't understand "attach_part()". I could
not
find it in BOSL2.
diff()
tube( id=50, h = 10, rounding=1, wall=2)// the ring
let(tube=parent())
attach_part("inside")
prism_connector( // the solid tube on the
inside of
circle(d=7), // the ring
parent(), LEFT,
parent(), RIGHT,
fillet=1
)
restore(tube)
tag("remove")
prism_connector( // the inside of the tube
with
circle(d=5), // exit on the outside of
the ring
parent(), LEFT,
parent(), RIGHT,
fillet=1
)
;
For me the attachment model of BOSL2 is the main reason I did not
dive into Python. It is absolute stunning, it is now hard for me
to
believe you can make complex modular components without them.
Peter Kriens
On 13 Aug 2025, at 20:46, Leonard Martin Struttmann via Discuss
discuss@lists.openscad.org wrote:
That's good, and very efficient for designs of that type.
However, it's been years since I designed any models of that
type.
The vast majority of my designs (models of existing printed
circuit
boards) consists of placing cubes and cylinders at known
distances
from the origin. And it's all table-driven. In my workflow, I
never place a shape in reference to an existing shape.
On Wed, Aug 13, 2025 at 11:40 AM Jordan Brown
openscad@jordan.maileater.net wrote:
On 8/13/2025 4:32 AM, Leonard Martin Struttmann via Discuss
wrote:
However, I have yet to find a use-case in my projects where
attachments are easier than the native translate()/rotate()
OpenSCAD primitives.
Quick: build a cube with a cylinder sticking out of the
right
side.
include <BOSL2/std.scad>
cube(10) attach(RIGHT) cylinder(h=10, r=3);
Yes, you can do that with rotate and translate. (Or is it
translate and rotate?)
How about if the cylinder is sticking out the corner of the
cube?
include <BOSL2/std.scad>
cube(10) attach(RIGHT+FRONT+TOP) cylinder(h=10, r=3);
Now put a sphere at the end of the cylinder, with the sphere
barely touching the cylinder:
include <BOSL2/std.scad>
cube(10)
attach(RIGHT) cylinder(h=10, r=3)
attach(TOP, BOTTOM) sphere(r=3);
cubesz = 10;
cylh = 10;
spherer = 3;
cube(cubesz);
translate([cubesz, cubesz/2, cubesz/2]) rotate([0,90,0]) {
cylinder(h=cylh, r=3);
translate([0,0,cylh + spherer])
sphere(r=spherer);
}
Note: I didn't need the variables, but I did if I wanted
to
avoid duplicating the numbers.
If you get unknown module for attach_part then your BOSL2 is still not
updated. You need to figure that out. The code is correct and produces
the image Peter showed.
On Mon, Dec 8, 2025 at 7:15 PM larry via Discuss <discuss@lists.openscad.org>
wrote:
> On Mon, 2025-12-08 at 16:37 -0500, Adrian Mariano via Discuss wrote:
> > larry, sounds like you need to update your BOSL2. The attach_part()
> > feature is fairly new.
>
> I did, but I put it in the wrong place. It's there now, but Peter's
> code still gives me the unknown module error for attach_part.
> I think there's more to it. The code really doesn't look right.
>
> I guess I'll try the attachment tutorial.
>
> //----
> include <BOSL2/std.scad>
> $fn= $preview ? 60 : 180;
>
> diff()
> tube( id=50, h = 10, rounding=1, wall=2) // the ring
> let(tube=parent())
> attach_part("inside")
> prism_connector( // the solid tube on the inside of
> circle(d=7), // the ring
> parent(), LEFT,
> parent(), RIGHT,
> fillet=1
> )
> restore(tube)
> tag("remove")
> prism_connector( // the inside of the tubewith
> circle(d=5), // exit on the outside of the ring
> parent(), LEFT,
> parent(), RIGHT,
> fillet=1
> );
> //----
>
> > On Mon, Dec 8, 2025 at 11:06 AM larry via Discuss
> > <discuss@lists.openscad.org> wrote:
> > > On Thu, 2025-08-14 at 10:58 +0200, Peter Kriens via Discuss wrote:
> > > > Maybe if you're purely data driven?
> > > >
> > > > What I like about the attachment model is how you never have to
> > > > figure out positions. Worst case a shift from a well known
> > > > position
> > > > relative to another object. You can get highly complex components
> > > > and
> > > > easily change major parts without having to refactor and
> > > > recalculate
> > > > a lot. Positions then quickly become complex to calculate when
> > > > the
> > > > objects are at angles. I learned that for injection molding
> > > > everything is slightly angled to allow the release of the mold
> > > > but it
> > > > means there are never any easy modulo 90 degree angles. (The
> > > > rounded_prism() is my hero).
> > > >
> > > > The absolute crown enabled by the attachment model is however,
> > > > the
> > > > prism_connector ...
> > > >
> > > > PastedGraphic-3.png
> > >
> > > When I try this one, it doesn't understand "attach_part()". I could
> > > not
> > > find it in BOSL2.
> > >
> > > > > diff()
> > > > > tube( id=50, h = 10, rounding=1, wall=2)// the ring
> > > > > let(tube=parent())
> > > > > attach_part("inside")
> > > > > prism_connector( // the solid tube on the
> > > > > inside of
> > > > > circle(d=7), // the ring
> > > > > parent(), LEFT,
> > > > > parent(), RIGHT,
> > > > > fillet=1
> > > > > )
> > > > > restore(tube)
> > > > > tag("remove")
> > > > > prism_connector( // the inside of the tube
> > > > > with
> > > > > circle(d=5), // exit on the outside of
> > > > > the ring
> > > > > parent(), LEFT,
> > > > > parent(), RIGHT,
> > > > > fillet=1
> > > > > )
> > > > > ;
> > > >
> > > >
> > > > For me the attachment model of BOSL2 is the main reason I did not
> > > > dive into Python. It is absolute stunning, it is now hard for me
> > > > to
> > > > believe you can make complex modular components without them.
> > > >
> > > > Peter Kriens
> > > >
> > > >
> > > >
> > > > > On 13 Aug 2025, at 20:46, Leonard Martin Struttmann via Discuss
> > > > > <discuss@lists.openscad.org> wrote:
> > > > >
> > > > > That's good, and very efficient for designs of that type.
> > > > >
> > > > > However, it's been years since I designed any models of that
> > > > > type.
> > > > > The vast majority of my designs (models of existing printed
> > > > > circuit
> > > > > boards) consists of placing cubes and cylinders at known
> > > > > distances
> > > > > from the origin. And it's all table-driven. In my workflow, I
> > > > > never place a shape in reference to an existing shape.
> > > > >
> > > > >
> > > > > On Wed, Aug 13, 2025 at 11:40 AM Jordan Brown
> > > > > <openscad@jordan.maileater.net> wrote:
> > > > > > On 8/13/2025 4:32 AM, Leonard Martin Struttmann via Discuss
> > > > > > wrote:
> > > > > >
> > > > > > > However, I have yet to find a use-case in my projects where
> > > > > > > attachments are easier than the native translate()/rotate()
> > > > > > > OpenSCAD primitives.
> > > > > >
> > > > > > Quick: build a cube with a cylinder sticking out of the
> > > > > > right
> > > > > > side.
> > > > > >
> > > > > > > include <BOSL2/std.scad>
> > > > > > >
> > > > > > > cube(10) attach(RIGHT) cylinder(h=10, r=3);
> > > > > >
> > > > > >
> > > > > >
> > > > > > Yes, you can do that with rotate and translate. (Or is it
> > > > > > translate and rotate?)
> > > > > > How about if the cylinder is sticking out the corner of the
> > > > > > cube?
> > > > > >
> > > > > > > include <BOSL2/std.scad>
> > > > > > >
> > > > > > > cube(10) attach(RIGHT+FRONT+TOP) cylinder(h=10, r=3);
> > > > > >
> > > > > > Now put a sphere at the end of the cylinder, with the sphere
> > > > > > barely touching the cylinder:
> > > > > >
> > > > > > > include <BOSL2/std.scad>
> > > > > > >
> > > > > > > cube(10)
> > > > > > > attach(RIGHT) cylinder(h=10, r=3)
> > > > > > > attach(TOP, BOTTOM) sphere(r=3);
> > > > > >
> > > > > > Versus:
> > > > > >
> > > > > > > cubesz = 10;
> > > > > > > cylh = 10;
> > > > > > > spherer = 3;
> > > > > > > cube(cubesz);
> > > > > > > translate([cubesz, cubesz/2, cubesz/2]) rotate([0,90,0]) {
> > > > > > > cylinder(h=cylh, r=3);
> > > > > > > translate([0,0,cylh + spherer])
> > > > > > > sphere(r=spherer);
> > > > > > > }
> > > > > >
> > > > > > Note: I didn't *need* the variables, but I did if I wanted
> > > > > > to
> > > > > > avoid duplicating the numbers.
> > > > > >
> > > > > >
> > > > > _______________________________________________
> > > > > OpenSCAD mailing list
> > > > > To unsubscribe send an email to
> > > > > discuss-leave@lists.openscad.org
> > > >
> > > > _______________________________________________
> > > > OpenSCAD mailing list
> > > > To unsubscribe send an email to discuss-leave@lists.openscad.org
> > > _______________________________________________
> > > OpenSCAD mailing list
> > > To unsubscribe send an email to discuss-leave@lists.openscad.org
> > _______________________________________________
> > OpenSCAD mailing list
> > To unsubscribe send an email to discuss-leave@lists.openscad.org
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org
L
larry
Tue, Dec 9, 2025 3:56 AM
On Mon, 2025-12-08 at 19:59 -0500, Adrian Mariano via Discuss wrote:
If you get unknown module for attach_part then your BOSL2 is still
not updated. You need to figure that out. The code is correct and
produces the image Peter showed.
Is there a way to query the rev level of BOSL2?
On Mon, 2025-12-08 at 16:37 -0500, Adrian Mariano via Discuss
wrote:
larry, sounds like you need to update your BOSL2. The
attach_part()
feature is fairly new.
I did, but I put it in the wrong place. It's there now, but
Peter's
code still gives me the unknown module error for attach_part.
I think there's more to it. The code really doesn't look right.
I guess I'll try the attachment tutorial.
//----
include <BOSL2/std.scad>
$fn= $preview ? 60 : 180;
diff()
tube( id=50, h = 10, rounding=1, wall=2) // the ring
let(tube=parent())
attach_part("inside")
prism_connector( // the solid tube on the inside of
circle(d=7), // the ring
parent(), LEFT,
parent(), RIGHT,
fillet=1
)
restore(tube)
tag("remove")
prism_connector( // the inside of the tubewith
circle(d=5), // exit on the outside of the ring
parent(), LEFT,
parent(), RIGHT,
fillet=1
);
//----
On Thu, 2025-08-14 at 10:58 +0200, Peter Kriens via Discuss
wrote:
Maybe if you're purely data driven?
What I like about the attachment model is how you never have
to
figure out positions. Worst case a shift from a well known
position
relative to another object. You can get highly complex
components
and
easily change major parts without having to refactor and
recalculate
a lot. Positions then quickly become complex to calculate
when
the
objects are at angles. I learned that for injection molding
everything is slightly angled to allow the release of the
mold
but it
means there are never any easy modulo 90 degree angles. (The
rounded_prism() is my hero).
The absolute crown enabled by the attachment model is
however,
the
prism_connector ...
PastedGraphic-3.png
When I try this one, it doesn't understand "attach_part()". I
could
not
find it in BOSL2.
diff()
tube( id=50, h = 10, rounding=1, wall=2)// the ring
let(tube=parent())
attach_part("inside")
prism_connector( // the solid tube on
the
inside of
circle(d=7), // the ring
parent(), LEFT,
parent(), RIGHT,
fillet=1
)
restore(tube)
tag("remove")
prism_connector( // the inside of the
tube
with
circle(d=5), // exit on the outside
of
the ring
parent(), LEFT,
parent(), RIGHT,
fillet=1
)
;
For me the attachment model of BOSL2 is the main reason I did
not
dive into Python. It is absolute stunning, it is now hard for
me
to
believe you can make complex modular components without them.
Peter Kriens
On 13 Aug 2025, at 20:46, Leonard Martin Struttmann via
Discuss
discuss@lists.openscad.org wrote:
That's good, and very efficient for designs of that type.
However, it's been years since I designed any models of
that
type.
The vast majority of my designs (models of existing printed
circuit
boards) consists of placing cubes and cylinders at known
distances
from the origin. And it's all table-driven. In my
workflow, I
never place a shape in reference to an existing shape.
On Wed, Aug 13, 2025 at 11:40 AM Jordan Brown
openscad@jordan.maileater.net wrote:
On 8/13/2025 4:32 AM, Leonard Martin Struttmann via
Discuss
wrote:
However, I have yet to find a use-case in my projects
where
attachments are easier than the native
translate()/rotate()
OpenSCAD primitives.
Quick: build a cube with a cylinder sticking out of the
right
side.
include <BOSL2/std.scad>
cube(10) attach(RIGHT) cylinder(h=10, r=3);
Yes, you can do that with rotate and translate. (Or is
it
translate and rotate?)
How about if the cylinder is sticking out the corner of
the
cube?
include <BOSL2/std.scad>
cube(10) attach(RIGHT+FRONT+TOP) cylinder(h=10, r=3);
Now put a sphere at the end of the cylinder, with the
sphere
barely touching the cylinder:
include <BOSL2/std.scad>
cube(10)
attach(RIGHT) cylinder(h=10, r=3)
attach(TOP, BOTTOM) sphere(r=3);
cubesz = 10;
cylh = 10;
spherer = 3;
cube(cubesz);
translate([cubesz, cubesz/2, cubesz/2])
rotate([0,90,0]) {
cylinder(h=cylh, r=3);
translate([0,0,cylh + spherer])
sphere(r=spherer);
}
Note: I didn't need the variables, but I did if I
wanted
to
avoid duplicating the numbers.
On Mon, 2025-12-08 at 19:59 -0500, Adrian Mariano via Discuss wrote:
> If you get unknown module for attach_part then your BOSL2 is still
> not updated. You need to figure that out. The code is correct and
> produces the image Peter showed.
Is there a way to query the rev level of BOSL2?
> On Mon, Dec 8, 2025 at 7:15 PM larry via Discuss
> <discuss@lists.openscad.org> wrote:
> > On Mon, 2025-12-08 at 16:37 -0500, Adrian Mariano via Discuss
> > wrote:
> > > larry, sounds like you need to update your BOSL2. The
> > > attach_part()
> > > feature is fairly new.
> >
> > I did, but I put it in the wrong place. It's there now, but
> > Peter's
> > code still gives me the unknown module error for attach_part.
> > I think there's more to it. The code really doesn't look right.
> >
> > I guess I'll try the attachment tutorial.
> >
> > //----
> > include <BOSL2/std.scad>
> > $fn= $preview ? 60 : 180;
> >
> > diff()
> > tube( id=50, h = 10, rounding=1, wall=2) // the ring
> > let(tube=parent())
> > attach_part("inside")
> > prism_connector( // the solid tube on the inside of
> > circle(d=7), // the ring
> > parent(), LEFT,
> > parent(), RIGHT,
> > fillet=1
> > )
> > restore(tube)
> > tag("remove")
> > prism_connector( // the inside of the tubewith
> > circle(d=5), // exit on the outside of the ring
> > parent(), LEFT,
> > parent(), RIGHT,
> > fillet=1
> > );
> > //----
> >
> > > On Mon, Dec 8, 2025 at 11:06 AM larry via Discuss
> > > <discuss@lists.openscad.org> wrote:
> > > > On Thu, 2025-08-14 at 10:58 +0200, Peter Kriens via Discuss
> > > > wrote:
> > > > > Maybe if you're purely data driven?
> > > > >
> > > > > What I like about the attachment model is how you never have
> > > > > to
> > > > > figure out positions. Worst case a shift from a well known
> > > > > position
> > > > > relative to another object. You can get highly complex
> > > > > components
> > > > > and
> > > > > easily change major parts without having to refactor and
> > > > > recalculate
> > > > > a lot. Positions then quickly become complex to calculate
> > > > > when
> > > > > the
> > > > > objects are at angles. I learned that for injection molding
> > > > > everything is slightly angled to allow the release of the
> > > > > mold
> > > > > but it
> > > > > means there are never any easy modulo 90 degree angles. (The
> > > > > rounded_prism() is my hero).
> > > > >
> > > > > The absolute crown enabled by the attachment model is
> > > > > however,
> > > > > the
> > > > > prism_connector ...
> > > > >
> > > > > PastedGraphic-3.png
> > > >
> > > > When I try this one, it doesn't understand "attach_part()". I
> > > > could
> > > > not
> > > > find it in BOSL2.
> > > >
> > > > > > diff()
> > > > > > tube( id=50, h = 10, rounding=1, wall=2)// the ring
> > > > > > let(tube=parent())
> > > > > > attach_part("inside")
> > > > > > prism_connector( // the solid tube on
> > > > > > the
> > > > > > inside of
> > > > > > circle(d=7), // the ring
> > > > > > parent(), LEFT,
> > > > > > parent(), RIGHT,
> > > > > > fillet=1
> > > > > > )
> > > > > > restore(tube)
> > > > > > tag("remove")
> > > > > > prism_connector( // the inside of the
> > > > > > tube
> > > > > > with
> > > > > > circle(d=5), // exit on the outside
> > > > > > of
> > > > > > the ring
> > > > > > parent(), LEFT,
> > > > > > parent(), RIGHT,
> > > > > > fillet=1
> > > > > > )
> > > > > > ;
> > > > >
> > > > >
> > > > > For me the attachment model of BOSL2 is the main reason I did
> > > > > not
> > > > > dive into Python. It is absolute stunning, it is now hard for
> > > > > me
> > > > > to
> > > > > believe you can make complex modular components without them.
> > > > >
> > > > > Peter Kriens
> > > > >
> > > > >
> > > > >
> > > > > > On 13 Aug 2025, at 20:46, Leonard Martin Struttmann via
> > > > > > Discuss
> > > > > > <discuss@lists.openscad.org> wrote:
> > > > > >
> > > > > > That's good, and very efficient for designs of that type.
> > > > > >
> > > > > > However, it's been years since I designed any models of
> > > > > > that
> > > > > > type.
> > > > > > The vast majority of my designs (models of existing printed
> > > > > > circuit
> > > > > > boards) consists of placing cubes and cylinders at known
> > > > > > distances
> > > > > > from the origin. And it's all table-driven. In my
> > > > > > workflow, I
> > > > > > never place a shape in reference to an existing shape.
> > > > > >
> > > > > >
> > > > > > On Wed, Aug 13, 2025 at 11:40 AM Jordan Brown
> > > > > > <openscad@jordan.maileater.net> wrote:
> > > > > > > On 8/13/2025 4:32 AM, Leonard Martin Struttmann via
> > > > > > > Discuss
> > > > > > > wrote:
> > > > > > >
> > > > > > > > However, I have yet to find a use-case in my projects
> > > > > > > > where
> > > > > > > > attachments are easier than the native
> > > > > > > > translate()/rotate()
> > > > > > > > OpenSCAD primitives.
> > > > > > >
> > > > > > > Quick: build a cube with a cylinder sticking out of the
> > > > > > > right
> > > > > > > side.
> > > > > > >
> > > > > > > > include <BOSL2/std.scad>
> > > > > > > >
> > > > > > > > cube(10) attach(RIGHT) cylinder(h=10, r=3);
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > Yes, you can do that with rotate and translate. (Or is
> > > > > > > it
> > > > > > > translate and rotate?)
> > > > > > > How about if the cylinder is sticking out the corner of
> > > > > > > the
> > > > > > > cube?
> > > > > > >
> > > > > > > > include <BOSL2/std.scad>
> > > > > > > >
> > > > > > > > cube(10) attach(RIGHT+FRONT+TOP) cylinder(h=10, r=3);
> > > > > > >
> > > > > > > Now put a sphere at the end of the cylinder, with the
> > > > > > > sphere
> > > > > > > barely touching the cylinder:
> > > > > > >
> > > > > > > > include <BOSL2/std.scad>
> > > > > > > >
> > > > > > > > cube(10)
> > > > > > > > attach(RIGHT) cylinder(h=10, r=3)
> > > > > > > > attach(TOP, BOTTOM) sphere(r=3);
> > > > > > >
> > > > > > > Versus:
> > > > > > >
> > > > > > > > cubesz = 10;
> > > > > > > > cylh = 10;
> > > > > > > > spherer = 3;
> > > > > > > > cube(cubesz);
> > > > > > > > translate([cubesz, cubesz/2, cubesz/2])
> > > > > > > > rotate([0,90,0]) {
> > > > > > > > cylinder(h=cylh, r=3);
> > > > > > > > translate([0,0,cylh + spherer])
> > > > > > > > sphere(r=spherer);
> > > > > > > > }
> > > > > > >
> > > > > > > Note: I didn't *need* the variables, but I did if I
> > > > > > > wanted
> > > > > > > to
> > > > > > > avoid duplicating the numbers.
> > > > > > >
> > > > > > >
> > > > > > _______________________________________________
> > > > > > OpenSCAD mailing list
> > > > > > To unsubscribe send an email to
> > > > > > discuss-leave@lists.openscad.org
> > > > >
> > > > > _______________________________________________
> > > > > OpenSCAD mailing list
> > > > > To unsubscribe send an email to
> > > > > discuss-leave@lists.openscad.org
> > > > _______________________________________________
> > > > OpenSCAD mailing list
> > > > To unsubscribe send an email to
> > > > discuss-leave@lists.openscad.org
> > > _______________________________________________
> > > OpenSCAD mailing list
> > > To unsubscribe send an email to discuss-leave@lists.openscad.org
> > _______________________________________________
> > OpenSCAD mailing list
> > To unsubscribe send an email to discuss-leave@lists.openscad.org
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org
MM
Michael Marx (spintel)
Tue, Dec 9, 2025 4:06 AM
Larry,
You should also check the various paths listed in Help/Library-Info for a stray BOSL2.
-----Original Message-----
From: larry via Discuss [mailto:discuss@lists.openscad.org]
Is there a way to query the rev level of BOSL2?
Larry,
You should also check the various paths listed in Help/Library-Info for a stray BOSL2.
> -----Original Message-----
> From: larry via Discuss [mailto:discuss@lists.openscad.org]
>
> Is there a way to query the rev level of BOSL2?
>
JB
Jordan Brown
Tue, Dec 9, 2025 5:07 AM
I use "git" to manage my BOSL2 installation.
I went to the OpenSCAD/libraries directory, and I said "git clone
https://github.com/revarbat/BOSL2". That gave me a BOSL2 installation.
Later, I go to that OpenSCAD/libraries/BOSL2 directory and say "git
pull", and it updates my BOSL2 installation.
I think I got my git for Windows here:
https://git-scm.com/install/windows but you could presumably use one of
the GUIs similarly, assuming that it will let you put your worktree
wherever you want to.
I use "git" to manage my BOSL2 installation.
I went to the OpenSCAD/libraries directory, and I said "git clone
https://github.com/revarbat/BOSL2". That gave me a BOSL2 installation.
Later, I go to that OpenSCAD/libraries/BOSL2 directory and say "git
pull", and it updates my BOSL2 installation.
I think I got my git for Windows here:
https://git-scm.com/install/windows but you could presumably use one of
the GUIs similarly, assuming that it will let you put your worktree
wherever you want to.
L
larry
Tue, Dec 9, 2025 5:10 AM
On Tue, 2025-12-09 at 15:06 +1100, Michael Marx (spintel) via Discuss
wrote:
Larry,
You should also check the various paths listed in Help/Library-Info for a stray BOSL2.
Just finished doing that, and found one just before I read your
comment. Deleted it, and the one I downloaded this morning is doing its
job.
Thanks to you and Adrian. I definitely have some questions about the
code though. Will ask them tomorrow.
-----Original Message-----
From: larry via Discuss [mailto:discuss@lists.openscad.org]
Is there a way to query the rev level of BOSL2?
On Tue, 2025-12-09 at 15:06 +1100, Michael Marx (spintel) via Discuss
wrote:
> Larry,
> You should also check the various paths listed in Help/Library-Info for a stray BOSL2.
Just finished doing that, and found one just before I read your
comment. Deleted it, and the one I downloaded this morning is doing its
job.
Thanks to you and Adrian. I definitely have some questions about the
code though. Will ask them tomorrow.
> > -----Original Message-----
> > From: larry via Discuss [mailto:discuss@lists.openscad.org]
> >
> > Is there a way to query the rev level of BOSL2?
> >
>
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to discuss-leave@lists.openscad.org
>