Micro-adjust 3D model to support current PCB
This commit is contained in:
@@ -41,9 +41,9 @@ BAT_L, BAT_W, BAT_H = 50.0, 12.0, 12.0
|
||||
BAT_X, BAT_Y = BRD_X + BRD_L + 8.0 + 5.0, (W - BAT_W) / 2.0
|
||||
BAT_CLIP_Y = 8.0
|
||||
BTN_X, BTN_CY, BTN_HOLE_R = 28.0, W / 2.0, 10.0
|
||||
CAP_SHAFT_R, CAP_SHAFT_H = 9.6, WALL
|
||||
CAP_SHAFT_R, CAP_SHAFT_H = 9.6, WALL + 1.0 # +1mm taller shaft so cap sits flush
|
||||
CAP_RIM_R, CAP_RIM_H = 12.0, 1.5
|
||||
NUBBIN_R, NUBBIN_H = 4.2, 1.0
|
||||
CAP_CAVITY_R, CAP_CAVITY_H = 5.2, 2.5 # Hollow cavity replaces nubbin — clears button dome
|
||||
BTN_DOME_R, BTN_DOME_SAG = 14.0, 0.6
|
||||
|
||||
PCB_BOT_Z = SPLIT_Z + 1.5
|
||||
@@ -128,7 +128,11 @@ for cx, cy, ix, iy in [(BRD_X, BRD_Y, 1, 1), (BRD_X+BRD_L, BRD_Y, -1, 1),
|
||||
POST_R = 1.75
|
||||
POST_TAPER_EXTRA = 0.3 # Extra radius at base
|
||||
POST_TAPER_H = 6.0 # Height over which the taper blends to nominal radius
|
||||
for px, py in [(BTN_X+ox, BTN_CY+oy) for ox in [-POST_OFFS_X, POST_OFFS_X] for oy in [-POST_OFFS_Y, POST_OFFS_Y]]:
|
||||
BACK_POST_SHIFT = POST_R # Shift back posts by half a post diameter
|
||||
for ox in [-POST_OFFS_X, POST_OFFS_X]:
|
||||
for oy in [-POST_OFFS_Y, POST_OFFS_Y]:
|
||||
px = BTN_X + ox + (BACK_POST_SHIFT if ox > 0 else 0)
|
||||
py = BTN_CY + oy
|
||||
post = cyl(POST_R, POST_H, px, py, WALL)
|
||||
# Tapered cone base: wider at bottom, blends to post radius at POST_TAPER_H
|
||||
taper = Part.makeCone(POST_R + POST_TAPER_EXTRA, POST_R, POST_TAPER_H,
|
||||
@@ -175,7 +179,9 @@ top_shell = top_shell.cut(box(rec_w, rec_d, RIDGE_H+TOL, L/2-rec_w/2, W-GROOVE_T
|
||||
# Button & Cap
|
||||
top_shell = top_shell.cut(cyl(BTN_HOLE_R, H, BTN_X, BTN_CY, SPLIT_Z))
|
||||
top_shell = top_shell.cut(Part.makeSphere(BTN_DOME_R, Base.Vector(BTN_X, BTN_CY, H - WALL - BTN_DOME_R + BTN_DOME_SAG)))
|
||||
cap = cyl(CAP_SHAFT_R, CAP_SHAFT_H).fuse(cyl(CAP_RIM_R, CAP_RIM_H, 0, 0, -CAP_RIM_H)).fuse(cyl(NUBBIN_R, NUBBIN_H, 0, 0, -CAP_RIM_H - NUBBIN_H))
|
||||
cap = cyl(CAP_SHAFT_R, CAP_SHAFT_H).fuse(cyl(CAP_RIM_R, CAP_RIM_H, 0, 0, -CAP_RIM_H))
|
||||
# Hollow cavity in bottom of shaft — button dome nests inside instead of a protruding nubbin
|
||||
cap = cap.cut(cyl(CAP_CAVITY_R, CAP_CAVITY_H, 0, 0, -CAP_RIM_H))
|
||||
cap_placed = cap.copy(); cap_placed.translate(Base.Vector(BTN_X, BTN_CY, H - CAP_SHAFT_H))
|
||||
|
||||
# ─── REGISTER ────────────────────────────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user