### Big difference between F5 and F6

BR
Bob Roos
Thu, Nov 24, 2022 10:06 AM

When I look at the F5 rendering of this I get exactly what I want.

F6 seems to have turned the difference inside out and with the cube in there for looking at cross sections (thank you to Roger Wolf) it gives an error on F6 but OK on F5.

Thank you for your help.  Yes, I am inconsistent with use of cylinder and cyl.  Just learning to use BOSL more.

Bob

// top hat for earnest
// Bob Roos
// November 21, 2022

\$fn = 36;

Wb = 100;
Wh = 60;
H = 45;
T = 2.5;
MH = 3;              // attachment hole for rubber band

difference(){
union(){
cyl(d=Wh,h=H,rounding=2);  // main part of hat
translate([0,0,H/2])cyl(d=Wb,h=T,rounding=2);  // brim
}
translate([0,0,T])cylinder(d=Wh-2T,h=H,center=true);  // remove central part
/

#translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true);  // attachment hole
#rotate(9)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true);  // attachment hole
#rotate(189)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true);  // attachment hole
#rotate(180)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true);  // attachment hole
*/

# translate([0,0,-H])cube([Wb,Wb,Wb]);  // examine cross sections

}

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

Hello OpenSCAD, When I look at the F5 rendering of this I get exactly what I want. F6 seems to have turned the difference inside out and with the cube in there for looking at cross sections (thank you to Roger Wolf) it gives an error on F6 but OK on F5. Thank you for your help. Yes, I am inconsistent with use of cylinder and cyl. Just learning to use BOSL more. Bob // top hat for earnest // Bob Roos // November 21, 2022 \$fn = 36; include <BOSL2/std.scad> Wb = 100; Wh = 60; H = 45; T = 2.5; MH = 3; // attachment hole for rubber band difference(){ union(){ cyl(d=Wh,h=H,rounding=2); // main part of hat translate([0,0,H/2])cyl(d=Wb,h=T,rounding=2); // brim } translate([0,0,T])cylinder(d=Wh-2*T,h=H,center=true); // remove central part /* #translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true); // attachment hole #rotate(9)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true); // attachment hole #rotate(189)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true); // attachment hole #rotate(180)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true); // attachment hole */ # translate([0,0,-H])cube([Wb,Wb,Wb]); // examine cross sections } -- Best regards, Bob mailto:roosbob@wybatap.com
BR
Bob Roos
Thu, Nov 24, 2022 10:43 AM

Seems the culprit is the rounding on
cyl(d=Wh,h=H,rounding=2);  // main part of hat

I only wanted rounding on the top so I need to look up more about it on BOSL2

Bob

Thursday, November 24, 2022, 5:06:20 AM, you wrote:

When I look at the F5 rendering of this I get exactly what I want.

F6 seems to have turned the difference inside out and with the cube in there for looking at cross sections (thank you to Roger Wolf) it gives an error on F6 but OK on F5.

Thank you for your help.  Yes, I am inconsistent with use of cylinder and cyl.  Just learning to use BOSL more.

Bob

// top hat for earnest
// Bob Roos
// November 21, 2022

\$fn = 36;

Wb = 100;
Wh = 60;
H = 45;
T = 2.5;
MH = 3;              // attachment hole for rubber band

difference(){
union(){
cyl(d=Wh,h=H,rounding=2);  // main part of hat
translate([0,0,H/2])cyl(d=Wb,h=T,rounding=2);  // brim
}
translate([0,0,T])cylinder(d=Wh-2T,h=H,center=true);  // remove central part
/

#translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true);  // attachment hole
#rotate(9)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true);  // attachment hole
#rotate(189)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true);  // attachment hole
#rotate(180)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true);  // attachment hole
*/

# translate([0,0,-H])cube([Wb,Wb,Wb]);  // examine cross sections

}

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

