Hi,

Guest

J

jjubenv

Mon, Jun 7, 2021 4:53 PM

Hi All,

I am creating a digital design for a step stool to get into our camper

trailer. It has splayed legs at each corner that are angled out in 2

direction by 15 degrees. It has an apron to wrap around the outside of the

legs and I'm having issues getting the apron mitered/beveled at the correct

spot (at both ends of the part). I'm pretty certain it's my math at issue

and not with OpenSCAD.

Below is the code, I'd like to eliminate the *fudge_factor* variable by

learning the proper math for the translation. I'd don't know what this

technique is called, so it's hard to search for answers/examples. I'm all

for approaching it a better way if there is a best practice that I don't

know about.

// OpenSCAD version 2021.01 (git 41f58fe) Linux appimage

//

// Apron part around a step stool with splayed out legs

module apron() {

a_length = 22; // Length of apron part

a_width = 3; // Width of apron part

a_thick = 0.75; // Thickness of apron part

```
a_side_angle = 90-15; // 15 degree angle
a_corner_angle = 360/4; // 90 degree corners (4 sides)
//Part features:
// a miter on the end of the wide face
// a bevel on the end of the miter
// Strategy: use a rectangle on each end to cut out (difference) the
```

miter and bevel

```
// compound angle formula to adjust the 15 degree miter
a_miter = atan( cos(a_side_angle) * tan(a_corner_angle/2) );
// compound angle formula to adjust the 45 degree bevel
a_bevel = asin( sin(a_side_angle) * sin(a_corner_angle/2) );
echo("a_miter=", a_miter);
echo("a_bevel=", a_bevel);
// fudge_factor: positions the blocks so the sides meet at the corner
// otherwise the sides overlap.
// I'd like to get rid of this.
*fudge_factor* = 0.041;
difference() {
difference() {
// the apron part
translate([-a_length/2, -a_width/2, 0]) // move origin to
```

center of part

linear_extrude(height=a_thick, center=true, $fn=10)

polygon(

points=[

[0,0],

[a_width*tan(a_miter), a_width],
[a_length-a_width*tan(a_miter), a_width],

[a_length, 0]

]);

// position the block at the right end of the part and

// subtract it

translate([a_length/2 -

rotate([0,0,a_miter])

rotate([0,-a_bevel,0])

cube([1,4,3], true);

}

// position the block at the left end of the part and

// subtract it

translate([-a_length/2 +

rotate([0,0,-a_miter])

rotate([0,a_bevel,0])

cube([1,4,3], true);

}

}

//apron();

color("yellow")

translate([11-0.75,0,0])

rotate([270+15,0,0])

apron();

color("red")

translate([0,11-0.75,0])

rotate([270+15,0,270])

apron();

// End

Regards,

Jake

--

Sent from: http://forum.openscad.org/

Hi All,
I am creating a digital design for a step stool to get into our camper
trailer. It has splayed legs at each corner that are angled out in 2
direction by 15 degrees. It has an apron to wrap around the outside of the
legs and I'm having issues getting the apron mitered/beveled at the correct
spot (at both ends of the part). I'm pretty certain it's my math at issue
and not with OpenSCAD.
Below is the code, I'd like to eliminate the *fudge_factor* variable by
learning the proper math for the translation. I'd don't know what this
technique is called, so it's hard to search for answers/examples. I'm all
for approaching it a better way if there is a best practice that I don't
know about.
// OpenSCAD version 2021.01 (git 41f58fe) Linux appimage
//
// Apron part around a step stool with splayed out legs
module apron() {
a_length = 22; // Length of apron part
a_width = 3; // Width of apron part
a_thick = 0.75; // Thickness of apron part
a_side_angle = 90-15; // 15 degree angle
a_corner_angle = 360/4; // 90 degree corners (4 sides)
//Part features:
// a miter on the end of the wide face
// a bevel on the end of the miter
// Strategy: use a rectangle on each end to cut out (difference) the
miter and bevel
// compound angle formula to adjust the 15 degree miter
a_miter = atan( cos(a_side_angle) * tan(a_corner_angle/2) );
// compound angle formula to adjust the 45 degree bevel
a_bevel = asin( sin(a_side_angle) * sin(a_corner_angle/2) );
echo("a_miter=", a_miter);
echo("a_bevel=", a_bevel);
// fudge_factor: positions the blocks so the sides meet at the corner
// otherwise the sides overlap.
// I'd like to get rid of this.
*fudge_factor* = 0.041;
difference() {
difference() {
// the apron part
translate([-a_length/2, -a_width/2, 0]) // move origin to
center of part
linear_extrude(height=a_thick, center=true, $fn=10)
polygon(
points=[
[0,0],
[a_width*tan(a_miter), a_width],
[a_length-a_width*tan(a_miter), a_width],
[a_length, 0]
]);
// position the block at the right end of the part and
// subtract it
translate([a_length/2 - *fudge_factor*,0,0])
rotate([0,0,a_miter])
rotate([0,-a_bevel,0])
cube([1,4,3], true);
}
// position the block at the left end of the part and
// subtract it
translate([-a_length/2 + *fudge_factor*,0,0])
rotate([0,0,-a_miter])
rotate([0,a_bevel,0])
cube([1,4,3], true);
}
}
//apron();
color("yellow")
translate([11-0.75,0,0])
rotate([270+15,0,0])
apron();
color("red")
translate([0,11-0.75,0])
rotate([270+15,0,270])
apron();
// End
Regards,
Jake
--
Sent from: http://forum.openscad.org/

A

adrianv

Mon, Jun 7, 2021 10:09 PM

Are you trying to work out the math or create the model? Because I would

construct the model in a math-free way. Personally I think it's always

better to construct models without the explicit use of math. (The computer

should do the math.)

a_length =22;

a_width=3;

a_thick=0.75;

a_side_angle = 15;

module apron_part()

{

intersection(){

rotate(-45) cube(a_length*2);
translate([a_length/2,0,0])rotate([0,-a_side_angle,0])
cube([a_thick, 2*a_length, a_width], center=true);

}

}

apron_part();

rotate(90)color("red")apron_part();

jjubenv wrote

Hi All,

I am creating a digital design for a step stool to get into our camper

trailer. It has splayed legs at each corner that are angled out in 2

direction by 15 degrees. It has an apron to wrap around the outside of

the

legs and I'm having issues getting the apron mitered/beveled at the

correct

spot (at both ends of the part). I'm pretty certain it's my math at issue

and not with OpenSCAD.

Below is the code, I'd like to eliminate the *fudge_factor* variable by

learning the proper math for the translation. I'd don't know what this

technique is called, so it's hard to search for answers/examples. I'm all

for approaching it a better way if there is a best practice that I don't

know about.

// OpenSCAD version 2021.01 (git 41f58fe) Linux appimage

//

// Apron part around a step stool with splayed out legs

module apron() {

a_length = 22; // Length of apron part

a_width = 3; // Width of apron part

a_thick = 0.75; // Thickness of apron part

```
a_side_angle = 90-15; // 15 degree angle
a_corner_angle = 360/4; // 90 degree corners (4 sides)
//Part features:
// a miter on the end of the wide face
// a bevel on the end of the miter
// Strategy: use a rectangle on each end to cut out (difference) the
```

miter and bevel

```
// compound angle formula to adjust the 15 degree miter
a_miter = atan( cos(a_side_angle) * tan(a_corner_angle/2) );
// compound angle formula to adjust the 45 degree bevel
a_bevel = asin( sin(a_side_angle) * sin(a_corner_angle/2) );
echo("a_miter=", a_miter);
echo("a_bevel=", a_bevel);
// fudge_factor: positions the blocks so the sides meet at the corner
// otherwise the sides overlap.
// I'd like to get rid of this.
*fudge_factor* = 0.041;
difference() {
difference() {
// the apron part
translate([-a_length/2, -a_width/2, 0]) // move origin to
```

center of part

linear_extrude(height=a_thick, center=true, $fn=10)

polygon(

points=[

[0,0],

[a_width*tan(a_miter), a_width],
[a_length-a_width*tan(a_miter), a_width],

[a_length, 0]

]);

// position the block at the right end of the part and

// subtract it

translate([a_length/2 -

rotate([0,0,a_miter])

rotate([0,-a_bevel,0])

cube([1,4,3], true);

}

// position the block at the left end of the part and

// subtract it

translate([-a_length/2 +

rotate([0,0,-a_miter])

rotate([0,a_bevel,0])

cube([1,4,3], true);

}

}

//apron();

color("yellow")

translate([11-0.75,0,0])

rotate([270+15,0,0])

apron();

color("red")

translate([0,11-0.75,0])

rotate([270+15,0,270])

apron();

// End

Regards,

Jake

--

Sent from: http://forum.openscad.org/

OpenSCAD mailing list

To unsubscribe send an email to

discuss-leave@.openscad

--

Sent from: http://forum.openscad.org/

Are you trying to work out the math or create the model? Because I would
construct the model in a math-free way. Personally I think it's always
better to construct models without the explicit use of math. (The computer
should do the math.)
a_length =22;
a_width=3;
a_thick=0.75;
a_side_angle = 15;
module apron_part()
{
intersection(){
rotate(-45) cube(a_length*2);
translate([a_length/2,0,0])rotate([0,-a_side_angle,0])
cube([a_thick, 2*a_length, a_width], center=true);
}
}
apron_part();
rotate(90)color("red")apron_part();
jjubenv wrote
> Hi All,
>
> I am creating a digital design for a step stool to get into our camper
> trailer. It has splayed legs at each corner that are angled out in 2
> direction by 15 degrees. It has an apron to wrap around the outside of
> the
> legs and I'm having issues getting the apron mitered/beveled at the
> correct
> spot (at both ends of the part). I'm pretty certain it's my math at issue
> and not with OpenSCAD.
>
> Below is the code, I'd like to eliminate the *fudge_factor* variable by
> learning the proper math for the translation. I'd don't know what this
> technique is called, so it's hard to search for answers/examples. I'm all
> for approaching it a better way if there is a best practice that I don't
> know about.
>
> // OpenSCAD version 2021.01 (git 41f58fe) Linux appimage
> //
> // Apron part around a step stool with splayed out legs
>
> module apron() {
> a_length = 22; // Length of apron part
> a_width = 3; // Width of apron part
> a_thick = 0.75; // Thickness of apron part
>
> a_side_angle = 90-15; // 15 degree angle
> a_corner_angle = 360/4; // 90 degree corners (4 sides)
>
> //Part features:
> // a miter on the end of the wide face
> // a bevel on the end of the miter
>
> // Strategy: use a rectangle on each end to cut out (difference) the
> miter and bevel
>
> // compound angle formula to adjust the 15 degree miter
> a_miter = atan( cos(a_side_angle) * tan(a_corner_angle/2) );
>
> // compound angle formula to adjust the 45 degree bevel
> a_bevel = asin( sin(a_side_angle) * sin(a_corner_angle/2) );
>
> echo("a_miter=", a_miter);
> echo("a_bevel=", a_bevel);
>
> // fudge_factor: positions the blocks so the sides meet at the corner
> // otherwise the sides overlap.
> // I'd like to get rid of this.
> *fudge_factor* = 0.041;
>
> difference() {
> difference() {
> // the apron part
> translate([-a_length/2, -a_width/2, 0]) // move origin to
> center of part
> linear_extrude(height=a_thick, center=true, $fn=10)
> polygon(
> points=[
> [0,0],
> [a_width*tan(a_miter), a_width],
> [a_length-a_width*tan(a_miter), a_width],
> [a_length, 0]
> ]);
> // position the block at the right end of the part and
> // subtract it
> translate([a_length/2 - *fudge_factor*,0,0])
> rotate([0,0,a_miter])
> rotate([0,-a_bevel,0])
> cube([1,4,3], true);
> }
> // position the block at the left end of the part and
> // subtract it
> translate([-a_length/2 + *fudge_factor*,0,0])
> rotate([0,0,-a_miter])
> rotate([0,a_bevel,0])
> cube([1,4,3], true);
> }
> }
>
> //apron();
>
> color("yellow")
> translate([11-0.75,0,0])
> rotate([270+15,0,0])
> apron();
>
> color("red")
> translate([0,11-0.75,0])
> rotate([270+15,0,270])
> apron();
> // End
>
> Regards,
> Jake
>
>
>
> --
> Sent from: http://forum.openscad.org/
> _______________________________________________
> OpenSCAD mailing list
> To unsubscribe send an email to
> discuss-leave@.openscad
--
Sent from: http://forum.openscad.org/

J

jjubenv

Mon, Jun 7, 2021 11:49 PM

Your solution is so much simpler, I'm amazed. Thanks so much.

Regards,

Jake

--

Sent from: http://forum.openscad.org/

Your solution is so much simpler, I'm amazed. Thanks so much.
Regards,
Jake
--
Sent from: http://forum.openscad.org/

Replying to:

Empathy v1.0
2021 ©Harmonylists.com