discuss@lists.openscad.org

OpenSCAD general discussion Mailing-list

View all threads

Using BOSL2's join_prism() for Filleted Prism Joins in OpenSCAD – Need Guidance!

JW
Joe Weinpert
Mon, Nov 3, 2025 10:41 PM

Hi everyone,

I'm using OpenSCAD and BOSL2 to generate STL files for CNC wood
sculpting—basically, creating organic, sculpted woodwork designs by
iteratively combining prisms (cylinders, spheres, etc.) into more complex
shapes.

I know the basics: I can union prisms with hull() or simple unions to merge
them seamlessly. But for smoother, more natural joins (like rounded fillets
on edges), I'm excited about join_prism(). Its flexibility is impressive,
but the docs and examples have me stumped on some fundamentals.

My core question: Can join_prism() reliably join two prisms at a time,
with customizable fillets? For instance:

  • Joining two 4" diameter spheres to form a single "peanut" shape,
    filleted to a 1" depth along the seam.
  • Or chaining joins: Start with prism A + B → C, then C + D → E, all
    with consistent rounding.

I've experimented with various parameters (e.g., chamfer, teardrop, edge
selections), but I keep hitting snags—either no join occurs, or the fillets
don't apply as expected. I might be overlooking a key option in the
reference, so any pointers (with code snippets!) would be a lifesaver.

Ultimately, I want to chain these filleted joins to build full STL
sculptures efficiently. Has anyone used this for similar organic modeling?
Tips, examples, or workarounds welcome!

Thanks in advance—BOSL2 is a game-changer, and I'd love to unlock this
piece.

Joe Weinpert
joe.weinpert@gmail.com
www.jwstudio.art http://jwstudio.art

Hi everyone, I'm using OpenSCAD and BOSL2 to generate STL files for CNC wood sculpting—basically, creating organic, sculpted woodwork designs by iteratively combining prisms (cylinders, spheres, etc.) into more complex shapes. I know the basics: I can union prisms with hull() or simple unions to merge them seamlessly. But for smoother, more natural joins (like rounded fillets on edges), I'm excited about join_prism(). Its flexibility is impressive, but the docs and examples have me stumped on some fundamentals. *My core question*: Can join_prism() reliably join two prisms at a time, with customizable fillets? For instance: - Joining two 4" diameter spheres to form a single "peanut" shape, filleted to a 1" depth along the seam. - Or chaining joins: Start with prism A + B → C, then C + D → E, all with consistent rounding. I've experimented with various parameters (e.g., chamfer, teardrop, edge selections), but I keep hitting snags—either no join occurs, or the fillets don't apply as expected. I might be overlooking a key option in the reference, so any pointers (with code snippets!) would be a lifesaver. Ultimately, I want to chain these filleted joins to build full STL sculptures efficiently. Has anyone used this for similar organic modeling? Tips, examples, or workarounds welcome! Thanks in advance—BOSL2 is a game-changer, and I'd love to unlock this piece. Joe Weinpert joe.weinpert@gmail.com www.jwstudio.art <http://jwstudio.art>
RA
Richard A. Milewski
Mon, Nov 3, 2025 11:33 PM

I'm sure that Adrian will be able to answer any questions about
join_prism(), but don't overlook BOSL2/isosurface.scad.

The shapes you describe are simple to do with metaballs().  They work
well for making organic shapes, although it will take some fiddling to
get the sizes exact.

In this sample, the influence argument adjusts the size of the neck.

include<BOSL2/std.scad>
include<BOSL2/isosurface.scad>
inf =.75;
spec =[
left(20), mb_sphere(d=25, influence=inf),
right(20), mb_sphere(d=25, influence=inf)
];
metaballs(spec, voxel_size=1,
bounding_box=[[-35,-15,-15], [35,15,15]], show_stats=true);

-- Richard

I'm sure that Adrian will be able to answer any questions about join_prism(), but don't overlook BOSL2/isosurface.scad. The shapes you describe are simple to do with metaballs().  They work well for making organic shapes, although it will take some fiddling to get the sizes exact. In this sample, the influence argument adjusts the size of the neck. include<BOSL2/std.scad> include<BOSL2/isosurface.scad> inf =.75; spec =[ left(20), mb_sphere(d=25, influence=inf), right(20), mb_sphere(d=25, influence=inf) ]; metaballs(spec, voxel_size=1, bounding_box=[[-35,-15,-15], [35,15,15]], show_stats=true); -- Richard
JB
Jon Bondy
Tue, Nov 4, 2025 12:09 AM

I would love to see some of the sculptures that you've come up with.  Do
you have a web site?

Jon

On 11/3/2025 5:41 PM, Joe Weinpert via Discuss wrote:

Hi everyone,

I'm using OpenSCAD and BOSL2 to generate STL files for CNC wood
sculpting—basically, creating organic, sculpted woodwork designs by
iteratively combining prisms (cylinders, spheres, etc.) into more
complex shapes.

I know the basics: I can union prisms with hull() or simple unions to
merge them seamlessly. But for smoother, more natural joins (like
rounded fillets on edges), I'm excited about join_prism(). Its
flexibility is impressive, but the docs and examples have me stumped
on some fundamentals.

My core question: Can join_prism() reliably join two prisms at a
time, with customizable fillets? For instance:

  • Joining two 4" diameter spheres to form a single "peanut" shape,
    filleted to a 1" depth along the seam.
  • Or chaining joins: Start with prism A + B → C, then C + D → E, all
    with consistent rounding.

I've experimented with various parameters (e.g., chamfer, teardrop,
edge selections), but I keep hitting snags—either no join occurs, or
the fillets don't apply as expected. I might be overlooking a key
option in the reference, so any pointers (with code snippets!) would
be a lifesaver.

Ultimately, I want to chain these filleted joins to build full STL
sculptures efficiently. Has anyone used this for similar organic
modeling? Tips, examples, or workarounds welcome!

Thanks in advance—BOSL2 is a game-changer, and I'd love to unlock this
piece.

Joe Weinpert
joe.weinpert@gmail.com
www.jwstudio.art
https://urldefense.proofpoint.com/v2/url?u=http-3A__jwstudio.art&d=DwMFaQ&c=euGZstcaTDllvimEN8b7jXrwqOf-v5A_CdpgnVfiiMM&r=AsrE-c7ZR7B2Kyr3qgfvvppkCEBVsNmwEMndcrRSuOI&m=NDASRN6Xz0PZyQDdWcycqLivq79wctmtItwQp6qYVTOHZBZDtfqK9lHW6HXOJpMs&s=hF0npL_ojsqhUUYuWfhJmokMthLYnTxt0AghytSlfiE&e=


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

--
This email has been checked for viruses by AVG antivirus software.
www.avg.com

I would love to see some of the sculptures that you've come up with.  Do you have a web site? Jon On 11/3/2025 5:41 PM, Joe Weinpert via Discuss wrote: > Hi everyone, > > I'm using OpenSCAD and BOSL2 to generate STL files for CNC wood > sculpting—basically, creating organic, sculpted woodwork designs by > iteratively combining prisms (cylinders, spheres, etc.) into more > complex shapes. > > I know the basics: I can union prisms with hull() or simple unions to > merge them seamlessly. But for smoother, more natural joins (like > rounded fillets on edges), I'm excited about join_prism(). Its > flexibility is impressive, but the docs and examples have me stumped > on some fundamentals. > > *My core question*: Can join_prism() reliably join two prisms at a > time, with customizable fillets? For instance: > > * Joining two 4" diameter spheres to form a single "peanut" shape, > filleted to a 1" depth along the seam. > * Or chaining joins: Start with prism A + B → C, then C + D → E, all > with consistent rounding. > > I've experimented with various parameters (e.g., chamfer, teardrop, > edge selections), but I keep hitting snags—either no join occurs, or > the fillets don't apply as expected. I might be overlooking a key > option in the reference, so any pointers (with code snippets!) would > be a lifesaver. > > Ultimately, I want to chain these filleted joins to build full STL > sculptures efficiently. Has anyone used this for similar organic > modeling? Tips, examples, or workarounds welcome! > > Thanks in advance—BOSL2 is a game-changer, and I'd love to unlock this > piece. > > Joe Weinpert > joe.weinpert@gmail.com > www.jwstudio.art > <https://urldefense.proofpoint.com/v2/url?u=http-3A__jwstudio.art&d=DwMFaQ&c=euGZstcaTDllvimEN8b7jXrwqOf-v5A_CdpgnVfiiMM&r=AsrE-c7ZR7B2Kyr3qgfvvppkCEBVsNmwEMndcrRSuOI&m=NDASRN6Xz0PZyQDdWcycqLivq79wctmtItwQp6qYVTOHZBZDtfqK9lHW6HXOJpMs&s=hF0npL_ojsqhUUYuWfhJmokMthLYnTxt0AghytSlfiE&e=> > > > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email todiscuss-leave@lists.openscad.org -- This email has been checked for viruses by AVG antivirus software. www.avg.com
AM
Adrian Mariano
Tue, Nov 4, 2025 12:52 AM

For organic shapes metaballs is definitely worth a look, like Richard
says.