Hi OpenSCAD, Seems the culprit is the rounding on cyl(d=Wh,h=H,rounding=2); // main part of hat I only wanted rounding on the top so I need to look up more about it on BOSL2 Bob Thursday, November 24, 2022, 5:06:20 AM, you wrote: > Hello OpenSCAD, > When I look at the F5 rendering of this I get exactly what I want. > F6 seems to have turned the difference inside out and with the cube in there for looking at cross sections (thank you to Roger Wolf) it gives an error on F6 but OK on F5. > Thank you for your help. Yes, I am inconsistent with use of cylinder and cyl. Just learning to use BOSL more. > Bob > // top hat for earnest > // Bob Roos > // November 21, 2022 > \$fn = 36; > include <BOSL2/std.scad> > Wb = 100; > Wh = 60; > H = 45; > T = 2.5; > MH = 3; // attachment hole for rubber band > difference(){ > union(){ > cyl(d=Wh,h=H,rounding=2); // main part of hat > translate([0,0,H/2])cyl(d=Wb,h=T,rounding=2); // brim > } > translate([0,0,T])cylinder(d=Wh-2*T,h=H,center=true); // remove central part > /* > #translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true); // attachment hole > #rotate(9)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true); // attachment hole > #rotate(189)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true); // attachment hole > #rotate(180)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true); // attachment hole > */ > # translate([0,0,-H])cube([Wb,Wb,Wb]); // examine cross sections > } -- have Fun, Bob mailto:roosbob@wybatap.com
BR
Bob Roos
Thu, Nov 24, 2022 11:10 AM

Hi Bob,

needed to say rounding1 instead of rounding.  BOSL2 is great!

Bob

Thursday, November 24, 2022, 5:43:01 AM, you wrote:

Seems the culprit is the rounding on
cyl(d=Wh,h=H,rounding=2);  // main part of hat

I only wanted rounding on the top so I need to look up more about it on BOSL2

Bob

Thursday, November 24, 2022, 5:06:20 AM, you wrote:

When I look at the F5 rendering of this I get exactly what I want.

F6 seems to have turned the difference inside out and with the cube in there for looking at cross sections (thank you to Roger Wolf) it gives an error on F6 but OK on F5.

Thank you for your help.  Yes, I am inconsistent with use of cylinder and cyl.  Just learning to use BOSL more.

Bob

// top hat for earnest
// Bob Roos
// November 21, 2022

\$fn = 36;

Wb = 100;
Wh = 60;
H = 45;
T = 2.5;
MH = 3;              // attachment hole for rubber band

difference(){
union(){
cyl(d=Wh,h=H,rounding=2);  // main part of hat
translate([0,0,H/2])cyl(d=Wb,h=T,rounding=2);  // brim
}
translate([0,0,T])cylinder(d=Wh-2T,h=H,center=true);  // remove central part
/

#translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true);  // attachment hole
#rotate(9)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true);  // attachment hole
#rotate(189)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true);  // attachment hole
#rotate(180)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true);  // attachment hole
*/

# translate([0,0,-H])cube([Wb,Wb,Wb]);  // examine cross sections

}

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

Hi Bob, needed to say rounding1 instead of rounding. BOSL2 is great! Bob Thursday, November 24, 2022, 5:43:01 AM, you wrote: > Hi OpenSCAD, > Seems the culprit is the rounding on > cyl(d=Wh,h=H,rounding=2); // main part of hat > I only wanted rounding on the top so I need to look up more about it on BOSL2 > Bob > Thursday, November 24, 2022, 5:06:20 AM, you wrote: >> Hello OpenSCAD, >> When I look at the F5 rendering of this I get exactly what I want. >> F6 seems to have turned the difference inside out and with the cube in there for looking at cross sections (thank you to Roger Wolf) it gives an error on F6 but OK on F5. >> Thank you for your help. Yes, I am inconsistent with use of cylinder and cyl. Just learning to use BOSL more. >> Bob >> // top hat for earnest >> // Bob Roos >> // November 21, 2022 >> \$fn = 36; >> include <BOSL2/std.scad> >> Wb = 100; >> Wh = 60; >> H = 45; >> T = 2.5; >> MH = 3; // attachment hole for rubber band >> difference(){ >> union(){ >> cyl(d=Wh,h=H,rounding=2); // main part of hat >> translate([0,0,H/2])cyl(d=Wb,h=T,rounding=2); // brim >> } >> translate([0,0,T])cylinder(d=Wh-2*T,h=H,center=true); // remove central part >> /* >> #translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true); // attachment hole >> #rotate(9)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true); // attachment hole >> #rotate(189)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true); // attachment hole >> #rotate(180)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true); // attachment hole >> */ >> # translate([0,0,-H])cube([Wb,Wb,Wb]); // examine cross sections >> } -- have Fun, Bob mailto:roosbob@wybatap.com
AM
Thu, Nov 24, 2022 1:38 PM

