From 9d734d80d52e06c784c8cafee935d1f99707d2bd Mon Sep 17 00:00:00 2001
From: XANTRONIX Development
Date: Mon, 13 Nov 2023 15:14:25 -0500
Subject: Refactoring for reasons

---
 case/case.scad | 68 ++++++++++++++++++++++++++++++++++++----------------------
 1 file changed, 42 insertions(+), 26 deletions(-)

diff --git a/case/case.scad b/case/case.scad
index a93d796..688d601 100644
--- a/case/case.scad
+++ b/case/case.scad
@@ -1,14 +1,39 @@
 $fn = 72;
 
-pcb_width     = 257.175;
-pcb_length    =  95.250;
-pcb_thickness =   1.6;
+pcb_width  = 257.175;
+pcb_length =  95.250;
+pcb_height =   1.600;
+
+pcb_screw_holes = [
+    [  4.7625, 85.7250],
+    [ 66.6750, 85.7250],
+    [161.9250, 85.7250],
+    [238.1250, 85.7250],
+    [ 61.9125, 47.6250],
+    [138.1125, 47.6250],
+    [214.3125, 47.6250],
+    [ 19.0500,  9.5250],
+    [123.8250,  9.5250],
+    [238.1250,  9.5250]
+];
+
+switch_leg_length =  3.30;
+switch_height     = 11.10;
+
+module keyboard_base_plate(pcb_dimensions, switch_z_range, screw_holes) {
+    pcb_width  = pcb_dimensions[0];
+    pcb_length = pcb_dimensions[1];
+    pcb_height = pcb_dimensions[2];
+
+    switch_z_min = switch_z_range[0];
+    switch_z_max = switch_z_range[1];
 
-module keyboard_base_plate(pcb_width, pcb_length) {
     pcb_clearance_edge   = 1.0;
-    pcb_clearance_bottom = 2.0;
+    pcb_clearance_bottom = -switch_z_min - pcb_height + 0.5;
 
+    pcb_screw_diameter      = 1.5;
     pcb_screw_hole_diameter = 1.5;
+    pcb_screw_height        = 3.0;
 
     thickness     = 1.75;
     corner_radius = 0.2;
@@ -17,25 +42,12 @@ module keyboard_base_plate(pcb_width, pcb_length) {
 
     wall_width  = pcb_width  + 2 * (pcb_clearance_edge + thickness) - 2 * corner_radius;
     wall_length = pcb_length + 2 * (pcb_clearance_edge + thickness) - 2 * corner_radius;
-    wall_height   = 14.0;
+    wall_height = pcb_screw_height + pcb_height + switch_z_max;
 
     bottom_width  = 2 * (pcb_clearance_edge) + pcb_width;
     bottom_length = 2 * (pcb_clearance_edge) + pcb_length;
     bottom_height = thickness;
 
-    screw_holes = [
-        [  4.7625, 85.7250],
-        [ 66.6750, 85.7250],
-        [161.9250, 85.7250],
-        [238.1250, 85.7250],
-        [ 61.9125, 47.6250],
-        [138.1125, 47.6250],
-        [214.3125, 47.6250],
-        [ 19.0500,  9.5250],
-        [123.8250,  9.5250],
-        [238.1250,  9.5250]
-    ];
-
     module round_corner(translation, rotation) {
         color(case_color)
         translate(translation)
@@ -77,12 +89,15 @@ module keyboard_base_plate(pcb_width, pcb_length) {
         }
     }
 
-    module screw_post(translation, h, d1, d2) {
+    module screw_post(translation, h, d) {
+        diameter_outer = 3 * d;
+        diameter_inner =     d;
+
         color(case_color)
         translate(translation)
         difference() {
-            cylinder(h=h, r1=(d1/2.0) * 1.5);
-            cylinder(h=h, r= d2/2.0);
+            cylinder(h=h, r1 = (diameter_outer / 2.0) * 1.5);
+            cylinder(h=h, r  =  diameter_inner / 2.0);
         }
     }
 
@@ -227,13 +242,14 @@ module keyboard_base_plate(pcb_width, pcb_length) {
     /* Screw holes */
     for (screw_hole = screw_holes) {
         screw_post([screw_hole[0], screw_hole[1], 0],
-                   pcb_clearance_bottom * 2,
-                   pcb_screw_hole_diameter * 3,
-                   pcb_screw_hole_diameter);
+                   pcb_screw_height,
+                   pcb_screw_diameter);
     }
 
     /* Ridges (for rigidity!) */
     ridges(thickness * 2, pcb_clearance_bottom / 2);
 }
 
-keyboard_base_plate(pcb_width, pcb_length);
+keyboard_base_plate([pcb_width, pcb_length, pcb_height],
+                    [-switch_leg_length, switch_height],
+                    pcb_screw_holes);
-- 
cgit v1.2.3