Repository navigation
Closed
Labels
hardwarePCB, KiCad, and hardware designPCB, KiCad, and hardware designpriority: mediumWanted and scoped; not blocking todayWanted and scoped; not blocking today
Description
Goal
A parametric FreeCAD tool that produces the base blank for any console panel (outline, mount points on the Dzus grid, and clearance holes at those points), so each panel's CAD starts from the blank instead of re-deriving the grid by hand.
What shipped
The plan was a single macro. It shipped instead as a FreeCAD 1.1+ workbench addon in its own repo, so it installs through the Addon Manager and has room for more tools.
- Repo: OpenSkyHawk/CockpitPanels ("Cockpit Panels" workbench), LGPL-2.1-or-later, version 0.2.0.
- feat: Cockpit Panels workbench: Panel Blank, Plate Stack and Export Layers CockpitPanels#1: workbench with Panel Blank, Plate Stack and Export Layers
- feat: Plate Stack and Export Layers, corner radius, faceplate insets, slot variants CockpitPanels#2: corner radius, faceplate insets, slot variants
- chore: version 0.2.0 CockpitPanels#3, docs: install steps for FreeCAD 1.1's Addon Manager CockpitPanels#4, docs: README visuals from an example panel CockpitPanels#5, docs: README renders show the faceplate's Slot cut CockpitPanels#6: version bump, Addon Manager install steps, README visuals
- Tools:
- Panel Blank: outline, mount points and clearance holes, all driven by a
PanelBlankspreadsheet. Includes the full-rail option and fastener presets. - Plate Stack: FacePlate (1/16″), Diffuser (1/8″) and BackPlate (1/8″) bodies from the blank, front face at z = 0, with a per-layer Recess / Slot / Clearance cut at the mounts.
- Export Layers: one DXF per plate, for LightBurn.
- Panel Blank: outline, mount points and clearance holes, all driven by a
- Output: plain FreeCAD objects only (no FeaturePython), so panel
.FCStdfiles open without the addon installed. - Main-repo docs: docs(cad): panel blanks and plate stacks via the CockpitPanels workbench (#334) #349. Panel base blank section in
docs/hardware/cad-workflow.md, the cutout-library pages updated for the three-layer stack, and a pointer in thecadskill.
Verified
- 117 headless checks (
freecadcmd) in the addon repo. - By hand in the GUI:
- Addon Manager install from
main(custom repository) and Update - corner radius and inset fields in the dialogs
- the Export Layers button (folder picker, one DXF per plate)
- DXF import into LightBurn keeps the per-plate layers
- Addon Manager install from
- A printed 20U test frame was built from a Panel Blank: full rail, 36 × Ø4.7 M5 self-tap holes, with the hole sizes taken from a printed coupon. It's now the test(hardware): soak test panel — panel-mount controls on a printed or laser-cut faceplate, harnessed to two PanelGroups #291 soak rig.
Rules the tool implements
From mechanical-standards.md, computed from exact inch fractions:
| Parameter | Rule |
|---|---|
| Height | N × 9.525 mm, N ≥ 4 (N = 3 leaves one stud per side) |
| Width | 146.05 mm (5¾″) default, overridable |
| Mount columns | half a pitch (4.7625 mm) in from each side edge |
| Outer rows | 1.5 × pitch from each end |
| Extra rows | half-unit positions only, between the outer rows; 1-pitch pairs allowed |
| Fastener default | M5 socket cap: Ø8.5 head, Ø5.6 clearance hole. M6 heads (≥ 10 mm) are wider than the pitch, so they collide on 1-pitch rows and overhang the side edge. |
Reference panels used to validate the rules (measured from DCS screenshots; validation only):
| Panel | N | Rows (units from top) |
|---|---|---|
| APN-153 Doppler | 6 | 1.5, 4.5 |
| ASN-41 Nav Computer | 14 | 1.5, 3.5, 8.5, 10.5, 12.5 |
| ARC-51A UHF | 13 | 1.5, 2.5, 10.5, 11.5 |
Gotchas found along the way
- Sketch points don't export to DXF, which is why the blank also draws hole circles.
- PartDesign Hole / Pocket on the mount sketches needs
Reversedwhen the front face is at z = 0 and layers stack +z. Without it they report "Up-to-date" and cut nothing. - Bind outside objects to the blank's sketches through a SubShapeBinder, never to the per-row
row_eNcells. Those cells are rebuilt when the number of extra rows changes, and references to them break. - Per-head relief rings break through the panel edge (any ring wider than 9.525 mm), leaving scallops and cusps. Use the full-height edge slot instead.
- Don't drive the modal dialogs over freecad-mcp: a modal dialog blocks the GUI thread. Call the tool's function directly.
- Install via Addon Manager or a link into the Macro folder; changing the User Macros Location hides other macros (e.g. KiCad StepUp).
Moved elsewhere / follow-ups
- Physical fit check (cut plates on the printed frame, holes line up without force): carried by test(hardware): soak test panel — panel-mount controls on a printed or laser-cut faceplate, harnessed to two PanelGroups #291, which uses the frame as its rig.
- Record M5 / Ø5.6 as the panel-mount default in
mechanical-standards.md. Follow-up, not done yet: the doc still gives the Dzus stud hole (~6.6) and lists M5 as Ø5.3–5.5. - Place Cutout command (cutout templates): feat(cad): Place Cutout command for the FreeCAD workbench (automate the #335 cutout recipe) #348.
- Faux Dzus cap over the M5 head (≈ 0.5 mm wall): idea only, needs a test print.
Metadata
Metadata
Assignees
Labels
hardwarePCB, KiCad, and hardware designPCB, KiCad, and hardware designpriority: mediumWanted and scoped; not blocking todayWanted and scoped; not blocking today
Activity
[-]feat(cad): parametric FreeCAD generator for the console panel base blank (outline + mounting-hole grid)[/-][+]feat(cad): parametric FreeCAD generator for the console panel base blank (outline + mount points)[/+]docs(cad): drop ticket-tracking notes from the cutout library page
docs(cad): panel blanks and plate stacks via the CockpitPanels workbe…