discuss@lists.openscad.org

OpenSCAD general discussion Mailing-list

View all threads

going round and round

BR
Bob Roos
Mon, Jun 22, 2026 2:13 PM

Hello Discuss,

but not in the right direction

I want to have all edges rounded, but rounding=-1 is not the solution at all.

Thank you for the help.  I am getting better at this with practice.

include <BOSL2/std.scad> //or screws or threading
$fn = 72;
diff(){
cuboid([30,10,16],rounding=1) position(LEFT)
#tag("remove")cuboid([3,10,6],anchor=LEFT);
}

--
Best regards,
Bob                          mailto:roosbob@wybatap.com

Hello Discuss, but not in the right direction I want to have all edges rounded, but rounding=-1 is not the solution at all. Thank you for the help. I am getting better at this with practice. include <BOSL2/std.scad> //or screws or threading $fn = 72; diff(){ cuboid([30,10,16],rounding=1) position(LEFT) #tag("remove")cuboid([3,10,6],anchor=LEFT); } -- Best regards, Bob mailto:roosbob@wybatap.com
LM
Leonard Martin Struttmann
Mon, Jun 22, 2026 2:34 PM

Does that imply that there will be fillets on those inside concave edges?

On Mon, Jun 22, 2026 at 9:13 AM Bob Roos via Discuss <
discuss@lists.openscad.org> wrote:

Hello Discuss,

but not in the right direction

I want to have all edges rounded, but rounding=-1 is not the solution at
all.

Thank you for the help.  I am getting better at this with practice.

include <BOSL2/std.scad> //or screws or threading
$fn = 72;
diff(){
cuboid([30,10,16],rounding=1) position(LEFT)
#tag("remove")cuboid([3,10,6],anchor=LEFT);
}

--
Best regards,
Bob                          mailto:roosbob@wybatap.com


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

Does that imply that there will be fillets on those inside concave edges? On Mon, Jun 22, 2026 at 9:13 AM Bob Roos via Discuss < discuss@lists.openscad.org> wrote: > Hello Discuss, > > but not in the right direction > > I want to have all edges rounded, but rounding=-1 is not the solution at > all. > > Thank you for the help. I am getting better at this with practice. > > include <BOSL2/std.scad> //or screws or threading > $fn = 72; > diff(){ > cuboid([30,10,16],rounding=1) position(LEFT) > #tag("remove")cuboid([3,10,6],anchor=LEFT); > } > > -- > Best regards, > Bob mailto:roosbob@wybatap.com > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org >
BR
Bob Roos
Mon, Jun 22, 2026 4:57 PM

Hi Leonard,

no I just want the outside edges to be rounded.

Monday, June 22, 2026, 10:34:31 AM, you wrote:

Does that imply that there will be fillets on those inside concave edges?

On Mon, Jun 22, 2026 at 9:13 AM Bob Roos via Discuss <
discuss@lists.openscad.org> wrote:

Hello Discuss,

but not in the right direction

I want to have all edges rounded, but rounding=-1 is not the solution at
all.

Thank you for the help.  I am getting better at this with practice.

include <BOSL2/std.scad> //or screws or threading
$fn = 72;
diff(){
cuboid([30,10,16],rounding=1) position(LEFT)
#tag("remove")cuboid([3,10,6],anchor=LEFT);
}

--
Best regards,
Bob                          mailto:roosbob@wybatap.com


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

--
have Fun,
Bob                          mailto:roosbob@wybatap.com

Hi Leonard, no I just want the outside edges to be rounded. Monday, June 22, 2026, 10:34:31 AM, you wrote: > Does that imply that there will be fillets on those inside concave edges? > On Mon, Jun 22, 2026 at 9:13 AM Bob Roos via Discuss < > discuss@lists.openscad.org> wrote: >> Hello Discuss, >> >> but not in the right direction >> >> I want to have all edges rounded, but rounding=-1 is not the solution at >> all. >> >> Thank you for the help. I am getting better at this with practice. >> >> include <BOSL2/std.scad> //or screws or threading >> $fn = 72; >> diff(){ >> cuboid([30,10,16],rounding=1) position(LEFT) >> #tag("remove")cuboid([3,10,6],anchor=LEFT); >> } >> >> -- >> Best regards, >> Bob mailto:roosbob@wybatap.com >> _______________________________________________ >> 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 -- have Fun, Bob mailto:roosbob@wybatap.com
AM
Adrian Mariano
Mon, Jun 22, 2026 8:38 PM