I'm not sure what you were seeing about F5 and F6 disagreeing.  I get an
error from F6, and it's because the rounding is too big to fit and creates
a non-manifold self-intersecting shape.  This is actually a BOSL2 bug:  you
should get an error from BOSL2 that tells you your rounding is too big to
fit.

[image: image.png]

On Thu, Nov 24, 2022 at 6:11 AM Bob Roos roosbob@wybatap.com wrote:

Hi Bob,

needed to say rounding1 instead of rounding.  BOSL2 is great!

Bob

Thursday, November 24, 2022, 5:43:01 AM, you wrote:

Seems the culprit is the rounding on
cyl(d=Wh,h=H,rounding=2);  // main part of hat

I only wanted rounding on the top so I need to look up more about it on

BOSL2

Bob

Thursday, November 24, 2022, 5:06:20 AM, you wrote:

When I look at the F5 rendering of this I get exactly what I want.

F6 seems to have turned the difference inside out and with the cube in

there for looking at cross sections (thank you to Roger Wolf) it gives an
error on F6 but OK on F5.

Thank you for your help.  Yes, I am inconsistent with use of cylinder

and cyl.  Just learning to use BOSL more.

Bob

// top hat for earnest
// Bob Roos
// November 21, 2022

\$fn = 36;

Wb = 100;
Wh = 60;
H = 45;
T = 2.5;
MH = 3;              // attachment hole for rubber band

difference(){
union(){
cyl(d=Wh,h=H,rounding=2);  // main part of hat
translate([0,0,H/2])cyl(d=Wb,h=T,rounding=2);  // brim
}
translate([0,0,T])cylinder(d=Wh-2*T,h=H,center=true);  // remove

central part

`````` /*
#translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true);  //
``````

attachment hole

#rotate(9)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true);
// attachment hole

#rotate(189)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true);
// attachment hole

#rotate(180)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true);
// attachment hole

`````` */
``````

# translate([0,0,-H])cube([Wb,Wb,Wb]);  // examine cross sections

}

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

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

I'm not sure what you were seeing about F5 and F6 disagreeing. I get an error from F6, and it's because the rounding is too big to fit and creates a non-manifold self-intersecting shape. This is actually a BOSL2 bug: you should get an error from BOSL2 that tells you your rounding is too big to fit. [image: image.png] On Thu, Nov 24, 2022 at 6:11 AM Bob Roos <roosbob@wybatap.com> wrote: > Hi Bob, > > needed to say rounding1 instead of rounding. BOSL2 is great! > > Bob > > Thursday, November 24, 2022, 5:43:01 AM, you wrote: > > Hi OpenSCAD, > > > Seems the culprit is the rounding on > > cyl(d=Wh,h=H,rounding=2); // main part of hat > > > I only wanted rounding on the top so I need to look up more about it on > BOSL2 > > > Bob > > > Thursday, November 24, 2022, 5:06:20 AM, you wrote: > >> Hello OpenSCAD, > > >> When I look at the F5 rendering of this I get exactly what I want. > > >> F6 seems to have turned the difference inside out and with the cube in > there for looking at cross sections (thank you to Roger Wolf) it gives an > error on F6 but OK on F5. > > >> Thank you for your help. Yes, I am inconsistent with use of cylinder > and cyl. Just learning to use BOSL more. > > >> Bob > > >> // top hat for earnest > >> // Bob Roos > >> // November 21, 2022 > > >> \$fn = 36; > >> include <BOSL2/std.scad> > > >> Wb = 100; > >> Wh = 60; > >> H = 45; > >> T = 2.5; > >> MH = 3; // attachment hole for rubber band > > >> difference(){ > >> union(){ > >> cyl(d=Wh,h=H,rounding=2); // main part of hat > >> translate([0,0,H/2])cyl(d=Wb,h=T,rounding=2); // brim > >> } > >> translate([0,0,T])cylinder(d=Wh-2*T,h=H,center=true); // remove > central part > >> /* > >> #translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true); // > attachment hole > >> > #rotate(9)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true); > // attachment hole > >> > #rotate(189)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true); > // attachment hole > >> > #rotate(180)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true); > // attachment hole > >> */ > >> # translate([0,0,-H])cube([Wb,Wb,Wb]); // examine cross sections > >> } > > > > > > -- > have Fun, > Bob mailto:roosbob@wybatap.com > _______________________________________________ > OpenSCAD mailing list > To unsubscribe send an email to discuss-leave@lists.openscad.org >
BR
Bob Roos
Thu, Nov 24, 2022 2:11 PM

