diff --git a/case/top.scad b/case/top.scad index e9a2098..fe741bb 100644 --- a/case/top.scad +++ b/case/top.scad @@ -112,54 +112,54 @@ module top_case(key_switch_sizes, pcb_screw_holes) { } } - module support(dimensions, width) { - length = dimensions[0]; - height = dimensions[1]; + module supports() { + module support(dimensions, width) { + length = dimensions[0]; + height = dimensions[1]; - module right_triangle(base) { - hypot = sqrt(2*(base^2)); + 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_ratio = 3.75 / 12.0; + + 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() { - square([base, base]); - - translate([-base, 0, 0]) - rotate([0, 0, -45]) - square([hypot, hypot]); + shape(); + square([length, height], false); } } - module shape() { - /* Height ratio of lower aspect to upper aspect */ - aspect_ratio = 3.75 / 12.0; - - 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); - } - } - - module supports() { support_x_interval = (keyboard_width + 2 * wall_width - support_width) / 6; support_x_offset = keyboard_x_offset - wall_width;