|
|
@@ -91,7 +91,7 @@ module fpc_adapter(fpc_yp=FPC_YP, fpc_yn=FPC_YN) {
|
|
|
|
|
|
// ── Visual geometry (preview only) ──────────────────────────────────
|
|
|
if ($preview) {
|
|
|
- color("darkgray", 0.85)
|
|
|
+ color("darkgray", 0.85) {
|
|
|
difference() {
|
|
|
_pcb_shape(PCB_T);
|
|
|
for (xi = [HOLE_MX, PCB_W - HOLE_MX])
|
|
|
@@ -100,30 +100,29 @@ module fpc_adapter(fpc_yp=FPC_YP, fpc_yn=FPC_YN) {
|
|
|
cylinder(d=HOLE_D, h=PCB_T + 0.2, $fn=24);
|
|
|
}
|
|
|
|
|
|
- // Connector A (Y+ edge, FPC exits +Y)
|
|
|
- color("#d0d0d0")
|
|
|
+ // Connector A (Y+ edge, FPC exits +Y)
|
|
|
translate([CON_CX - CON_W/2, CON_A_Y1, PCB_T])
|
|
|
cube([CON_W, CON_D, CON_H]);
|
|
|
- if (fpc_yp > 0)
|
|
|
- color("#e8e8e8")
|
|
|
+ if (fpc_yp > 0)
|
|
|
translate([CON_CX - FPC_W/2, PCB_H, PCB_T + (CON_H - FPC_T)/2])
|
|
|
cube([FPC_W, fpc_yp, FPC_T]);
|
|
|
|
|
|
- // Connector B (Y- edge, FPC exits -Y)
|
|
|
- color("#d0d0d0")
|
|
|
+ // Connector B (Y- edge, FPC exits -Y)
|
|
|
translate([CON_CX - CON_W/2, CON_B_Y0, PCB_T])
|
|
|
cube([CON_W, CON_D, CON_H]);
|
|
|
- if (fpc_yn > 0)
|
|
|
- color("#e8e8e8")
|
|
|
+ if (fpc_yn > 0)
|
|
|
translate([CON_CX - FPC_W/2, -fpc_yn, PCB_T + (CON_H - FPC_T)/2])
|
|
|
cube([FPC_W, fpc_yn, FPC_T]);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// ── Mounting bosses (always — structural geometry for host part) ─────
|
|
|
- _adapt_boss(HOLE_MX, HOLE_MY, stud=true);
|
|
|
- _adapt_boss(PCB_W - HOLE_MX, PCB_H - HOLE_MY, stud=true);
|
|
|
- _adapt_boss(HOLE_MX, PCB_H - HOLE_MY, stud=false);
|
|
|
- _adapt_boss(PCB_W - HOLE_MX, HOLE_MY, stud=false);
|
|
|
+ color("#004B49") {
|
|
|
+ _adapt_boss(HOLE_MX, HOLE_MY, stud=true);
|
|
|
+ _adapt_boss(PCB_W - HOLE_MX, PCB_H - HOLE_MY, stud=true);
|
|
|
+ _adapt_boss(HOLE_MX, PCB_H - HOLE_MY, stud=false);
|
|
|
+ _adapt_boss(PCB_W - HOLE_MX, HOLE_MY, stud=false);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// Standalone render
|