소스 검색

Cored out cap

ZiB 4 달 전
부모
커밋
0247bbffad
1개의 변경된 파일과 20개의 추가작업 그리고 19개의 파일을 삭제
  1. 20 19
      cable_cap.scad

+ 20 - 19
cable_cap.scad

@@ -1,5 +1,6 @@
 // Waveshare 2.13" e-Paper HAT (B) — ESP32 Nametag Case
 // Waveshare 2.13" e-Paper HAT (B) — ESP32 Nametag Case
 // Display slides in from X+; FPC cable exits freely out the open X+ side
 // Display slides in from X+; FPC cable exits freely out the open X+ side
+$fn = $preview ? 32 : 64;
 
 
 // --- Display Dimensions (landscape: portrait rotated 90°) ---
 // --- Display Dimensions (landscape: portrait rotated 90°) ---
 DISP_W = 59.20;   // overall width  (X) — portrait height
 DISP_W = 59.20;   // overall width  (X) — portrait height
@@ -41,11 +42,11 @@ SCREEN_EXPLODE    = 0;     // mm to pull display toward X+ in preview
 
 
 // --- Slip-Fit Cap (X+ end) ---
 // --- Slip-Fit Cap (X+ end) ---
 SHOW_CAP    = true;   // show cap in preview
 SHOW_CAP    = true;   // show cap in preview
-CAP_ENGAGE  = 8.0;   // sleeve engagement length over case exterior (X)
+CAP_PAD     = 4.0;   // Min cap bore depth
+CAP_ENGAGE  = CAP_PAD + 6.0;   // sleeve engagement length over case exterior (X)
 CAP_WALL    = 1.5;   // sleeve and end-wall thickness
 CAP_WALL    = 1.5;   // sleeve and end-wall thickness
 CAP_TOL     = 0.2;   // per-side slip clearance between bore and case exterior
 CAP_TOL     = 0.2;   // per-side slip clearance between bore and case exterior
-CAP_TIP     = 0.8;   // minimum wall thickness at X- (open) edge after taper
-CAP_EXPLODE = 5;     // preview: mm to pull cap away from case in X+ (0 = seated)
+CAP_EXPLODE = CAP_PAD + 0;     // preview: mm to pull cap away from case in X+ (0 = seated)
 
 
 // --- Magnetic Strip Locating Lip (rear face) ---
 // --- Magnetic Strip Locating Lip (rear face) ---
 MAG_L        = 1.772 * 25.4;   // strip length ≈ 45.01 mm
 MAG_L        = 1.772 * 25.4;   // strip length ≈ 45.01 mm
@@ -130,6 +131,10 @@ module epd_case() {
         // Magnetic strip recess in back face
         // Magnetic strip recess in back face
         translate([_lip_x, _lip_y, -0.01])
         translate([_lip_x, _lip_y, -0.01])
             cube([_lip_il, _lip_iw, MAG_LIP_H + 0.01]);
             cube([_lip_il, _lip_iw, MAG_LIP_H + 0.01]);
+
+        // Cap wall recess — step in z- face at X+ end so cap sits flush
+        translate([case_w - CAP_ENGAGE + CAP_PAD, -0.01, -0.01])
+            cube([CAP_ENGAGE + 0.02 - CAP_PAD, case_d + 0.02, CAP_WALL + 0.01]);
     }
     }
 }
 }
 
 
@@ -137,30 +142,26 @@ module epd_case() {
 // Slip-fit cap — slides over X+ end of case; FPC exits through end-wall slot
 // Slip-fit cap — slides over X+ end of case; FPC exits through end-wall slot
 // -------------------------------------------------------------------
 // -------------------------------------------------------------------
 module cable_cap() {
 module cable_cap() {
-    // Translate so case exterior Y=0, Z=0 aligns with bore inside walls
-    translate([case_w - CAP_ENGAGE + CAP_EXPLODE, -CAP_TOL - CAP_WALL, -CAP_TOL - CAP_WALL])
+    _bore_r = (_cap_bore_h-CAP_WALL) / 2;
+
+    translate([case_w - CAP_ENGAGE + CAP_EXPLODE, -CAP_TOL - CAP_WALL, -CAP_TOL]){
     difference() {
     difference() {
         // Outer shell: hull between two square profiles
         // Outer shell: hull between two square profiles
-        //   z- wall is untapered (full CAP_WALL throughout); y±, z+ taper to CAP_TIP at open end
         hull() {
         hull() {
-            translate([0, CAP_WALL - CAP_TIP, 0])
-                cube([0.01, _cap_bore_w + 2 * CAP_TIP, _cap_bore_h + CAP_WALL + CAP_TIP]);
+            translate([0, CAP_WALL - CAP_WALL, 0])
+                cube([0.01, _cap_bore_w + 2 * CAP_WALL, _cap_bore_h + CAP_WALL]);
 
 
             translate([CAP_ENGAGE + CAP_WALL - 0.01, 0, 0])
             translate([CAP_ENGAGE + CAP_WALL - 0.01, 0, 0])
-                cube([0.01, _cap_bore_w + 2 * CAP_WALL, _cap_bore_h + 2 * CAP_WALL]);
+                cube([0.01, _cap_bore_w + 2 * CAP_WALL, _cap_bore_h + CAP_WALL]);
         }
         }
 
 
-        // Bore — open on X- side; closes at end wall (local x = CAP_ENGAGE)
+        // Rounded bore
         translate([-0.01, CAP_WALL, CAP_WALL])
         translate([-0.01, CAP_WALL, CAP_WALL])
-            cube([CAP_ENGAGE + 0.02, _cap_bore_w, _cap_bore_h]);
-
-        // FPC cable exit slot through end wall
-        // Y: centered on case; Z: from FPC pocket floor to display cavity ceiling
-        translate([CAP_ENGAGE - 0.01,
-                   CAP_WALL + CAP_TOL + case_d / 2 - _cap_slot_w / 2,
-                   CAP_WALL + CAP_TOL + WALL - FPC_FLOOR_DROP])
-            cube([CAP_WALL + 0.02, _cap_slot_w, _cap_slot_h]);
-    }
+            cube([CAP_ENGAGE-CAP_WALL+0.01, _cap_bore_w, _bore_r*2]);
+        translate([CAP_ENGAGE - _bore_r, _cap_bore_w, _cap_bore_h - _bore_r])
+            rotate([90,0,0])
+                cylinder(h=_cap_bore_w - CAP_WALL, r=_bore_r);
+    }}
 }
 }
 
 
 color("#004B49")
 color("#004B49")