I tried to reproduce the error again.  I changed rounding1 to rounding and the F6 image came out as expected with the rounding at the bottom showing.

That really should not be there so rounding1 is the answer. It is not too big for the that cylinder.

Adding the cutaway cube back in makes no difference.  It renders perfectly.  I don't get it.  I wish I had copied the original error, but what good is that if it can't be reproduced.

Bob

Thursday, November 24, 2022, 8:38:06 AM, you wrote:

I'm not sure what you were seeing about F5 and F6 disagreeing.  I get an error from F6, and it's because the rounding is too big to fit and creates a non-manifold self-intersecting shape.  This is actually a BOSL2 bug:  you should get an error from BOSL2 that tells you your rounding is too big to fit.

On Thu, Nov 24, 2022 at 6:11 AM Bob Roos roosbob@wybatap.com wrote:

Hi Bob,

needed to say rounding1 instead of rounding.   BOSL2 is great!

Bob

Thursday, November 24, 2022, 5:43:01 AM, you wrote:

Seems the culprit is the rounding on
cyl(d=Wh,h=H,rounding=2);  // main part of hat

I only wanted rounding on the top so I need to look up more about it on BOSL2

Bob

Thursday, November 24, 2022, 5:06:20 AM, you wrote:

When I look at the F5 rendering of this I get exactly what I want.

F6 seems to have turned the difference inside out and with the cube in there for looking at cross sections (thank you to Roger Wolf) it gives an error on F6 but OK on F5.

Thank you for your help.  Yes, I am inconsistent with use of cylinder and cyl.  Just learning to use BOSL more.

Bob

// top hat for earnest
// Bob Roos
// November 21, 2022

\$fn = 36;

Wb = 100;
Wh = 60;
H = 45;
T = 2.5;
MH = 3;              // attachment hole for rubber band

difference(){
union(){
cyl(d=Wh,h=H,rounding=2);  // main part of hat
translate([0,0,H/2])cyl(d=Wb,h=T,rounding=2);  // brim
}
translate([0,0,T])cylinder(d=Wh-2T,h=H,center=true);  // remove central part
/

#translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true);  // attachment hole
#rotate(9)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true);  // attachment hole
#rotate(189)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true);  // attachment hole
#rotate(180)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true);  // attachment hole
*/
#  translate([0,0,-H])cube([Wb,Wb,Wb]);  // examine cross sections
}

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

AM
Thu, Nov 24, 2022 2:27 PM

The code I copied from your example had a cylinder with a height of T=2.5
and a rounding of 2.  This means round both ends with radius 2, which
doesn't fit in a total height of 2.5.  This is on the brim part of the
hat.  I don't know what you wanted to do, maybe a rounding of T/2?  But as
coded it does not fit and should be an error, and that is why F6 gives an
error.  Your picture is zoomed in so I'm not sure where it is in the
model, but somewhere else than the place I'm looking.

On Thu, Nov 24, 2022 at 9:11 AM Bob Roos roosbob@wybatap.com wrote:

I tried to reproduce the error again.  I changed rounding1 to rounding and
the F6 image came out as expected with the rounding at the bottom showing.

That really should not be there so rounding1 is the answer. It is not
too big for the that cylinder.

Adding the cutaway cube back in makes no difference.  It renders
perfectly.  I don't get it.  I wish I had copied the original error, but
what good is that if it can't be reproduced.

Bob

Thursday, November 24, 2022, 8:38:06 AM, you wrote:

I'm not sure what you were seeing about F5 and F6 disagreeing.  I get an
error from F6, and it's because the rounding is too big to fit and creates
a non-manifold self-intersecting shape.  This is actually a BOSL2 bug:  you
should get an error from BOSL2 that tells you your rounding is too big to
fit.

[image: image.png]

On Thu, Nov 24, 2022 at 6:11 AM Bob Roos roosbob@wybatap.com wrote:

Hi Bob,

needed to say rounding1 instead of rounding.  BOSL2 is great!

Bob

Thursday, November 24, 2022, 5:43:01 AM, you wrote:

Seems the culprit is the rounding on
cyl(d=Wh,h=H,rounding=2);  // main part of hat

I only wanted rounding on the top so I need to look up more about it on

BOSL2

Bob

Thursday, November 24, 2022, 5:06:20 AM, you wrote:

When I look at the F5 rendering of this I get exactly what I want.

F6 seems to have turned the difference inside out and with the cube in

there for looking at cross sections (thank you to Roger Wolf) it gives an
error on F6 but OK on F5.

