فهرست منبع

Add FPC cable routing notch, U-rib, and ceiling slot to lid

Splits the Y+ stop rib around an FPC cable notch (FPC_CX, FPC_NOTCH_W).
Adds a U-shaped reinforcing rib with arms outside the gap and a Y- bar
to restore stiffness. Cuts a matching slot through the ceiling so the
cable can exit through the lid face.
ZiB 4 ماه پیش
والد
کامیت
6c0d9814af
1فایلهای تغییر یافته به همراه42 افزوده شده و 14 حذف شده
  1. 42 14
      cpu_case.scad

+ 42 - 14
cpu_case.scad

@@ -38,6 +38,12 @@ USBC_H          =   3.22;  // port body height from STL
 USBC_CZ         =   4.31;
 USBC_CBL_CLEAR  =   1.5;   // added per side for cable plug + routing clearance
 
+// ---- Y- edge: FPC connector — notch in lid Y+ stop rib ----
+FPC_CX      =  50.0;   // PCB-relative case_x centre
+FPC_NOTCH_W =  20.0;   // notch width for cable routing clearance
+FPC_U_T     =   1.5;   // U-rib arm and bar thickness
+FPC_U_DEPTH =   20.0;   // how far Y- the U arms extend into the lid interior
+
 // ---- +Y wall: 3× user buttons + 1× reset ----
 BTN_CX      = [48.4, 39.075, 29.725, 20.425];   // PCB-relative case_x centres
 BTN_D       =   2.3;   // HOLE_D from hat.scad: PLUNGER_D(2.0) + 2×SLIP_CLEAR(0.15)
@@ -252,24 +258,46 @@ module lid() {
         translate([OUT_L - WALL - FLANGE_W + SLIDE_CLEAR - 2.0, 0, 0])
             cube([2.0, LID_Y_LEN, FLANGE_H]);
 
-        // Y+ stop rib — full-width cross member spanning between rails, stiffens closed end
+        // Y+ stop rib — split around FPC cable notch at PCB_OX+FPC_CX
         translate([WALL + FLANGE_W - SLIDE_CLEAR + 2.0, LID_Y_LEN - 3, FLANGE_H - 3])
-            cube([OUT_L - 2*WALL - 2*FLANGE_W + 2*SLIDE_CLEAR - 4.0, 3, 3]);
+            cube([PCB_OX + FPC_CX - FPC_NOTCH_W/2 - (WALL + FLANGE_W - SLIDE_CLEAR + 2.0), 3, 3]);
+        translate([PCB_OX + FPC_CX + FPC_NOTCH_W/2, LID_Y_LEN - 3, FLANGE_H - 3])
+            cube([OUT_L - WALL - FLANGE_W + SLIDE_CLEAR - 2.0 - (PCB_OX + FPC_CX + FPC_NOTCH_W/2), 3, 3]);
+
+        // U-rib bridging the notch — arms outside gap edges, bar closing Y- end
+        // Left arm
+        translate([PCB_OX + FPC_CX - FPC_NOTCH_W/2 - FPC_U_T, LID_Y_LEN - 3 - FPC_U_DEPTH, FLANGE_H - 3])
+            cube([FPC_U_T, FPC_U_DEPTH, 3]);
+        // Right arm
+        translate([PCB_OX + FPC_CX + FPC_NOTCH_W/2, LID_Y_LEN - 3 - FPC_U_DEPTH, FLANGE_H - 3])
+            cube([FPC_U_T, FPC_U_DEPTH, 3]);
+        // Bottom bar
+        translate([PCB_OX + FPC_CX - FPC_NOTCH_W/2 - FPC_U_T, LID_Y_LEN - 3 - FPC_U_DEPTH, FLANGE_H - 3])
+            cube([FPC_NOTCH_W + 2*FPC_U_T, FPC_U_T, 3]);
     }
 
-    color("#004B49") {
-        // Ceiling plate — matches base footprint (OUT_L × OUT_W) with CORNER_R rounding
-        translate([0, -WALL, FLANGE_H])
-            rounded_box(OUT_L, OUT_W, LID_T, CORNER_R);
-
-        // Y- lip — same rounded_box profile clipped to the Y- wall zone so the
-        // lip corners match the base exterior corners
-        intersection() {
-            translate([0, -WALL, -SLIDE_CLEAR])
-                rounded_box(OUT_L, OUT_W, FLANGE_H + SLIDE_CLEAR, CORNER_R);
-            translate([-0.1, -WALL - 0.1, -SLIDE_CLEAR - 0.1])
-                cube([OUT_L + 0.2, WALL + 0.2, FLANGE_H + SLIDE_CLEAR + 0.2]);
+    color("#004B49")
+    difference() {
+        union() {
+            // Ceiling plate — matches base footprint (OUT_L × OUT_W) with CORNER_R rounding
+            translate([0, -WALL, FLANGE_H])
+                rounded_box(OUT_L, OUT_W, LID_T, CORNER_R);
+
+            // Y- lip — same rounded_box profile clipped to the Y- wall zone so the
+            // lip corners match the base exterior corners
+            intersection() {
+                translate([0, -WALL, -SLIDE_CLEAR])
+                    rounded_box(OUT_L, OUT_W, FLANGE_H + SLIDE_CLEAR, CORNER_R);
+                translate([-0.1, -WALL - 0.1, -SLIDE_CLEAR - 0.1])
+                    cube([OUT_L + 0.2, WALL + 0.2, FLANGE_H + SLIDE_CLEAR + 0.2]);
+            }
         }
+
+        // FPC cable slot — from Y+ face of U-rib bottom bar, 3 mm toward Y+
+        translate([PCB_OX + FPC_CX - FPC_NOTCH_W/2,
+                   LID_Y_LEN - 3 - FPC_U_DEPTH + FPC_U_T,
+                   FLANGE_H - 0.1])
+            cube([FPC_NOTCH_W, 3, LID_T + 0.2]);
     }
 }