47 lines
1.1 KiB
OpenSCAD
47 lines
1.1 KiB
OpenSCAD
|
module support(dimensions, width) {
|
||
|
aspect_ratio = 3.75 / 12.0;
|
||
|
|
||
|
length = dimensions[0];
|
||
|
height = dimensions[1];
|
||
|
|
||
|
module right_triangle(base) {
|
||
|
hypot = sqrt(2*(base^2));
|
||
|
|
||
|
intersection() {
|
||
|
square([base, base]);
|
||
|
|
||
|
translate([-base, 0, 0])
|
||
|
rotate([0, 0, -45])
|
||
|
square([hypot, hypot]);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module shape() {
|
||
|
/* Height ratio of lower aspect to upper aspect */
|
||
|
aspect_upper_height = height;
|
||
|
aspect_lower_height = aspect_ratio * height;
|
||
|
|
||
|
/* The length of each individual support aspect */
|
||
|
aspect_length = 1/3 * length;
|
||
|
|
||
|
hypotenuse = sqrt(2*(aspect_length^2));
|
||
|
lower_x_offset = aspect_length - (hypotenuse - aspect_length);
|
||
|
|
||
|
right_triangle(height);
|
||
|
|
||
|
square([length, aspect_lower_height], false);
|
||
|
|
||
|
translate([3 * aspect_length, 0, 0])
|
||
|
mirror([1, 0, 0])
|
||
|
right_triangle(height);
|
||
|
}
|
||
|
|
||
|
translate([0, length, 0])
|
||
|
rotate([-90, 0, -90])
|
||
|
linear_extrude(width)
|
||
|
intersection() {
|
||
|
shape();
|
||
|
square([length, height], false);
|
||
|
}
|
||
|
}
|