Rounding this is not particularly simple.  If you want to do it the way you
started out, by subtracting a suitable cuboid:

r=1;
diff()
cuboid([30,10,16],rounding=r)
position(LEFT) tag("remove")
cuboid([3,10,6],anchor=LEFT)

edge_profile_asym(except=[LEFT+FWD,LEFT+BACK,RIGHT+BOT,RIGHT+TOP],flip=true,corner_type="round",size=[r,r])
xflip()mask2d_roundover(r=r);

You have to use edge_profile_asym to place the roundings on the cube when
you want more complicated arrangements of roundings.

I think it's somewhat easier to do it with round_prism:

base = difference([
rect([30,16],anchor=LEFT),
rect([3,6], anchor=LEFT)
]);
rounded_prism(base[0], height=10,joint_top=1, joint_bot=1,
joint_sides=[1,1,1,0,0,1,1,1],k=.9);

On Mon, Jun 22, 2026 at 12:58 PM Bob Roos via Discuss <
discuss@lists.openscad.org> wrote:

Hi Leonard,

no I just want the outside edges to be rounded.

Monday, June 22, 2026, 10:34:31 AM, you wrote:

Does that imply that there will be fillets on those inside concave edges?

On Mon, Jun 22, 2026 at 9:13 AM Bob Roos via Discuss <
discuss@lists.openscad.org> wrote:

Hello Discuss,

but not in the right direction

I want to have all edges rounded, but rounding=-1 is not the solution at
all.

Thank you for the help.  I am getting better at this with practice.

include <BOSL2/std.scad> //or screws or threading
$fn = 72;
diff(){
cuboid([30,10,16],rounding=1) position(LEFT)
#tag("remove")cuboid([3,10,6],anchor=LEFT);
}

--
Best regards,
Bob                          mailto:roosbob@wybatap.com


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

--
have Fun,
Bob                          mailto:roosbob@wybatap.com


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

Rounding this is not particularly simple. If you want to do it the way you started out, by subtracting a suitable cuboid: r=1; diff() cuboid([30,10,16],rounding=r) position(LEFT) tag("remove") cuboid([3,10,6],anchor=LEFT) edge_profile_asym(except=[LEFT+FWD,LEFT+BACK,RIGHT+BOT,RIGHT+TOP],flip=true,corner_type="round",size=[r,r]) xflip()mask2d_roundover(r=r); You have to use edge_profile_asym to place the roundings on the cube when you want more complicated arrangements of roundings. I think it's somewhat easier to do it with round_prism: base = difference([ rect([30,16],anchor=LEFT), rect([3,6], anchor=LEFT) ]); rounded_prism(base[0], height=10,joint_top=1, joint_bot=1, joint_sides=[1,1,1,0,0,1,1,1],k=.9); On Mon, Jun 22, 2026 at 12:58 PM Bob Roos via Discuss < discuss@lists.openscad.org> wrote: > Hi Leonard, > > no I just want the outside edges to be rounded. > > Monday, June 22, 2026, 10:34:31 AM, you wrote: > > Does that imply that there will be fillets on those inside concave edges? > > > On Mon, Jun 22, 2026 at 9:13 AM Bob Roos via Discuss < > > discuss@lists.openscad.org> wrote: > > >> Hello Discuss, > >> > >> but not in the right direction > >> > >> I want to have all edges rounded, but rounding=-1 is not the solution at > >> all. > >> > >> Thank you for the help. I am getting better at this with practice. > >> > >> include <BOSL2/std.scad> //or screws or threading > >> $fn = 72; > >> diff(){ > >> cuboid([30,10,16],rounding=1) position(LEFT) > >> #tag("remove")cuboid([3,10,6],anchor=LEFT); > >> } > >> > >> -- > >> Best regards, > >> Bob mailto:roosbob@wybatap.com > >> _______________________________________________ > >> 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 > > > > -- > have Fun, > Bob mailto:roosbob@wybatap.com > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org
BR
Bob Roos
Mon, Jun 22, 2026 9:41 PM

Hi Adrian,

I knew it wasn't simple.  I will study your examples.

