From 208c92965069cadd16a4165e483cc80dc7566e32 Mon Sep 17 00:00:00 2001 From: Julien Calixte Date: Sat, 11 Jul 2026 09:44:43 +0200 Subject: [PATCH] feat(case): relieve the bracket and foam for the FPC U-turn The flex leaves the glass's back plane on the left and must fold ~180 deg to dive into the cavity toward the breakout. A safe bend radius makes that loop ~4 mm deep, too deep for the 1 mm foam gap, so it fouled the rigid bracket. Open the bracket's left frame member and the foam's left border over the FPC span, aligned with the body's existing slot, to give the U-turn room. Re-adds the relief dropped in c4320e2, correctly scoped. --- hardware/case/README.md | 2 +- hardware/case/renders/bracket.png | Bin 20407 -> 20548 bytes hardware/case/typoena-case.scad | 29 ++++++++++++++++++++--------- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/hardware/case/README.md b/hardware/case/README.md index 688d4c9..a42d194 100644 --- a/hardware/case/README.md +++ b/hardware/case/README.md @@ -101,7 +101,7 @@ foam+bracket; the bracket is what stops it dropping _into_ the cavity ![Midline section: glass clamped between the front lip and the rear foam + bracket; the internal FPC clearance is hidden below the left bezel, standoffs on the cavity floor](renders/section.png) -![The screwed bracket — four corner holes, window clears the active area](renders/bracket.png) +![The screwed bracket — four corner holes, window clears the active area, and the left edge is relieved to give the FPC room to U-turn into the cavity](renders/bracket.png) ### Boards (the baseplate is the chassis) diff --git a/hardware/case/renders/bracket.png b/hardware/case/renders/bracket.png index d49b555fb2405de4dee0ca54ec9a7ea8cd23094d..eb0671ea3fbd18cde3e45d24f71b5a048bc58f2d 100644 GIT binary patch literal 20548 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

D0MU!}{LWBG7I^yX@V^@AJUPE5 zfdhg_4pKH#gW<3{Iqj1TpXtQkZavfAnuD{$Jo7ozL~>Tdn;6;%fHk6=!Cex9nbXOf z8ue<8h-$6)!mnybTW3T`7P?HMLtKLo#iEHD)EV8ym%hD|IE|y>J-$zze!uXj0+m*h zH@w#4PQ1&7(G%K%gra-uvq$OO!utN;ASW!ayZqYuz4tC-Hvqqio`%MG;0t&+*YTAu88(rt`V{EMV}h| zudRf15x5~3rQ5{6u!}Ae;xaYH5;>+@d*6=$VKisLhU3lD*kEG23@Brn7xm9g(;X^q zMtyIjJ?^aWIXh$EQ8N8C@_nB3KGbF4z01$7ViuOq$f7mZu-v$Jw~9PZN~Qy1z!$<3kjD z(fyyrPr*y(dS={S2lvC|qR?p5U_PFI780!ls(w9_vhLrPzQMWob2HDpAjm*0kn;S! zl|QR*gK+KsMqZwO7UFviK~s8g>c3y(#=->*>YM=2pB?>w1kEzlgP(bLL|!6)3*gU= z7hzg3#YGGH<8X`4wcs3!ytCjNiO~kJn3H~=w33&U-LV1(B!~NecLPl2d=eO AzW@LL literal 20407 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 diff --git a/hardware/case/typoena-case.scad b/hardware/case/typoena-case.scad index d126049..b2bd6ac 100644 --- a/hardware/case/typoena-case.scad +++ b/hardware/case/typoena-case.scad @@ -25,7 +25,7 @@ // ============================================================================ show = "assembled"; -$fn = 48; +$fn = 20; // ---- body envelope -------------------------------------------------------- W = 176; // width (X) — screen 150.9 + bezel + walls @@ -230,14 +230,19 @@ module case_body() { // =========================================================================== module bracket() { ow = P_w + 18; oh = P_h + 18; - // Solid frame — no FPC notch on purpose. The flex U-turns off the glass's - // left edge and returns INBOARD through the ~1 mm foam gap ABOVE this bracket - // (the bracket starts 1 mm deeper), then drops into the cavity through the - // open aperture to the breakout — it never crosses the bracket plane. The - // only FPC relief lives in the body's left pocket wall (see screen_cuts()). + // FPC U-turn clearance: a gap in the LEFT frame member. The flex leaves the + // glass's back plane and folds ~180° to dive into the cavity toward the + // breakout; a safe bend radius (~1.5-2 mm) makes that loop ~4 mm deep, too + // deep for the 1 mm foam gap, so it fouls this rigid frame unless relieved + // here. Lines up with the body's FPC slot (screen_cuts) and the foam relief. difference() { linear_extrude(bracket_t) - difference() { rrect(ow, oh, 4); rrect(A_ap_w+2, A_ap_h+2, 2); } + difference() { + rrect(ow, oh, 4); + rrect(A_ap_w+2, A_ap_h+2, 2); + translate([-(ow + A_ap_w+2)/4, 0]) + square([(ow - (A_ap_w+2))/2 + 4, fpc_w], center=true); + } for (bx=[-(P_w/2+5), P_w/2+5], by=[-(P_h/2+5), P_h/2+5]) translate([bx, by, -1]) cylinder(h=bracket_t+2, r=1.45); // M2 clear } @@ -283,10 +288,16 @@ module placed_bracket() { -lip_t-G_t-foam_t-bracket_t]) color(C_bracket) bracket(); } -// foam gasket (non-adhesive) — a border frame between glass and bracket +// foam gasket (non-adhesive) — a border frame between glass and bracket, with +// its LEFT border opened over the FPC span so the U-turning flex isn't clamped module foam() { linear_extrude(foam_t) - difference() { rrect(P_w+4, P_h+4, 3); rrect(A_ap_w, A_ap_h, 2); } + difference() { + rrect(P_w+4, P_h+4, 3); + rrect(A_ap_w, A_ap_h, 2); + translate([-((P_w+4) + A_ap_w)/4, 0]) + square([((P_w+4) - A_ap_w)/2 + 4, fpc_w], center=true); + } } module placed_foam() { on_deck() translate([screen_off, screen_cy+screen_off, -lip_t-G_t-foam_t])