فهرست منبع

Add snap detent nubs and dimples for cap retention

CAP_DETENT toggle (default true) adds a hemispherical nub on each Y
bore wall of the cap and a matching dimple on the case Y exterior, both
centered at the engagement zone midpoint (X) and case mid-height (Z).
DETENT_R (default 0.5 mm) controls nub/dimple size for tuning across prints.
ZiB 4 ماه پیش
والد
کامیت
244c744dff
1فایلهای تغییر یافته به همراه16 افزوده شده و 1 حذف شده
  1. 16 1
      cable_cap.scad

+ 16 - 1
cable_cap.scad

@@ -42,7 +42,9 @@ 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_RIBS    = false;   // include retention ribs in cap
+CAP_RIBS    = false;  // include retention ribs in cap
+CAP_DETENT  = true;   // include snap detent nubs and dimples
+DETENT_R    = 0.5;    // detent nub/dimple radius (mm); tune across prints
 CAP_PAD     = 4.0;   // Min cap bore depth
 CAP_PAD     = 4.0;   // Min cap bore depth
 CAP_ENGAGE  = CAP_PAD + 6.0;   // sleeve engagement length over case exterior (X)
 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
@@ -77,6 +79,7 @@ fpc_pkt_yw = FPC_W + 2 * FPC_POCKET_PAD;
 _cap_bore_w  = case_d - 2*CAP_WALL;                // bore Y width (fits recessed case)
 _cap_bore_w  = case_d - 2*CAP_WALL;                // bore Y width (fits recessed case)
 _cap_bore_h  = case_h + CAP_TOL;                   // bore Z height (CAP_TOL clearance on each Z face)
 _cap_bore_h  = case_h + CAP_TOL;                   // bore Z height (CAP_TOL clearance on each Z face)
 _cap_gap_w   = (case_w - CAP_ENGAGE + CAP_PAD) - (win_x + ACT_W + _cham_xy); // gap between cap X- face and beveled bezel X+ end
 _cap_gap_w   = (case_w - CAP_ENGAGE + CAP_PAD) - (win_x + ACT_W + _cham_xy); // gap between cap X- face and beveled bezel X+ end
+_detent_x    = (CAP_ENGAGE - CAP_PAD) / 2; // detent offset from cap X- face; same in cap local and case global offset
 // Magnetic strip recess geometry (centered on back face)
 // Magnetic strip recess geometry (centered on back face)
 _lip_il = MAG_L + 2 * MAG_TOL;
 _lip_il = MAG_L + 2 * MAG_TOL;
 _lip_iw = MAG_W + 2 * MAG_TOL;
 _lip_iw = MAG_W + 2 * MAG_TOL;
@@ -135,6 +138,12 @@ module epd_case() {
         translate([case_w - CAP_ENGAGE + CAP_PAD, -0.01, -0.01])
         translate([case_w - CAP_ENGAGE + CAP_PAD, -0.01, -0.01])
             cube([CAP_ENGAGE + 0.02 - CAP_PAD, case_d + 0.02, CAP_WALL + CAP_TOL + 0.01]);
             cube([CAP_ENGAGE + 0.02 - CAP_PAD, case_d + 0.02, CAP_WALL + CAP_TOL + 0.01]);
 
 
+        // Detent dimples on Y± faces — accept cap nubs when fully seated
+        if (CAP_DETENT)
+            for (dy = [CAP_WALL + CAP_TOL, case_d - CAP_WALL - CAP_TOL])
+                translate([case_w - CAP_ENGAGE + CAP_PAD + _detent_x, dy, case_h / 2])
+                    sphere(r=DETENT_R);
+
         // Cap wall recess — step in y- face at X+ end so cap sits flush
         // Cap wall recess — step in y- face at X+ end so cap sits flush
         translate([case_w - CAP_ENGAGE + CAP_PAD, -0.01, -0.01])
         translate([case_w - CAP_ENGAGE + CAP_PAD, -0.01, -0.01])
             cube([CAP_ENGAGE - CAP_PAD + 0.02, CAP_WALL + CAP_TOL + 0.01, case_h + 0.02]);
             cube([CAP_ENGAGE - CAP_PAD + 0.02, CAP_WALL + CAP_TOL + 0.01, case_h + 0.02]);
@@ -205,6 +214,12 @@ module cable_cap() {
             translate([CAP_ENGAGE - CAP_PAD, rib_dy, 0])
             translate([CAP_ENGAGE - CAP_PAD, rib_dy, 0])
                 cube([CAP_WALL, CAP_WALL, _cap_h]);
                 cube([CAP_WALL, CAP_WALL, _cap_h]);
 
 
+    // Detent nubs on Y± bore walls — snap into case dimples when fully seated
+    if (CAP_DETENT)
+        for (ny = [CAP_WALL, case_d - CAP_WALL])
+            translate([_detent_x, ny, case_h / 2])
+                sphere(r=DETENT_R);
+
     // Chamfer tab: extends window bezel chamfer across the gap to the cap X- face
     // Chamfer tab: extends window bezel chamfer across the gap to the cap X- face
     hull() {
     hull() {
         translate([-_cap_gap_w, 0, _cap_bore_h])
         translate([-_cap_gap_w, 0, _cap_bore_h])