| # | Component | 3D Model | Laser Cut | Z-Position | Purpose |
|---|---|---|---|---|---|
| 1 | HEAD BASE | ✅ Line 799 | ✅ Line 948 | Z=0 (head) | Pogo pin holes (both top & bottom) |
| 2 | HEAD TOP | ✅ Line 809 | ✅ Line 944 | Z=10.75mm (head) | Structural top + pogo clearance |
| 3 | BOTTOM CARRIER | ✅ Line 858 | ✅ Line 933 | Z=19mm (base) | PCB support (1mm inset cutout) |
| 4 | TOP CARRIER | ✅ Line 863 | ✅ Line 938 | Z=22mm (base) | PCB clamp (exact fit cutout) |
| Component | Quantity | 3D Line | Laser Line | Description |
|---|---|---|---|---|
| head_base | 1 | 799 | 948 | BOARD 1 - Pogo pin plate |
| head_top | 1 | 809 | 944 | BOARD 2 - Top structural plate |
| head_side | 2 | 801, 805 | 979, 981 | Side panels |
| head_front_back | 2 | 813, 817 | 993, 996 | Front/back panels |
| cable_retention | 1 | 819 | 1000 | Cable management clip |
Total Head Parts: 8 (including 2 main boards)
| Component | Quantity | 3D Line | Laser Line | Description |
|---|---|---|---|---|
| base_side | 2 | 829, 833 | 954, 957 | Side panels with pivot |
| base_front_support | 1 | 838 | 972 | Front support beam |
| base_support | 1 | 840 | 975 | Middle support beam |
| base_back_support | 1 | 842 | 977 | Back support with pivot |
| spacer | 2 | 848, 852 | 963, 965 | Pivot spacers |
| bottom_carrier | 1 | 858 | 933 | BOARD 3 - PCB support (inset) |
| top_carrier | 1 | 863 | 938 | BOARD 4 - PCB clamp (exact) |
Total Base Parts: 10 (including 2 carrier boards)
| Component | Quantity | 3D Line | Laser Line | Description |
|---|---|---|---|---|
| latch | 2 | 872, 876 | 1009, 1012 | Locking mechanisms |
| latch_support | 1 | 878 | 986 | Latch support bar |
Total Latch Parts: 3
| Category | Unique Parts | Boards | Other |
|---|---|---|---|
| Head Assembly | 8 | 2 | 6 |
| Base Assembly | 10 | 2 | 8 |
| Latch Assembly | 3 | 0 | 3 |
| TOTAL | 21 | 4 | 17 |
Status: COMPLETE - All 21 parts properly positioned
Assembly structure:
3d_model()
├── 3d_head() → 8 parts (HEAD BASE + HEAD TOP + 6 structural)
├── 3d_base() → 10 parts (BOTTOM CARRIER + TOP CARRIER + 8 structural)
└── 3d_latch() → 3 parts (latches + support)
Status: COMPLETE - All 21 parts laid out with spacing
Export order (left to right):
- Bottom carrier (with 1mm inset) - BOARD 3
- Top carrier (exact fit) - BOARD 4
- Head top - BOARD 2
- Head base - BOARD 1
- Base sides (x2)
- Spacers (x2)
- Base supports (x3)
- Head sides (x2)
- Latch support
- Head front/back (x2)
- Cable retention
- Latches (x2)
- Location: Bottom of head assembly (Z=0 relative to head)
- Function: Contains ALL pogo pin holes
- Holes for
test_points_toparray (top copper layer pads) - Holes for
test_points_bottomarray (bottom copper layer pads)
- Holes for
- Material thickness:
mat_th(default 3mm) - Module:
head_base()→ callshead_base_common() - Code: Lines 520-535 (pogo hole drilling loops)
- Location: Top of head assembly (Z=10.75mm relative to head)
- Function:
- Structural strength for head assembly
- Clearance holes for screws
- Logo cutout (if enabled)
- Material thickness:
mat_th(default 3mm) - Module:
head_top() - Code: Lines 439-471
- Location: Base assembly (Z=19mm absolute)
- Function: Supports PCB from below with edge support
- PCB cutout: Smaller by
bottom_carrier_inset(default 1mm per side) - Result: Creates 1mm support ledge all around PCB
- Material thickness:
mat_th(default 3mm) - Module:
carrier(pcb_outline, pcb_x, pcb_y, bottom_carrier_inset) - Code: Line 858 (3D), Line 933 (laser cut)
- NEW FEATURE: Configurable inset for different board support needs
Critical implementation detail: When creating carriers with inset borders, OpenSCAD's scale() affects ALL coordinates including the board origin position. The centering calculation must compensate for this:
// Calculate scale factors for inset cutout
scale_x = (pcb_x - 2 * border) / pcb_x;
scale_y = (pcb_y - 2 * border) / pcb_y;
// CRITICAL: Offset to re-center the scaled DXF
// This accounts for board_origin being scaled along with the geometry
sx_offset = (board_origin_x + pcb_x / 2) * (1 - scale_x);
sy_offset = (board_origin_y + pcb_y / 2) * (1 - scale_y);
// Apply transformation
translate([sx_offset, sy_offset, 0])
scale([scale_x, scale_y, 1])
import(pcb_outline);Why this matters:
- KiCAD 9 exports DXFs with absolute coordinates (board_origin_x/y can be 100+ mm)
- When OpenSCAD scales the DXF, the board's center point shifts
- Formula calculates how much the center moves and compensates with translation
- Result: Bottom carrier (1mm inset) and top carrier (0mm inset) are perfectly concentric
Verification: Use mode = "check_aligned" to visually verify alignment in OpenSCAD:
- Cyan = bottom carrier (smaller)
- Magenta = top carrier (exact fit)
- Both should be perfectly centered on red/blue head plates
- Location: Base assembly (Z=22mm absolute)
- Function: Clamps PCB from above, prevents movement
- PCB cutout: Exact fit (border = 0)
- Result: Tight fit around PCB perimeter
- Material thickness:
mat_th(default 3mm) - Module:
carrier(pcb_outline, pcb_x, pcb_y, 0) - Code: Line 863 (3D), Line 938 (laser cut)
When rendered with mode = "3dmodel":
HEAD ASSEMBLY (rotated -8° when closed)
═══════════════════════════════════════
Z=36mm ●●●●●●●●● PIVOT HINGE ●●●●●●●●●
┌───────────────────────────────────┐
Z=25mm │ HEAD TOP (Board 2) │
│ (clearance holes) │
│ │
│ ↓ ↓ ↓ Pogo Pins ↓ ↓ │
│ │
Z=22mm └───────────────────────────────────┘
┌───────────────────────────────────┐
│ HEAD BASE (Board 1) │
│ ● ● ● (pogo pin holes) ● ● ● │
└───────────────────────────────────┘
─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ Contact
BASE ASSEMBLY (fixed)
═══════════════════════════════════════
Z=25mm ┌───────────────────────────────────┐
│ TOP CARRIER (Board 4) │
│ [PCB cutout - exact fit] │
└───────────────────────────────────┘
Z=22mm ┌ ─ ─ ─ ─ ─ ─PCB─ ─ ─ ─ ─ ─ ─ ─ ─ ┐
┌─────────────────────────────┐
Z=19mm ║ │ BOTTOM CARRIER (Board 3) │ ║
║ │ [PCB cutout - 1mm inset] │ ║
║ └─────────────────────────────┘ ║
║ ← 1mm support ledge → ║
└───────────────────────────────────┘
Z=0mm ═══════════════════════════════════
All 4 boards ARE present and properly configured:
- ✅ HEAD BASE (Board 1) - Pogo pin holes
- ✅ HEAD TOP (Board 2) - Structural + clearance
- ✅ BOTTOM CARRIER (Board 3) - PCB support with 1mm inset ← NEW
- ✅ TOP CARRIER (Board 4) - PCB clamp with exact fit
Plus 17 additional structural components for complete fixture assembly.
3D export: Use mode = "3dmodel" to generate PNG preview
Laser cut export: Use mode = "lasercut" to generate DXF with all 21 parts laid out
Recent improvement: Bottom carrier now has configurable bottom_carrier_inset = 1.0mm for better PCB edge support (2mm smaller cutout total, centered).