I did get what I wanted with this.  It took a lot of trial and error to figure out where left and right top and bottom were

include <BOSL2/std.scad> //or screws or threading
$fn=24;
Inch=25.4;
LHF = .28;      // Layer height for faster build
LH=.25; // Layer height after 1st layer
FL=.2; // first layer

L = 7 * Inch;
L1 = 1 * Inch;
L2 = 3.5 * Inch;
W = Inch;
D = .5 * Inch;
D1 = .25 * Inch;
T = 3;

difference(){
Block();
right(T/2) down(3) Notch(T/2,3,W,.25Inch);
right(L-T/2) down(3) rotate([0,0,180])Notch(T/2,3,W,.25
Inch);
up(D1-1)#right(36)linear_extrude(1)text("Super Nifty Window Prop",anchor=TOP+LEFT,size=8,valign="bottom");
}

module Block(){
cuboid([L,W,D1],rounding=T/2,anchor=BOT+LEFT) ;  // full blockshow_anchors()
up(T)cuboid([L1,W,D+T],rounding=T/2,anchor=TOP+LEFT,except=TOP);
up(T)right(L)cuboid([L2,W,D+T],rounding=T/2,anchor=TOP+RIGHT,except=TOP);
up(T)right(30)cuboid([L1,W,D+T],rounding=T/2,anchor=TOP+LEFT,except=TOP);
up(T)right(60)cuboid([L1,W,D+T],rounding=T/2,anchor=TOP+LEFT,except=TOP);
}