Thank you for your help.  Yes, I am inconsistent with use of cylinder

and cyl.  Just learning to use BOSL more.

Bob

// top hat for earnest
// Bob Roos
// November 21, 2022

\$fn = 36;

Wb = 100;
Wh = 60;
H = 45;
T = 2.5;
MH = 3;              // attachment hole for rubber band

difference(){
union(){
cyl(d=Wh,h=H,rounding=2);  // main part of hat
translate([0,0,H/2])cyl(d=Wb,h=T,rounding=2);  // brim
}
translate([0,0,T])cylinder(d=Wh-2*T,h=H,center=true);  // remove

central part

`````` /*
#translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true);  //
``````

attachment hole

#rotate(9)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true);
// attachment hole

#rotate(189)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true);
// attachment hole

#rotate(180)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true);
// attachment hole

`````` */
``````

# translate([0,0,-H])cube([Wb,Wb,Wb]);  // examine cross sections

}

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

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

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

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

BR
Bob Roos
Thu, Nov 24, 2022 3:07 PM

You are correct it is somewhere else.  The line above the one you were looking at.

H = 45;
cyl(d=Wh,h=H,rounding=2);  // main part of hat

I changed that to rounding1=2.

Anyway, thank you to all for your help, I got the print I wanted and my grandson is delighted.

Bob

Thursday, November 24, 2022, 9:27:43 AM, you wrote:

The code I copied from your example had a cylinder with a height of T=2.5 and a rounding of 2.  This means round both ends with radius 2, which doesn't fit in a total height of 2.5.   This is on the brim part of the hat.  I don't know what you wanted to do, maybe a rounding of T/2?  But as coded it does not fit and should be an error, and that is why F6 gives an error.   Your picture is zoomed in so I'm not sure where it is in the model, but somewhere else than the place I'm looking.

On Thu, Nov 24, 2022 at 9:11 AM Bob Roos roosbob@wybatap.com wrote:

I tried to reproduce the error again.  I changed rounding1 to rounding and the F6 image came out as expected with the rounding at the bottom showing.

That really should not be there so rounding1 is the answer. It is not too big for the that cylinder.

Adding the cutaway cube back in makes no difference.  It renders perfectly.  I don't get it.  I wish I had copied the original error, but what good is that if it can't be reproduced.

Bob

Thursday, November 24, 2022, 8:38:06 AM, you wrote:

I'm not sure what you were seeing about F5 and F6 disagreeing.  I get an error from F6, and it's because the rounding is too big to fit and creates a non-manifold self-intersecting shape.  This is actually a BOSL2 bug:  you should get an error from BOSL2 that tells you your rounding is too big to fit.

On Thu, Nov 24, 2022 at 6:11 AM Bob Roos roosbob@wybatap.com wrote:

Hi Bob,

needed to say rounding1 instead of rounding.   BOSL2 is great!

Bob

Thursday, November 24, 2022, 5:43:01 AM, you wrote:

Seems the culprit is the rounding on
cyl(d=Wh,h=H,rounding=2);  // main part of hat

I only wanted rounding on the top so I need to look up more about it on BOSL2

Bob

Thursday, November 24, 2022, 5:06:20 AM, you wrote:

When I look at the F5 rendering of this I get exactly what I want.

F6 seems to have turned the difference inside out and with the cube in there for looking at cross sections (thank you to Roger Wolf) it gives an error on F6 but OK on F5.

Thank you for your help.  Yes, I am inconsistent with use of cylinder and cyl.  Just learning to use BOSL more.

Bob

// top hat for earnest
// Bob Roos
// November 21, 2022

\$fn = 36;

Wb = 100;
Wh = 60;
H = 45;
T = 2.5;
MH = 3;              // attachment hole for rubber band

difference(){
union(){
cyl(d=Wh,h=H,rounding=2);  // main part of hat
translate([0,0,H/2])cyl(d=Wb,h=T,rounding=2);  // brim
}
translate([0,0,T])cylinder(d=Wh-2T,h=H,center=true);  // remove central part
/

#translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true);  // attachment hole
#rotate(9)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true);  // attachment hole
#rotate(189)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true);  // attachment hole
#rotate(180)translate([0,-(Wh+T)/2,(H)/2])cylinder(d=MH,h=T,center=true);  // attachment hole
*/
#  translate([0,0,-H])cube([Wb,Wb,Wb]);  // examine cross sections
}

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