summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--case/support.scad46
-rw-r--r--case/top.scad48
2 files changed, 48 insertions, 46 deletions
diff --git a/case/support.scad b/case/support.scad
new file mode 100644
index 0000000..6aa8a84
--- /dev/null
+++ b/case/support.scad
@@ -0,0 +1,46 @@
+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);
+ }
+}
diff --git a/case/top.scad b/case/top.scad
index ce89eca..3aabfb8 100644
--- a/case/top.scad
+++ b/case/top.scad
@@ -1,7 +1,8 @@
$fn = 72;
-include <keyboard.scad>
include <dimensions.scad>
+include <support.scad>
+include <keyboard.scad>
module top_case() {
keyboard_deck_z_offset = wall_height - keyboard_switch_height;
@@ -74,51 +75,6 @@ module top_case() {
support_height = keyboard_switch_height - wall_width;
aspect_ratio = 3.75 / 12.0;
- module support(dimensions, width) {
- 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);
- }
- }
-
support_x_interval = (keyboard_pcb_width + 2 * wall_width - support_width) / 6;
support_x_offset = keyboard_x_offset - wall_width;