module Notch(R,XX,YY,ZZ){
Dx=XX;
Dy=YY;
Dz=ZZ;

cuboid([XX,YY,ZZ]){
*  position(RIGHT+FRONT)rounding_edge_mask(r=R,h=Dz);
*  position(RIGHT+BACK) rounding_edge_mask(r=R,h=Dz,spin=270);

     position(TOP+FRONT)  rounding_edge_mask(r=R,h=Dx,orient=LEFT,spin=0);
     position(BOT+FRONT)  rounding_edge_mask(r=R,h=Dx,orient=LEFT,spin=90);
    
     position(TOP+LEFT)   rounding_edge_mask(r=R,h=Dy,orient=FRONT);
  *   position(TOP+RIGHT)  rounding_edge_mask(r=R,h=Dy,orient=FRONT);
    
     position(BOT+LEFT)   rounding_edge_mask(r=R,h=Dy,orient=FRONT,spin=270);
  •  position(BOT+RIGHT)  rounding_edge_mask(r=R,h=Dy,orient=FRONT);
    
  • position(BACK+RIGHT) rounding_edge_mask(r=R,h=Dz);
    
*    position(BACK+LEFT)  rounding_edge_mask(r=R,h=Dz);
    
     position(BOT+BACK)   rounding_edge_mask(r=R,h=Dx,orient=RIGHT,spin=270);
     position(TOP+BACK)   rounding_edge_mask(r=R,h=Dx,orient=RIGHT,spin=180);
}

Monday, June 22, 2026, 4:38:46 PM, you wrote:

Rounding this is not particularly simple.  If you want to do it the way you
started out, by subtracting a suitable cuboid:

r=1;
diff()
cuboid([30,10,16],rounding=r)
position(LEFT) tag("remove")
cuboid([3,10,6],anchor=LEFT)

edge_profile_asym(except=[LEFT+FWD,LEFT+BACK,RIGHT+BOT,RIGHT+TOP],flip=true,corner_type="round",size=[r,r])
xflip()mask2d_roundover(r=r);

You have to use edge_profile_asym to place the roundings on the cube when
you want more complicated arrangements of roundings.

I think it's somewhat easier to do it with round_prism:

base = difference([
rect([30,16],anchor=LEFT),
rect([3,6], anchor=LEFT)
]);
rounded_prism(base[0], height=10,joint_top=1, joint_bot=1,
joint_sides=[1,1,1,0,0,1,1,1],k=.9);

On Mon, Jun 22, 2026 at 12:58 PM Bob Roos via Discuss <
discuss@lists.openscad.org> wrote:

Hi Leonard,

no I just want the outside edges to be rounded.

Monday, June 22, 2026, 10:34:31 AM, you wrote:

Does that imply that there will be fillets on those inside concave edges?

On Mon, Jun 22, 2026 at 9:13 AM Bob Roos via Discuss <
discuss@lists.openscad.org> wrote:

Hello Discuss,

but not in the right direction

I want to have all edges rounded, but rounding=-1 is not the solution at
all.

Thank you for the help.  I am getting better at this with practice.

include <BOSL2/std.scad> //or screws or threading
$fn = 72;
diff(){
cuboid([30,10,16],rounding=1) position(LEFT)
#tag("remove")cuboid([3,10,6],anchor=LEFT);
}

--
Best regards,
Bob                          mailto:roosbob@wybatap.com


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

--
have Fun,
Bob                          mailto:roosbob@wybatap.com


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

--
have Fun,
Bob                          mailto:roosbob@wybatap.com

Hi Adrian, I knew it wasn't simple. I will study your examples. I did get what I wanted with this. It took a lot of trial and error to figure out where left and right top and bottom were include <BOSL2/std.scad> //or screws or threading $fn=24; Inch=25.4; LHF = .28; // Layer height for faster build LH=.25; // Layer height after 1st layer FL=.2; // first layer L = 7 * Inch; L1 = 1 * Inch; L2 = 3.5 * Inch; W = Inch; D = .5 * Inch; D1 = .25 * Inch; T = 3; difference(){ Block(); right(T/2) down(3) Notch(T/2,3,W,.25*Inch); right(L-T/2) down(3) rotate([0,0,180])Notch(T/2,3,W,.25*Inch); up(D1-1)#right(36)linear_extrude(1)text("Super Nifty Window Prop",anchor=TOP+LEFT,size=8,valign="bottom"); } module Block(){ cuboid([L,W,D1],rounding=T/2,anchor=BOT+LEFT) ; // full blockshow_anchors() up(T)cuboid([L1,W,D+T],rounding=T/2,anchor=TOP+LEFT,except=TOP); up(T)right(L)cuboid([L2,W,D+T],rounding=T/2,anchor=TOP+RIGHT,except=TOP); up(T)right(30)cuboid([L1,W,D+T],rounding=T/2,anchor=TOP+LEFT,except=TOP); up(T)right(60)cuboid([L1,W,D+T],rounding=T/2,anchor=TOP+LEFT,except=TOP); } module Notch(R,XX,YY,ZZ){ Dx=XX; Dy=YY; Dz=ZZ; cuboid([XX,YY,ZZ]){ * position(RIGHT+FRONT)rounding_edge_mask(r=R,h=Dz); * position(RIGHT+BACK) rounding_edge_mask(r=R,h=Dz,spin=270); position(TOP+FRONT) rounding_edge_mask(r=R,h=Dx,orient=LEFT,spin=0); position(BOT+FRONT) rounding_edge_mask(r=R,h=Dx,orient=LEFT,spin=90); position(TOP+LEFT) rounding_edge_mask(r=R,h=Dy,orient=FRONT); * position(TOP+RIGHT) rounding_edge_mask(r=R,h=Dy,orient=FRONT); position(BOT+LEFT) rounding_edge_mask(r=R,h=Dy,orient=FRONT,spin=270); * position(BOT+RIGHT) rounding_edge_mask(r=R,h=Dy,orient=FRONT); * position(BACK+RIGHT) rounding_edge_mask(r=R,h=Dz); * position(BACK+LEFT) rounding_edge_mask(r=R,h=Dz); position(BOT+BACK) rounding_edge_mask(r=R,h=Dx,orient=RIGHT,spin=270); position(TOP+BACK) rounding_edge_mask(r=R,h=Dx,orient=RIGHT,spin=180); } Monday, June 22, 2026, 4:38:46 PM, you wrote: > Rounding this is not particularly simple. If you want to do it the way you > started out, by subtracting a suitable cuboid: > r=1; > diff() > cuboid([30,10,16],rounding=r) > position(LEFT) tag("remove") > cuboid([3,10,6],anchor=LEFT) > edge_profile_asym(except=[LEFT+FWD,LEFT+BACK,RIGHT+BOT,RIGHT+TOP],flip=true,corner_type="round",size=[r,r]) > xflip()mask2d_roundover(r=r); > You have to use edge_profile_asym to place the roundings on the cube when > you want more complicated arrangements of roundings. > I think it's somewhat easier to do it with round_prism: > base = difference([ > rect([30,16],anchor=LEFT), > rect([3,6], anchor=LEFT) > ]); > rounded_prism(base[0], height=10,joint_top=1, joint_bot=1, > joint_sides=[1,1,1,0,0,1,1,1],k=.9); > On Mon, Jun 22, 2026 at 12:58 PM Bob Roos via Discuss < > discuss@lists.openscad.org> wrote: >> Hi Leonard, >> >> no I just want the outside edges to be rounded. >> >> Monday, June 22, 2026, 10:34:31 AM, you wrote: >> > Does that imply that there will be fillets on those inside concave edges? >> >> > On Mon, Jun 22, 2026 at 9:13 AM Bob Roos via Discuss < >> > discuss@lists.openscad.org> wrote: >> >> >> Hello Discuss, >> >> >> >> but not in the right direction >> >> >> >> I want to have all edges rounded, but rounding=-1 is not the solution at >> >> all. >> >> >> >> Thank you for the help. I am getting better at this with practice. >> >> >> >> include <BOSL2/std.scad> //or screws or threading >> >> $fn = 72; >> >> diff(){ >> >> cuboid([30,10,16],rounding=1) position(LEFT) >> >> #tag("remove")cuboid([3,10,6],anchor=LEFT); >> >> } >> >> >> >> -- >> >> Best regards, >> >> Bob mailto:roosbob@wybatap.com >> >> _______________________________________________ >> >> 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 >> >> >> >> -- >> have Fun, >> Bob mailto:roosbob@wybatap.com >> _______________________________________________ >> 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 -- have Fun, Bob mailto:roosbob@wybatap.com
JB
Jordan Brown
Mon, Jun 22, 2026 10:08 PM

On 6/22/2026 7:13 AM, Bob Roos via Discuss wrote:

$fn = 72;

TL;DR:  use $fn for regular polygons, and set it on the individual call;
for circular things just set $fa and $fs to 1 at the top level.

I recommend against using $fn like this.  $fn's behavior is obvious, but
it often produces results that are more complex than they need to be. 
It is very easy to end up with models that are unnecessarily complex,
causing performance problems for OpenSCAD itself and perhaps for
downstream tools.  The picture is worse for spheres, because there the
number of sides is $fn^2/2.  Use $fn only when you need to control the
exact number of sides, which is mostly when you want to create a regular
polygon - and there, you almost always want to set $fn on the particular
call, not using a regular assignment.

Setting $fn to 72, a 72-gon, is pretty good up to a  diameter of a
hundred mm or so, depending on your tastes, but if you get down to a
diameter of a millimeter you've got sides that are only 0.05 mm, smaller
than the precision of your printer.

Much better is to use $fa and $fs, or in recent builds the experimental
$fe, to control your circles, because they automatically adjust for the
size of the circle.  Mostly, you can set them once, set them the same
for all models, and be happy.

I usually set both $fs and $fa to 1.  For 1mm-diameter circles, that
yields a pentagon; for 100mm diameter circles it yields a 315-gon.  If
you want to tune a bit better, you might set $fa larger (because a
315-gon is more than you need for most purposes) and $fs smaller (if you
really need your tiny circles to be more precise).

A while back I wrote a demo program, attached, that generates cylinders
and arcs with adjustable sizes and numbers of sides, so that I could see
and feel how the various parameters ended up.  I printed samples ranging
from a 10mm diameter circle to a 1000mm diameter arc.  At 10mm I cannot
see or feel the sides of a 25-gon; at 1000mm I cannot see or feel the
sides of a 300-gon.

On 6/22/2026 7:13 AM, Bob Roos via Discuss wrote: > $fn = 72; TL;DR:  use $fn for regular polygons, and set it on the individual call; for circular things just set $fa and $fs to 1 at the top level. I recommend against using $fn like this.  $fn's behavior is obvious, but it often produces results that are more complex than they need to be.  It is very easy to end up with models that are unnecessarily complex, causing performance problems for OpenSCAD itself and perhaps for downstream tools.  The picture is worse for spheres, because there the number of sides is $fn^2/2.  Use $fn only when you need to control the exact number of sides, which is mostly when you want to create a regular polygon - and there, you almost always want to set $fn on the particular call, not using a regular assignment. Setting $fn to 72, a 72-gon, is pretty good up to a  diameter of a hundred mm or so, depending on your tastes, but if you get down to a diameter of a millimeter you've got sides that are only 0.05 mm, smaller than the precision of your printer. Much better is to use $fa and $fs, or in recent builds the experimental $fe, to control your circles, because they automatically adjust for the size of the circle.  Mostly, you can set them once, set them the same for all models, and be happy. I usually set both $fs and $fa to 1.  For 1mm-diameter circles, that yields a pentagon; for 100mm diameter circles it yields a 315-gon.  If you want to tune a bit better, you might set $fa larger (because a 315-gon is more than you need for most purposes) and $fs smaller (if you really need your tiny circles to be more precise). A while back I wrote a demo program, attached, that generates cylinders and arcs with adjustable sizes and numbers of sides, so that I could see and feel how the various parameters ended up.  I printed samples ranging from a 10mm diameter circle to a 1000mm diameter arc.  At 10mm I cannot see or feel the sides of a 25-gon; at 1000mm I cannot see or feel the sides of a 300-gon.
AM
Adrian Mariano
Mon, Jun 22, 2026 10:24 PM

In a recent post I advocated against attach() as the first option you
consider for positioning child objects and in particular I dismissed using
edges as attachment sites, but if you want to put edge masks on a cube,
this is exactly the situation where you want to do these things.  Something
like diff() attach(LEFT+RIGHT, LEFT+FWD, inside=true)
rounding_edge_mask(...) can be exactly the trick with less trial and
error.  For placing a fillet use inside=false and then
yrot(90)fillet(...).

On Mon, Jun 22, 2026 at 5:42 PM Bob Roos via Discuss <
discuss@lists.openscad.org> wrote:

Hi Adrian,

I knew it wasn't simple.  I will study your examples.

I did get what I wanted with this.  It took a lot of trial and error to
figure out where left and right top and bottom were

include <BOSL2/std.scad> //or screws or threading
$fn=24;
Inch=25.4;
LHF = .28;      // Layer height for faster build
LH=.25; // Layer height after 1st layer
FL=.2; // first layer

L = 7 * Inch;
L1 = 1 * Inch;
L2 = 3.5 * Inch;
W = Inch;
D = .5 * Inch;
D1 = .25 * Inch;
T = 3;

difference(){
Block();
right(T/2) down(3) Notch(T/2,3,W,.25Inch);
right(L-T/2) down(3) rotate([0,0,180])Notch(T/2,3,W,.25
Inch);
up(D1-1)#right(36)linear_extrude(1)text("Super Nifty Window
Prop",anchor=TOP+LEFT,size=8,valign="bottom");
}

module Block(){
cuboid([L,W,D1],rounding=T/2,anchor=BOT+LEFT) ;  // full
blockshow_anchors()
up(T)cuboid([L1,W,D+T],rounding=T/2,anchor=TOP+LEFT,except=TOP);
up(T)right(L)cuboid([L2,W,D+T],rounding=T/2,anchor=TOP+RIGHT,except=TOP);
up(T)right(30)cuboid([L1,W,D+T],rounding=T/2,anchor=TOP+LEFT,except=TOP);
up(T)right(60)cuboid([L1,W,D+T],rounding=T/2,anchor=TOP+LEFT,except=TOP);
}

module Notch(R,XX,YY,ZZ){
Dx=XX;
Dy=YY;
Dz=ZZ;

cuboid([XX,YY,ZZ]){
   *  position(RIGHT+FRONT)rounding_edge_mask(r=R,h=Dz);
   *  position(RIGHT+BACK) rounding_edge_mask(r=R,h=Dz,spin=270);

      position(TOP+FRONT)

rounding_edge_mask(r=R,h=Dx,orient=LEFT,spin=0);
position(BOT+FRONT)
rounding_edge_mask(r=R,h=Dx,orient=LEFT,spin=90);

      position(TOP+LEFT)   rounding_edge_mask(r=R,h=Dy,orient=FRONT);
   *   position(TOP+RIGHT)  rounding_edge_mask(r=R,h=Dy,orient=FRONT);

      position(BOT+LEFT)

rounding_edge_mask(r=R,h=Dy,orient=FRONT,spin=270);

  •  position(BOT+RIGHT)  rounding_edge_mask(r=R,h=Dy,orient=FRONT);
    
*     position(BACK+RIGHT) rounding_edge_mask(r=R,h=Dz);
 *    position(BACK+LEFT)  rounding_edge_mask(r=R,h=Dz);

      position(BOT+BACK)

rounding_edge_mask(r=R,h=Dx,orient=RIGHT,spin=270);
position(TOP+BACK)
rounding_edge_mask(r=R,h=Dx,orient=RIGHT,spin=180);
}

Monday, June 22, 2026, 4:38:46 PM, you wrote:

Rounding this is not particularly simple.  If you want to do it the way

you

started out, by subtracting a suitable cuboid:

r=1;
diff()
cuboid([30,10,16],rounding=r)
position(LEFT) tag("remove")
cuboid([3,10,6],anchor=LEFT)

edge_profile_asym(except=[LEFT+FWD,LEFT+BACK,RIGHT+BOT,RIGHT+TOP],flip=true,corner_type="round",size=[r,r])

      xflip()mask2d_roundover(r=r);

You have to use edge_profile_asym to place the roundings on the cube when
you want more complicated arrangements of roundings.

I think it's somewhat easier to do it with round_prism:

base = difference([
rect([30,16],anchor=LEFT),
rect([3,6], anchor=LEFT)
]);
rounded_prism(base[0], height=10,joint_top=1, joint_bot=1,
joint_sides=[1,1,1,0,0,1,1,1],k=.9);

On Mon, Jun 22, 2026 at 12:58 PM Bob Roos via Discuss <
discuss@lists.openscad.org> wrote:

Hi Leonard,

no I just want the outside edges to be rounded.

Monday, June 22, 2026, 10:34:31 AM, you wrote:

Does that imply that there will be fillets on those inside concave

edges?

On Mon, Jun 22, 2026 at 9:13 AM Bob Roos via Discuss <
discuss@lists.openscad.org> wrote:

Hello Discuss,

but not in the right direction

I want to have all edges rounded, but rounding=-1 is not the

solution at

all.

Thank you for the help.  I am getting better at this with practice.

include <BOSL2/std.scad> //or screws or threading
$fn = 72;
diff(){
cuboid([30,10,16],rounding=1) position(LEFT)
#tag("remove")cuboid([3,10,6],anchor=LEFT);
}

--
Best regards,
Bob                          mailto:roosbob@wybatap.com


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

--
have Fun,
Bob                          mailto:roosbob@wybatap.com


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

--
have Fun,
Bob                          mailto:roosbob@wybatap.com


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

In a recent post I advocated against attach() as the first option you consider for positioning child objects and in particular I dismissed using edges as attachment sites, but if you want to put edge masks on a cube, this is exactly the situation where you want to do these things. Something like diff() attach(LEFT+RIGHT, LEFT+FWD, inside=true) rounding_edge_mask(...) can be exactly the trick with less trial and error. For placing a fillet use inside=false and then yrot(90)fillet(...). On Mon, Jun 22, 2026 at 5:42 PM Bob Roos via Discuss < discuss@lists.openscad.org> wrote: > Hi Adrian, > > I knew it wasn't simple. I will study your examples. > > I did get what I wanted with this. It took a lot of trial and error to > figure out where left and right top and bottom were > > include <BOSL2/std.scad> //or screws or threading > $fn=24; > Inch=25.4; > LHF = .28; // Layer height for faster build > LH=.25; // Layer height after 1st layer > FL=.2; // first layer > > L = 7 * Inch; > L1 = 1 * Inch; > L2 = 3.5 * Inch; > W = Inch; > D = .5 * Inch; > D1 = .25 * Inch; > T = 3; > > difference(){ > Block(); > right(T/2) down(3) Notch(T/2,3,W,.25*Inch); > right(L-T/2) down(3) rotate([0,0,180])Notch(T/2,3,W,.25*Inch); > up(D1-1)#right(36)linear_extrude(1)text("Super Nifty Window > Prop",anchor=TOP+LEFT,size=8,valign="bottom"); > } > > module Block(){ > cuboid([L,W,D1],rounding=T/2,anchor=BOT+LEFT) ; // full > blockshow_anchors() > up(T)cuboid([L1,W,D+T],rounding=T/2,anchor=TOP+LEFT,except=TOP); > up(T)right(L)cuboid([L2,W,D+T],rounding=T/2,anchor=TOP+RIGHT,except=TOP); > up(T)right(30)cuboid([L1,W,D+T],rounding=T/2,anchor=TOP+LEFT,except=TOP); > up(T)right(60)cuboid([L1,W,D+T],rounding=T/2,anchor=TOP+LEFT,except=TOP); > } > > module Notch(R,XX,YY,ZZ){ > Dx=XX; > Dy=YY; > Dz=ZZ; > > cuboid([XX,YY,ZZ]){ > * position(RIGHT+FRONT)rounding_edge_mask(r=R,h=Dz); > * position(RIGHT+BACK) rounding_edge_mask(r=R,h=Dz,spin=270); > > position(TOP+FRONT) > rounding_edge_mask(r=R,h=Dx,orient=LEFT,spin=0); > position(BOT+FRONT) > rounding_edge_mask(r=R,h=Dx,orient=LEFT,spin=90); > > position(TOP+LEFT) rounding_edge_mask(r=R,h=Dy,orient=FRONT); > * position(TOP+RIGHT) rounding_edge_mask(r=R,h=Dy,orient=FRONT); > > position(BOT+LEFT) > rounding_edge_mask(r=R,h=Dy,orient=FRONT,spin=270); > * position(BOT+RIGHT) rounding_edge_mask(r=R,h=Dy,orient=FRONT); > > * position(BACK+RIGHT) rounding_edge_mask(r=R,h=Dz); > * position(BACK+LEFT) rounding_edge_mask(r=R,h=Dz); > > position(BOT+BACK) > rounding_edge_mask(r=R,h=Dx,orient=RIGHT,spin=270); > position(TOP+BACK) > rounding_edge_mask(r=R,h=Dx,orient=RIGHT,spin=180); > } > > > Monday, June 22, 2026, 4:38:46 PM, you wrote: > > Rounding this is not particularly simple. If you want to do it the way > you > > started out, by subtracting a suitable cuboid: > > > r=1; > > diff() > > cuboid([30,10,16],rounding=r) > > position(LEFT) tag("remove") > > cuboid([3,10,6],anchor=LEFT) > > > > edge_profile_asym(except=[LEFT+FWD,LEFT+BACK,RIGHT+BOT,RIGHT+TOP],flip=true,corner_type="round",size=[r,r]) > > xflip()mask2d_roundover(r=r); > > > You have to use edge_profile_asym to place the roundings on the cube when > > you want more complicated arrangements of roundings. > > > I think it's somewhat easier to do it with round_prism: > > > base = difference([ > > rect([30,16],anchor=LEFT), > > rect([3,6], anchor=LEFT) > > ]); > > rounded_prism(base[0], height=10,joint_top=1, joint_bot=1, > > joint_sides=[1,1,1,0,0,1,1,1],k=.9); > > > > > On Mon, Jun 22, 2026 at 12:58 PM Bob Roos via Discuss < > > discuss@lists.openscad.org> wrote: > > >> Hi Leonard, > >> > >> no I just want the outside edges to be rounded. > >> > >> Monday, June 22, 2026, 10:34:31 AM, you wrote: > >> > Does that imply that there will be fillets on those inside concave > edges? > >> > >> > On Mon, Jun 22, 2026 at 9:13 AM Bob Roos via Discuss < > >> > discuss@lists.openscad.org> wrote: > >> > >> >> Hello Discuss, > >> >> > >> >> but not in the right direction > >> >> > >> >> I want to have all edges rounded, but rounding=-1 is not the > solution at > >> >> all. > >> >> > >> >> Thank you for the help. I am getting better at this with practice. > >> >> > >> >> include <BOSL2/std.scad> //or screws or threading > >> >> $fn = 72; > >> >> diff(){ > >> >> cuboid([30,10,16],rounding=1) position(LEFT) > >> >> #tag("remove")cuboid([3,10,6],anchor=LEFT); > >> >> } > >> >> > >> >> -- > >> >> Best regards, > >> >> Bob mailto:roosbob@wybatap.com > >> >> _______________________________________________ > >> >> 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 > >> > >> > >> > >> -- > >> have Fun, > >> Bob mailto:roosbob@wybatap.com > >> _______________________________________________ > >> 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 > > > > -- > have Fun, > Bob mailto:roosbob@wybatap.com > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org