If you want to pursue join_prism then I suggest you try with
prism_connector() instead.  The prism_connector() module is a pass-through
to join_prism().  It can't do everything that join_prism does, but for
the things it does do it's about ten times easier to use.  You will have to
come to terms with descriptions, but I think you'll find it's worth that
hurdle---making the direct join_prism() interface do the right thing can be
pretty painful.  Here's a connection from A->B->C.  See examples in the
wiki for some more sophisticated ways to do things like this.

include<BOSL2/std.scad>
sphere(r=10) let(first=parent())
right(50) sphere(r=10) let(second=parent())
up(47)left(15) sphere(r=10) let(third=parent())
{
prism_connector(circle(d=12),first, CENTER, second, CENTER, fillet=3);
prism_connector(circle(d=12),second, CENTER, third, CENTER, fillet=3);
}

[image: image.png]

On Mon, Nov 3, 2025 at 5:42 PM Joe Weinpert via Discuss <
discuss@lists.openscad.org> wrote:

Hi everyone,

I'm using OpenSCAD and BOSL2 to generate STL files for CNC wood
sculpting—basically, creating organic, sculpted woodwork designs by
iteratively combining prisms (cylinders, spheres, etc.) into more complex
shapes.

I know the basics: I can union prisms with hull() or simple unions to
merge them seamlessly. But for smoother, more natural joins (like rounded
fillets on edges), I'm excited about join_prism(). Its flexibility is
impressive, but the docs and examples have me stumped on some fundamentals.

My core question: Can join_prism() reliably join two prisms at a time,
with customizable fillets? For instance:

- Joining two 4" diameter spheres to form a single "peanut" shape,
filleted to a 1" depth along the seam.
- Or chaining joins: Start with prism A + B → C, then C + D → E, all
with consistent rounding.

I've experimented with various parameters (e.g., chamfer, teardrop, edge
selections), but I keep hitting snags—either no join occurs, or the fillets
don't apply as expected. I might be overlooking a key option in the
reference, so any pointers (with code snippets!) would be a lifesaver.

Ultimately, I want to chain these filleted joins to build full STL
sculptures efficiently. Has anyone used this for similar organic modeling?
Tips, examples, or workarounds welcome!

Thanks in advance—BOSL2 is a game-changer, and I'd love to unlock this
piece.

Joe Weinpert
joe.weinpert@gmail.com
www.jwstudio.art http://jwstudio.art


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

For organic shapes metaballs is definitely worth a look, like Richard says. If you want to pursue join_prism then I suggest you try with prism_connector() instead. The prism_connector() module is a pass-through to join_prism(). It can't do **everything** that join_prism does, but for the things it does do it's about ten times easier to use. You will have to come to terms with descriptions, but I think you'll find it's worth that hurdle---making the direct join_prism() interface do the right thing can be pretty painful. Here's a connection from A->B->C. See examples in the wiki for some more sophisticated ways to do things like this. include<BOSL2/std.scad> sphere(r=10) let(first=parent()) right(50) sphere(r=10) let(second=parent()) up(47)left(15) sphere(r=10) let(third=parent()) { prism_connector(circle(d=12),first, CENTER, second, CENTER, fillet=3); prism_connector(circle(d=12),second, CENTER, third, CENTER, fillet=3); } [image: image.png] On Mon, Nov 3, 2025 at 5:42 PM Joe Weinpert via Discuss < discuss@lists.openscad.org> wrote: > Hi everyone, > > I'm using OpenSCAD and BOSL2 to generate STL files for CNC wood > sculpting—basically, creating organic, sculpted woodwork designs by > iteratively combining prisms (cylinders, spheres, etc.) into more complex > shapes. > > I know the basics: I can union prisms with hull() or simple unions to > merge them seamlessly. But for smoother, more natural joins (like rounded > fillets on edges), I'm excited about join_prism(). Its flexibility is > impressive, but the docs and examples have me stumped on some fundamentals. > > *My core question*: Can join_prism() reliably join two prisms at a time, > with customizable fillets? For instance: > > - Joining two 4" diameter spheres to form a single "peanut" shape, > filleted to a 1" depth along the seam. > - Or chaining joins: Start with prism A + B → C, then C + D → E, all > with consistent rounding. > > I've experimented with various parameters (e.g., chamfer, teardrop, edge > selections), but I keep hitting snags—either no join occurs, or the fillets > don't apply as expected. I might be overlooking a key option in the > reference, so any pointers (with code snippets!) would be a lifesaver. > > Ultimately, I want to chain these filleted joins to build full STL > sculptures efficiently. Has anyone used this for similar organic modeling? > Tips, examples, or workarounds welcome! > > Thanks in advance—BOSL2 is a game-changer, and I'd love to unlock this > piece. > > Joe Weinpert > joe.weinpert@gmail.com > www.jwstudio.art <http://jwstudio.art> > > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org
JW
Joe Weinpert
Tue, Nov 4, 2025 1:53 AM

