Skip to content

fix: complete 3D models for STEP export, add board STEP/STL/GLB exports - #63

Merged
thePunderWoman merged 2 commits into
mainfrom
fix/3d-models-for-step-export
Sep 29, 2026
Merged

thePunderWoman merged 2 commits into
mainfrom
fix/3d-models-for-step-export

Conversation

@thePunderWoman

Copy link
Copy Markdown
Owner

Summary

The board's STEP export was missing the ESP32 module, USB-C port, the six side buttons, the RGB LED, the accelerometer, the charger IC, and the DNP thumbstick and XBee sockets. This PR adds working models for all of them, plus a check so it can't silently regress, and adds exports of the assembled board for designing the enclosure.

Why they were missing

  • KiCad 10's stock USB_C_Receptacle_HRO_TYPE-C-31-M-12 and SW_Push_1P1T-MP_NO_Horizontal_Alps_SKRTLAE010 footprints point at model files that KiCad 10 doesn't install. They aren't in upstream kicad-packages3D either.
  • The ESP32 footprint pointed at an old ${KICAD8_3RD_PARTY} path.
  • The custom footprints (SK6812MINI-E-012, QMA6100P, GuliKit_HallStick, BQ25185DLHR, XBee) had no model at all. The BQ25185 had a model in the repo that nothing referenced.

Changes

  • PCB/libraries/3dmodels/: models downloaded from EasyEDA/LCSC for the USB-C (C165948), SKRTLAE010 (C110293), QMA6100P (C2887190) and ALPS RKJXV1224005 (C146170, standing in for the GuliKit stick), plus a generated XBee 3 TH outline model. The README records where each came from and how it was aligned.
  • scripts/set_3d_models.py: sets the model paths, offsets and rotations in the board and the project footprint libraries. --check fails on any missing or unresolvable model: 13 problems before this PR, 0 after.
  • scripts/build_placeholder_3d_models.py: builds the XBee 3 TH model from Digi's mechanical drawing (HRM 90001543).
  • Board changes are limited to (model ...) blocks. Pads, copper and footprint positions are untouched.
  • Exports in PCB/: snips_controller.step (for modelling), plus snips_controller_color.step and snips_controller.glb (blue solder mask, silkscreen and copper, for viewing), and snips_controller.stl.

How it was checked

  • Each model's offset and rotation came from matching its pins, pegs and legs to the footprint's pads. Each part was then exported on its own with kicad-cli and its bounding box compared with its pads in board coordinates. All 13 designators are present in the full export.
  • Checked visually with kicad-cli pcb render, top and bottom views.

Caveats / follow-ups

  • SK6812MINI-E cutout (possible board bug, needs a look): this is a reverse-mount LED whose body sits 0.84 mm below its pads. KiCad's stock footprint includes a board cutout for it, but SK6812MINI-E-012 has none, so in 3D the LED goes into the board. Not confirmed against the manufacturer's datasheet: the PDF in PCB/datasheets/ is actually for the 5050 SK6812. Worth confirming before the rev2 layout is final.
  • The thumbstick model is the ALPS equivalent, so the real GuliKit body may differ. The XBee model is only an outline.
  • The USB-C and SKRTLAE010 fixes live only on the board, because those footprints come from KiCad's library. Updating them from the library in KiCad would undo the fix; rerun scripts/set_3d_models.py if that happens.
  • The stackup's named solder mask colour "Blue" gets no colour in KiCad's STEP export. The coloured exports were made from a copy using #0B2F8CD4; the board file itself was not changed.
  • EasyEDA models aren't clearly licensed for redistribution. Worth considering for a public repo.

🤖 Generated with Claude Code

thePunderWoman and others added 2 commits September 28, 2026 18:52
…plete

The board's STEP export was missing the MCU, USB-C, side buttons, RGB LED,
accelerometer, charger, thumbstick and XBee. KiCad 10's stock HRO TYPE-C-31-M-12
and Alps SKRTLAE010 footprints reference models KiCad 10 doesn't ship, the ESP32
pointed at an old ${KICAD8_3RD_PARTY} path, and the custom footprints had none.

- Add PCB/libraries/3dmodels/ with EasyEDA models (USB-C, SKRTLAE010, QMA6100P,
  ALPS RKJXV1224005 as a stand-in for the GuliKit stick) and a generated XBee 3 TH
  envelope model built from Digi's mechanical drawing; README records sources.
- scripts/set_3d_models.py writes the model paths/offsets/rotations into the board
  and the project footprint libraries; --check fails on any missing/unresolvable
  model. Offsets were derived by matching model pins/pegs to footprint pads and
  verified by per-part kicad-cli STEP exports.
- scripts/build_placeholder_3d_models.py regenerates the XBee placeholder.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
For enclosure (shell) design. snips_controller.step is the plain STEP for
modelling; snips_controller_color.step and snips_controller.glb add solder mask
(blue), silkscreen and copper for viewing. STL is geometry only.

The colored exports were made from a copy with the stackup solder mask color set
to "#0B2F8CD4": KiCad's STEP exporter gives the mask no color when the stackup
uses the named color "Blue".

Also includes the project-file STEP export path and designator list that KiCad
updated during the export.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@thePunderWoman
thePunderWoman merged commit 00fe05e into main Sep 29, 2026
2 checks passed
@thePunderWoman
thePunderWoman deleted the fix/3d-models-for-step-export branch September 29, 2026 02:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant