Compare commits

...

2 Commits

Author SHA1 Message Date
Julien Calixte
3faff25fba chore(case): pin $fn in the render recipe for stable previews
Preview quality no longer depends on whatever $fn the model happens to be
left at for fast editing.
2026-07-11 09:45:00 +02:00
Julien Calixte
208c929650 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.
2026-07-11 09:44:43 +02:00
4 changed files with 25 additions and 12 deletions

View File

@@ -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)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -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])

View File

@@ -3,8 +3,10 @@
scad := "case/typoena-case.scad"
# shared OpenSCAD flags (everything but the camera + the part to show)
base := "--imgsize=1100,825 --colorscheme=Tomorrow --viewall --autocenter"
# shared OpenSCAD flags (everything but the camera + the part to show).
# $fn is pinned here so preview quality is stable no matter what the file's
# editing value is set to.
base := "--imgsize=1100,825 --colorscheme=Tomorrow --viewall --autocenter -D '$fn=48'"
# the standard 3/4 camera used by most previews (rotate 62° tilt, 22° azimuth)
std_cam := "--camera=0,0,0,62,0,22,0"