I will take a look at it, but I need to marry objects without a connector.
Richard suggested I look at the metaballs function, as well.  He posted an
example of coding.

Joe Weinpert
joe.weinpert@gmail.com
www.jwstudio.art http://jwstudio.art

On Mon, Nov 3, 2025 at 7:52 PM Adrian Mariano via Discuss <
discuss@lists.openscad.org> wrote:

For organic shapes metaballs is definitely worth a look, like Richard
says.

If you want to pursue join_prism then I suggest you try with
prism_connector() instead.  The prism_connector() module is a pass-through
to join_prism().  It can't do everything that join_prism does, but for
the things it does do it's about ten times easier to use.  You will have to
come to terms with descriptions, but I think you'll find it's worth that
hurdle---making the direct join_prism() interface do the right thing can be
pretty painful.  Here's a connection from A->B->C.  See examples in the
wiki for some more sophisticated ways to do things like this.

include<BOSL2/std.scad>
sphere(r=10) let(first=parent())
right(50) sphere(r=10) let(second=parent())
up(47)left(15) sphere(r=10) let(third=parent())
{
prism_connector(circle(d=12),first, CENTER, second, CENTER, fillet=3);
prism_connector(circle(d=12),second, CENTER, third, CENTER, fillet=3);
}

[image: image.png]

On Mon, Nov 3, 2025 at 5:42 PM Joe Weinpert via Discuss <
discuss@lists.openscad.org> wrote:

Hi everyone,

I'm using OpenSCAD and BOSL2 to generate STL files for CNC wood
sculpting—basically, creating organic, sculpted woodwork designs by
iteratively combining prisms (cylinders, spheres, etc.) into more complex
shapes.

I know the basics: I can union prisms with hull() or simple unions to
merge them seamlessly. But for smoother, more natural joins (like rounded
fillets on edges), I'm excited about join_prism(). Its flexibility is
impressive, but the docs and examples have me stumped on some fundamentals.

My core question: Can join_prism() reliably join two prisms at a time,
with customizable fillets? For instance:

- Joining two 4" diameter spheres to form a single "peanut" shape,
filleted to a 1" depth along the seam.
- Or chaining joins: Start with prism A + B → C, then C + D → E, all
with consistent rounding.

I've experimented with various parameters (e.g., chamfer, teardrop, edge
selections), but I keep hitting snags—either no join occurs, or the fillets
don't apply as expected. I might be overlooking a key option in the
reference, so any pointers (with code snippets!) would be a lifesaver.

Ultimately, I want to chain these filleted joins to build full STL
sculptures efficiently. Has anyone used this for similar organic modeling?
Tips, examples, or workarounds welcome!

Thanks in advance—BOSL2 is a game-changer, and I'd love to unlock this
piece.

Joe Weinpert
joe.weinpert@gmail.com
www.jwstudio.art http://jwstudio.art


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

I will take a look at it, but I need to marry objects without a connector. Richard suggested I look at the metaballs function, as well. He posted an example of coding. Joe Weinpert joe.weinpert@gmail.com www.jwstudio.art <http://jwstudio.art> On Mon, Nov 3, 2025 at 7:52 PM Adrian Mariano via Discuss < discuss@lists.openscad.org> wrote: > For organic shapes metaballs is definitely worth a look, like Richard > says. > > If you want to pursue join_prism then I suggest you try with > prism_connector() instead. The prism_connector() module is a pass-through > to join_prism(). It can't do **everything** that join_prism does, but for > the things it does do it's about ten times easier to use. You will have to > come to terms with descriptions, but I think you'll find it's worth that > hurdle---making the direct join_prism() interface do the right thing can be > pretty painful. Here's a connection from A->B->C. See examples in the > wiki for some more sophisticated ways to do things like this. > > include<BOSL2/std.scad> > sphere(r=10) let(first=parent()) > right(50) sphere(r=10) let(second=parent()) > up(47)left(15) sphere(r=10) let(third=parent()) > { > prism_connector(circle(d=12),first, CENTER, second, CENTER, fillet=3); > prism_connector(circle(d=12),second, CENTER, third, CENTER, fillet=3); > } > > [image: image.png] > > > > On Mon, Nov 3, 2025 at 5:42 PM Joe Weinpert via Discuss < > discuss@lists.openscad.org> wrote: > >> Hi everyone, >> >> I'm using OpenSCAD and BOSL2 to generate STL files for CNC wood >> sculpting—basically, creating organic, sculpted woodwork designs by >> iteratively combining prisms (cylinders, spheres, etc.) into more complex >> shapes. >> >> I know the basics: I can union prisms with hull() or simple unions to >> merge them seamlessly. But for smoother, more natural joins (like rounded >> fillets on edges), I'm excited about join_prism(). Its flexibility is >> impressive, but the docs and examples have me stumped on some fundamentals. >> >> *My core question*: Can join_prism() reliably join two prisms at a time, >> with customizable fillets? For instance: >> >> - Joining two 4" diameter spheres to form a single "peanut" shape, >> filleted to a 1" depth along the seam. >> - Or chaining joins: Start with prism A + B → C, then C + D → E, all >> with consistent rounding. >> >> I've experimented with various parameters (e.g., chamfer, teardrop, edge >> selections), but I keep hitting snags—either no join occurs, or the fillets >> don't apply as expected. I might be overlooking a key option in the >> reference, so any pointers (with code snippets!) would be a lifesaver. >> >> Ultimately, I want to chain these filleted joins to build full STL >> sculptures efficiently. Has anyone used this for similar organic modeling? >> Tips, examples, or workarounds welcome! >> >> Thanks in advance—BOSL2 is a game-changer, and I'd love to unlock this >> piece. >> >> Joe Weinpert >> joe.weinpert@gmail.com >> www.jwstudio.art <http://jwstudio.art> >> >> _______________________________________________ >> 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
JW
Joe Weinpert
Tue, Nov 4, 2025 1:54 AM

I will take a look.  Thanks for the example code!

Joe Weinpert
joe.weinpert@gmail.com
www.jwstudio.art http://jwstudio.art

On Mon, Nov 3, 2025 at 6:33 PM Richard A. Milewski via Discuss <
discuss@lists.openscad.org> wrote:

I'm sure that Adrian will be able to answer any questions about
join_prism(), but don't overlook BOSL2/isosurface.scad.

The shapes you describe are simple to do with metaballs().  They work well
for making organic shapes, although it will take some fiddling to get the
sizes exact.

In this sample, the influence argument adjusts the size of the neck.

include <BOSL2/std.scad>
include <BOSL2/isosurface.scad>
inf = .75;
spec = [
left(20), mb_sphere(d=25, influence = inf),
right(20), mb_sphere(d=25, influence = inf)
];
metaballs(spec, voxel_size=1,
bounding_box=[[-35,-15,-15], [35,15,15]], show_stats = true);

-- Richard


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

I will take a look. Thanks for the example code! Joe Weinpert joe.weinpert@gmail.com www.jwstudio.art <http://jwstudio.art> On Mon, Nov 3, 2025 at 6:33 PM Richard A. Milewski via Discuss < discuss@lists.openscad.org> wrote: > I'm sure that Adrian will be able to answer any questions about > join_prism(), but don't overlook BOSL2/isosurface.scad. > > The shapes you describe are simple to do with metaballs(). They work well > for making organic shapes, although it will take some fiddling to get the > sizes exact. > > In this sample, the influence argument adjusts the size of the neck. > > > include <BOSL2/std.scad> > include <BOSL2/isosurface.scad> > inf = .75; > spec = [ > left(20), mb_sphere(d=25, influence = inf), > right(20), mb_sphere(d=25, influence = inf) > ]; > metaballs(spec, voxel_size=1, > bounding_box=[[-35,-15,-15], [35,15,15]], show_stats = true); > > > > > -- Richard > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org
JJ
jon jonbondy.com
Tue, Nov 4, 2025 2:13 AM

Sorry.  Stupid question.  You provided your web site as part of your signature.

I love the modern stuff!

On 11/3/2025 7:09 PM, Jon Bondy via Discuss wrote:

I would love to see some of the sculptures that you've come up with.  Do you have a web site?

Jon

On 11/3/2025 5:41 PM, Joe Weinpert via Discuss wrote:
Hi everyone,

I'm using OpenSCAD and BOSL2 to generate STL files for CNC wood sculpting—basically, creating organic, sculpted woodwork designs by iteratively combining prisms (cylinders, spheres, etc.) into more complex shapes.

I know the basics: I can union prisms with hull() or simple unions to merge them seamlessly. But for smoother, more natural joins (like rounded fillets on edges), I'm excited about join_prism(). Its flexibility is impressive, but the docs and examples have me stumped on some fundamentals.

