diff options
-rw-r--r-- | case/top.scad | 47 |
1 files changed, 44 insertions, 3 deletions
diff --git a/case/top.scad b/case/top.scad index 7299fac..0279fd7 100644 --- a/case/top.scad +++ b/case/top.scad @@ -14,8 +14,8 @@ include <keyboard.scad> * Ridge thickness: 1.25mm * First horizontal ridge: Starts at keyboard X offset * Ridge height: 11.5mm - * Ridge upper aspect: 8mm - * Ridge lower aspect: 5mm + * Ridge upper aspect: 12mm + * Ridge lower aspect: 3.75mm * First vertical ridge Y offset: 8mm */ @@ -78,7 +78,48 @@ module top_case(key_switch_sizes, pcb_screw_holes) { cube([accent_depth, accent_width, wall_height], false); } } - + + module support(dimensions, width) { + length = dimensions[0]; + height = dimensions[1]; + + module right_triangle(base) { + length = sqrt((base ^ 2) / 2.0); + + intersection() { + rotate([0, 0, -45]) + square([length*2, length*2], true); + + square([length*2, length*2]); + } + } + + 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(aspect_length); + + translate([lower_x_offset, 0, 0]) + square([1.5 * hypotenuse, aspect_lower_height]); + + translate([3 * aspect_length, 0, 0]) + mirror([1, 0, 0]) + right_triangle(aspect_length); + } + + linear_extrude(width) shape(); + } + module body() { translate([0, 0, wall_height - wall_width]) fascia(); |