46 lines
1.1 KiB
OpenSCAD
46 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);
|
|
}
|
|
}
|