My core question: Can join_prism() reliably join two prisms at a time, with customizable fillets? For instance:

  • Joining two 4" diameter spheres to form a single "peanut" shape, filleted to a 1" depth along the seam.
  • Or chaining joins: Start with prism A + B → C, then C + D → E, all with consistent rounding.

I've experimented with various parameters (e.g., chamfer, teardrop, edge selections), but I keep hitting snags—either no join occurs, or the fillets don't apply as expected. I might be overlooking a key option in the reference, so any pointers (with code snippets!) would be a lifesaver.

Ultimately, I want to chain these filleted joins to build full STL sculptures efficiently. Has anyone used this for similar organic modeling? Tips, examples, or workarounds welcome!

Thanks in advance—BOSL2 is a game-changer, and I'd love to unlock this piece.

Joe Weinpert
joe.weinpert@gmail.commailto:joe.weinpert@gmail.com
www.jwstudio.arthttps://urldefense.proofpoint.com/v2/url?u=http-3A__jwstudio.art&d=DwMFaQ&c=euGZstcaTDllvimEN8b7jXrwqOf-v5A_CdpgnVfiiMM&r=AsrE-c7ZR7B2Kyr3qgfvvppkCEBVsNmwEMndcrRSuOI&m=NDASRN6Xz0PZyQDdWcycqLivq79wctmtItwQp6qYVTOHZBZDtfqK9lHW6HXOJpMs&s=hF0npL_ojsqhUUYuWfhJmokMthLYnTxt0AghytSlfiE&e=


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

