I try to find simple beveal method and it seems now BOSL2 for cone.
Correct?
But if angle small enough I can use straght cylinders for join.
And I cannot chamfer up of cylinder with BOSL2. So use 2 parts cylinder
include <BOSL2/std.scad>
$fn=160;
ac = 1.8; // cone half angle
difference(){
union(){
xcyl(d=28,d1=60,l=600,circum=true,$fn=164);
yrot(ac){
up(23.9)zcyl(d=25,h=2.1,chamfer=1);
join_prism(circle(d=25),base="cylinder",base_r=21.9,
length=2, fillet=2, n=12);
}
xrot(90)right(80)yrot(1.8)join_prism(circle(d=20),base="cylinder",base_r=20-0.2,length=4, fillet=3, n=12,end_round=1);
}
xcyl(d=28-6,d1=60-6,l=601,circum=true,$fn=164);
yrot(ac)up(20)zcyl(d=21,h=40);
xrot(90)right(80)yrot(1.8)up(20)zcyl(d=17,h=40);
}
Adrian recently made a new function attach_prism that is perfect for this kind of work. If you use it with tube(), you can make your code look awfully clean.
attach_prism is an easier to use front on joint_prism. Also take a look at prism_connector which allows you to connect different shapes without having to do trigonometry.
These new modules use the facility to store the current geometry in a variable with the parent() function and parent_part() function. You can then later restore that geometry with restore(geometry). You can also now measure the distance between two anchors in different geometries.
Peter Kriens
include <BOSL2/std.scad>
$fn = $preview ? 30 : 200;
wall=1;
diff()
yrot(90)
tube(od=25, wall=1, h=40) // base tube
let(tube = parent(), inside = parent_part("inside"))
attach_prism( // solid on tube
circle(d=20),
LEFT,
l=5,
fillet=2,
overlap=0
)
attach( "end", BOT)
tube( od=20, wall=wall, rounding2=0.5, l=1) // rounding at top
tag("remove")
restore(inside)
attach_prism( // remove inside
circle(d=20-2*wall),
LEFT,
l=5+desc_dist( tube, LEFT, inside,LEFT),
fillet=2,
)
attach( "end", BOT)
tube( od=18,wall=1, l=1)
;

You can make the extrusion part in a module so it is easier to use:
module outlet(d,l,where) {
let(tube = parent(), inside = parent_part("inside"))
attach_prism( // solid on tube
circle(d=d),
where,
l=l,
fillet=2,
overlap=0
)
attach( "end", BOT)
tube( od=d, wall=wall, rounding2=0.5, l=1) // rounding at top
tag("remove")
restore(inside)
attach_prism( // solid on tube
circle(d=d-2*wall),
where,
l=l+desc_dist(tube,where, inside,where),
fillet=2,
overlap=0
)
;
children();
}
diff()
yrot(90)
tube(od=25, wall=1, h=40) // base tube
for ( w=[0:45:359]) outlet(d=10,l=5,[cos(w), sin(w), 0])
;

I tried cone tube but got an error
ERROR: Assertion '(geom[1] == geom[2])' failed: "For anchors other than TOP/BOTTOM, cylinder must be non-conical, with same size at each end" in file ../../Users/123/Documents/OpenSCAD/libraries/BOSL2/rounding.scad, line 4478
It seems currently impossible to use attach_xxxx with cones
Yes, unfortunately cones are not supported, only right-angle cylinders with
attach_prism and prism_connector.
On Fri, Nov 28, 2025 at 11:21 AM yur_vol--- via Discuss <
discuss@lists.openscad.org> wrote:
I tried cone tube but got an error
ERROR: Assertion '(geom[1] == geom[2])' failed: "For anchors other than TOP/BOTTOM, cylinder must be non-conical, with same size at each end" in file ../../Users/123/Documents/OpenSCAD/libraries/BOSL2/rounding.scad, line 4478
It seems currently impossible to use attach_xxxx with cones
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org
prism_connector and attach_prism work so amazingly well that the disappointment is always surprisingly deep if it doesn't work in a rare case ...