[https://s-install.avcdn.net/ipm/preview/icons/icon-envelope-tick-green-avg-v1.png]https://urldefense.proofpoint.com/v2/url?u=http-3A__www.avg.com_email-2Dsignature-3Futm-5Fmedium-3Demail-26utm-5Fsource-3Dlink-26utm-5Fcampaign-3Dsig-2Demail-26utm-5Fcontent-3Demailclient&d=DwMFaQ&c=euGZstcaTDllvimEN8b7jXrwqOf-v5A_CdpgnVfiiMM&r=AsrE-c7ZR7B2Kyr3qgfvvppkCEBVsNmwEMndcrRSuOI&m=5rpENXIlD_ikZSEW0uSMNCRqo2y0B3Cod5i7ehEcVzH4sN5Hi6VLE1_XvvXGdSNS&s=q_V4_QpmmEKx7N2ebKgdgldcXrNF0r_PMziVDXj_IDA&e=      Virus-free.www.avg.comhttps://urldefense.proofpoint.com/v2/url?u=http-3A__www.avg.com_email-2Dsignature-3Futm-5Fmedium-3Demail-26utm-5Fsource-3Dlink-26utm-5Fcampaign-3Dsig-2Demail-26utm-5Fcontent-3Demailclient&d=DwMFaQ&c=euGZstcaTDllvimEN8b7jXrwqOf-v5A_CdpgnVfiiMM&r=AsrE-c7ZR7B2Kyr3qgfvvppkCEBVsNmwEMndcrRSuOI&m=5rpENXIlD_ikZSEW0uSMNCRqo2y0B3Cod5i7ehEcVzH4sN5Hi6VLE1_XvvXGdSNS&s=q_V4_QpmmEKx7N2ebKgdgldcXrNF0r_PMziVDXj_IDA&e=


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

Sorry. Stupid question. You provided your web site as part of your signature. I love the modern stuff! On 11/3/2025 7:09 PM, Jon Bondy via Discuss wrote: I would love to see some of the sculptures that you've come up with. Do you have a web site? Jon On 11/3/2025 5:41 PM, Joe Weinpert via Discuss wrote: Hi everyone, I'm using OpenSCAD and BOSL2 to generate STL files for CNC wood sculpting—basically, creating organic, sculpted woodwork designs by iteratively combining prisms (cylinders, spheres, etc.) into more complex shapes. I know the basics: I can union prisms with hull() or simple unions to merge them seamlessly. But for smoother, more natural joins (like rounded fillets on edges), I'm excited about join_prism(). Its flexibility is impressive, but the docs and examples have me stumped on some fundamentals. My core question: Can join_prism() reliably join two prisms at a time, with customizable fillets? For instance: * Joining two 4" diameter spheres to form a single "peanut" shape, filleted to a 1" depth along the seam. * Or chaining joins: Start with prism A + B → C, then C + D → E, all with consistent rounding. I've experimented with various parameters (e.g., chamfer, teardrop, edge selections), but I keep hitting snags—either no join occurs, or the fillets don't apply as expected. I might be overlooking a key option in the reference, so any pointers (with code snippets!) would be a lifesaver. Ultimately, I want to chain these filleted joins to build full STL sculptures efficiently. Has anyone used this for similar organic modeling? Tips, examples, or workarounds welcome! Thanks in advance—BOSL2 is a game-changer, and I'd love to unlock this piece. Joe Weinpert joe.weinpert@gmail.com<mailto:joe.weinpert@gmail.com> www.jwstudio.art<https://urldefense.proofpoint.com/v2/url?u=http-3A__jwstudio.art&d=DwMFaQ&c=euGZstcaTDllvimEN8b7jXrwqOf-v5A_CdpgnVfiiMM&r=AsrE-c7ZR7B2Kyr3qgfvvppkCEBVsNmwEMndcrRSuOI&m=NDASRN6Xz0PZyQDdWcycqLivq79wctmtItwQp6qYVTOHZBZDtfqK9lHW6HXOJpMs&s=hF0npL_ojsqhUUYuWfhJmokMthLYnTxt0AghytSlfiE&e=> _______________________________________________ OpenSCAD mailing list To unsubscribe send an email to discuss-leave@lists.openscad.org<mailto:discuss-leave@lists.openscad.org> [https://s-install.avcdn.net/ipm/preview/icons/icon-envelope-tick-green-avg-v1.png]<https://urldefense.proofpoint.com/v2/url?u=http-3A__www.avg.com_email-2Dsignature-3Futm-5Fmedium-3Demail-26utm-5Fsource-3Dlink-26utm-5Fcampaign-3Dsig-2Demail-26utm-5Fcontent-3Demailclient&d=DwMFaQ&c=euGZstcaTDllvimEN8b7jXrwqOf-v5A_CdpgnVfiiMM&r=AsrE-c7ZR7B2Kyr3qgfvvppkCEBVsNmwEMndcrRSuOI&m=5rpENXIlD_ikZSEW0uSMNCRqo2y0B3Cod5i7ehEcVzH4sN5Hi6VLE1_XvvXGdSNS&s=q_V4_QpmmEKx7N2ebKgdgldcXrNF0r_PMziVDXj_IDA&e=> Virus-free.www.avg.com<https://urldefense.proofpoint.com/v2/url?u=http-3A__www.avg.com_email-2Dsignature-3Futm-5Fmedium-3Demail-26utm-5Fsource-3Dlink-26utm-5Fcampaign-3Dsig-2Demail-26utm-5Fcontent-3Demailclient&d=DwMFaQ&c=euGZstcaTDllvimEN8b7jXrwqOf-v5A_CdpgnVfiiMM&r=AsrE-c7ZR7B2Kyr3qgfvvppkCEBVsNmwEMndcrRSuOI&m=5rpENXIlD_ikZSEW0uSMNCRqo2y0B3Cod5i7ehEcVzH4sN5Hi6VLE1_XvvXGdSNS&s=q_V4_QpmmEKx7N2ebKgdgldcXrNF0r_PMziVDXj_IDA&e=> _______________________________________________ OpenSCAD mailing list To unsubscribe send an email to discuss-leave@lists.openscad.org<mailto:discuss-leave@lists.openscad.org>
PK
Peter Kriens
Thu, Nov 6, 2025 10:16 AM

Adrian already gave another example but the prism_connector takes all the pain out of join_prism. It automatically adapts to the end points.

Some important points to remember.

– All parts must be in sequential indication, no ';' until the last module. All calls need to be stacked.
– You can save the 'current' parent geometry with sphere(r) let ( a = parent())
– If you want to connect two objects then best way is to use CTR. This will actually connect to the surface of the shape on a usually intuitive point. You can of course also use the LEFT, RIGHT, etc. or any unit vector if you want to exactly indicate the position on the surface.
– When you run into asserts, debug_pos=true is your friend

  • Make sure your profile/path parameter has enough points. A circle has many points so it can be plied gently on a sphere. A rect, however, has only 4 points and that cannot be plied to a sphere, it will look as if no smoothing was done. Subdivide the path (subdivide_path()) in more points so the function can interpolate better. (I made this error now 2 times and had to be saved by Adrian.)
    – You can also restore a geometry with restore(a), which makes the remaining calls as if they were called relative to whatever a was.

It is a fantastic function that allows you to do a lot of things without having to do trigonometry and it all adapts whenever you change a module. I use it nowadays all the time. I am actually trying to use this even if it is not perfectly applicable because it rounds so nicely. It is pretty magic when you get the hang of it.

Peter

include <BOSL2/std.scad>
$fn = $preview ? 30 : 200;

sphere(20)
let(a=parent())
xmove(50)
sphere(20)
prism_connector( circle(12), a, CTR, parent(), CTR, fillet=8)
;

On 3 Nov 2025, at 23:41, Joe Weinpert via Discuss discuss@lists.openscad.org wrote:

Hi everyone,

I'm using OpenSCAD and BOSL2 to generate STL files for CNC wood sculpting—basically, creating organic, sculpted woodwork designs by iteratively combining prisms (cylinders, spheres, etc.) into more complex shapes.

I know the basics: I can union prisms with hull() or simple unions to merge them seamlessly. But for smoother, more natural joins (like rounded fillets on edges), I'm excited about join_prism(). Its flexibility is impressive, but the docs and examples have me stumped on some fundamentals.

My core question: Can join_prism() reliably join two prisms at a time, with customizable fillets? For instance:
Joining two 4" diameter spheres to form a single "peanut" shape, filleted to a 1" depth along the seam.
Or chaining joins: Start with prism A + B → C, then C + D → E, all with consistent rounding.
I've experimented with various parameters (e.g., chamfer, teardrop, edge selections), but I keep hitting snags—either no join occurs, or the fillets don't apply as expected. I might be overlooking a key option in the reference, so any pointers (with code snippets!) would be a lifesaver.

Ultimately, I want to chain these filleted joins to build full STL sculptures efficiently. Has anyone used this for similar organic modeling? Tips, examples, or workarounds welcome!

Thanks in advance—BOSL2 is a game-changer, and I'd love to unlock this piece.

Joe Weinpert
joe.weinpert@gmail.com mailto:joe.weinpert@gmail.com
www.jwstudio.art http://jwstudio.art/


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

Adrian already gave another example but the prism_connector takes all the pain out of join_prism. It automatically adapts to the end points. Some important points to remember. – All parts must be in sequential indication, no ';' until the last module. All calls need to be stacked. – You can save the 'current' parent geometry with `sphere(r) let ( a = parent())` – If you want to connect two objects then best way is to use CTR. This will actually connect to the surface of the shape on a usually intuitive point. You can of course also use the LEFT, RIGHT, etc. or any unit vector if you want to exactly indicate the position on the surface. – When you run into asserts, `debug_pos=true` is your friend - Make sure your profile/path parameter has enough points. A circle has many points so it can be plied gently on a sphere. A rect, however, has only 4 points and that cannot be plied to a sphere, it will look as if no smoothing was done. Subdivide the path (`subdivide_path()`) in more points so the function can interpolate better. (I made this error now 2 times and had to be saved by Adrian.) – You can also restore a geometry with `restore(a)`, which makes the remaining calls as if they were called relative to whatever `a` was. It is a fantastic function that allows you to do a lot of things without having to do trigonometry and it all adapts whenever you change a module. I use it nowadays all the time. I am actually trying to use this even if it is not perfectly applicable because it rounds so nicely. It is pretty magic when you get the hang of it. Peter  include <BOSL2/std.scad> $fn = $preview ? 30 : 200; sphere(20) let(a=parent()) xmove(50) sphere(20) prism_connector( circle(12), a, CTR, parent(), CTR, fillet=8) ; > On 3 Nov 2025, at 23:41, Joe Weinpert via Discuss <discuss@lists.openscad.org> wrote: > > Hi everyone, > > I'm using OpenSCAD and BOSL2 to generate STL files for CNC wood sculpting—basically, creating organic, sculpted woodwork designs by iteratively combining prisms (cylinders, spheres, etc.) into more complex shapes. > > I know the basics: I can union prisms with hull() or simple unions to merge them seamlessly. But for smoother, more natural joins (like rounded fillets on edges), I'm excited about join_prism(). Its flexibility is impressive, but the docs and examples have me stumped on some fundamentals. > > My core question: Can join_prism() reliably join two prisms at a time, with customizable fillets? For instance: > Joining two 4" diameter spheres to form a single "peanut" shape, filleted to a 1" depth along the seam. > Or chaining joins: Start with prism A + B → C, then C + D → E, all with consistent rounding. > I've experimented with various parameters (e.g., chamfer, teardrop, edge selections), but I keep hitting snags—either no join occurs, or the fillets don't apply as expected. I might be overlooking a key option in the reference, so any pointers (with code snippets!) would be a lifesaver. > > Ultimately, I want to chain these filleted joins to build full STL sculptures efficiently. Has anyone used this for similar organic modeling? Tips, examples, or workarounds welcome! > > Thanks in advance—BOSL2 is a game-changer, and I'd love to unlock this piece. > > Joe Weinpert > joe.weinpert@gmail.com <mailto:joe.weinpert@gmail.com> > www.jwstudio.art <http://jwstudio.art/> > > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org