I almost exclusively use these functions now. The fact that they take a profile for the shape makes them extremely versatile and in most cases they are very easy to round with the rounded_prism that takes the same profile.
But alas, conical shapes are not supported ... I guess it is really a lot harder.
If we ask Adrian very very nicely ... :-)
Peter
On 28 Nov 2025, at 17:21, yur_vol--- via Discuss discuss@lists.openscad.org wrote:
I tried cone tube but got an error
ERROR: Assertion '(geom[1] == geom[2])' failed: "For anchors other than TOP/BOTTOM, cylinder must be non-conical, with same size at each end" in file ../../Users/123/Documents/OpenSCAD/libraries/BOSL2/rounding.scad, line 4478
It seems currently impossible to use attach_xxxx with cones
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org
It's not actually that cones are a lot harder. I think they are actually
only a little bit harder fundamentally, but it requires completely new
code. The problem is that join_prism doesn't support cones and it appears
hard to add it there because of assumptions made about the geometry. It
might be easier, actually, if I wrote an entirely separate module to join
to cones just for prism_connector to invoke, I'm not sure. So while
there's no reason it can't be done, it's a major effort to actually do it.
On Sat, Nov 29, 2025 at 10:57 AM Peter Kriens via Discuss <
discuss@lists.openscad.org> wrote:
prism_connector and attach_prism work so amazingly well that the
disappointment is always surprisingly deep if it doesn't work in a rare
case ...
[image: PastedGraphic-1.png]
I almost exclusively use these functions now. The fact that they take a
profile for the shape makes them extremely versatile and in most cases they
are very easy to round with the rounded_prism that takes the same profile.
But alas, conical shapes are not supported ... I guess it is really a lot
harder.
If we ask Adrian very very nicely ... :-)
Peter
On 28 Nov 2025, at 17:21, yur_vol--- via Discuss <
discuss@lists.openscad.org> wrote:
I tried cone tube but got an error
ERROR: Assertion '(geom[1] == geom[2])' failed: "For anchors other than TOP/BOTTOM, cylinder must be non-conical, with same size at each end" in file ../../Users/123/Documents/OpenSCAD/libraries/BOSL2/rounding.scad, line 4478
It seems currently impossible to use attach_xxxx with cones
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 recognize the problem. It is a petty since cone is quite common. Ah well, c'est la vie ...
Peter
On 3 Dec 2025, at 23:07, Adrian Mariano via Discuss discuss@lists.openscad.org wrote:
It's not actually that cones are a lot harder. I think they are actually only a little bit harder fundamentally, but it requires completely new code. The problem is that join_prism doesn't support cones and it appears hard to add it there because of assumptions made about the geometry. It might be easier, actually, if I wrote an entirely separate module to join to cones just for prism_connector to invoke, I'm not sure. So while there's no reason it can't be done, it's a major effort to actually do it.
On Sat, Nov 29, 2025 at 10:57 AM Peter Kriens via Discuss <discuss@lists.openscad.org mailto:discuss@lists.openscad.org> wrote:
prism_connector and attach_prism work so amazingly well that the disappointment is always surprisingly deep if it doesn't work in a rare case ...
<PastedGraphic-1.png>
I almost exclusively use these functions now. The fact that they take a profile for the shape makes them extremely versatile and in most cases they are very easy to round with the rounded_prism that takes the same profile.
But alas, conical shapes are not supported ... I guess it is really a lot harder.
If we ask Adrian very very nicely ... :-)
Peter
On 28 Nov 2025, at 17:21, yur_vol--- via Discuss <discuss@lists.openscad.org mailto:discuss@lists.openscad.org> wrote:
I tried cone tube but got an error
ERROR: Assertion '(geom[1] == geom[2])' failed: "For anchors other than TOP/BOTTOM, cylinder must be non-conical, with same size at each end" in file ../../Users/123/Documents/OpenSCAD/libraries/BOSL2/rounding.scad, line 4478
It seems currently impossible to use attach_xxxx with cones
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org mailto:discuss-leave@lists.openscad.org
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org mailto:discuss-leave@lists.openscad.org_______________________________________________
OpenSCAD mailing list
To unsubscribe send an email to discuss-leave@lists.openscad.org