A footprint instance in a .kicad_pcb can carry its own (model …) block, and KiCad's Footprint Properties → 3D Models dialog edits exactly that. Konnect has no equivalent: a wrong or missing 3D model on a placed footprint cannot be corrected through any tool, on a closed board or over IPC.
Version: v0.7.0 · KiCad 10.0.5 · macOS
What I checked
With eager_toolsets: true so all tools are advertised, dumped tools/list (209 tools) and searched every input schema:
- 65 tools take a
board argument. None has a model-shaped property (model/3d/step/wrl).
edit_component's schema is exactly {board, reference, value}.
- Only three tools mention 3D models at all:
set_footprint_models — takes footprint_path, a .kicad_mod library file, not a board
export_3d — export only
set_footprint_metadata — description/tags/attributes, no models
So the library side is well covered and the board side has no route at all.
Why it comes up
The board instance and the library can legitimately disagree, and in practice they do: a model gets assigned by hand in the dialog, the library footprint has none, and the board is then the only place the wrong path exists. Renders are wrong while fab output is fine, so it survives review. Fixing it means the GUI dialog, once per board, for every affected instance.
Relationship to #231
#231 is not a duplicate of this, but it overlaps and may be the better fix — please close this if you disagree.
#231 proposes update_footprints_from_library, whose scope includes refreshing library-owned 3D models onto placed footprints. That would resolve the common case via the library: correct the library footprint, refresh, done. It does not provide a way to set a model on one placed instance deliberately, which is what the KiCad dialog does.
If #231's refresh is considered the sanctioned path, then the gap worth recording here is narrower and still real: today, with #231 unimplemented, there is no route at all — not through the library either, because nothing propagates a corrected library model onto already-placed footprints.
Suggested shape
Either a model field on a placed-footprint editor (edit_component gaining models, matching set_footprint_models's mode + models shape), or an explicit set_placed_footprint_models(board, reference, mode, models). Closed-board would be the more useful of the two, since this is a file-level property that needs no live KiCad.
A footprint instance in a
.kicad_pcbcan carry its own(model …)block, and KiCad's Footprint Properties → 3D Models dialog edits exactly that. Konnect has no equivalent: a wrong or missing 3D model on a placed footprint cannot be corrected through any tool, on a closed board or over IPC.Version: v0.7.0 · KiCad 10.0.5 · macOS
What I checked
With
eager_toolsets: trueso all tools are advertised, dumpedtools/list(209 tools) and searched every input schema:boardargument. None has a model-shaped property (model/3d/step/wrl).edit_component's schema is exactly{board, reference, value}.set_footprint_models— takesfootprint_path, a.kicad_modlibrary file, not a boardexport_3d— export onlyset_footprint_metadata— description/tags/attributes, no modelsSo the library side is well covered and the board side has no route at all.
Why it comes up
The board instance and the library can legitimately disagree, and in practice they do: a model gets assigned by hand in the dialog, the library footprint has none, and the board is then the only place the wrong path exists. Renders are wrong while fab output is fine, so it survives review. Fixing it means the GUI dialog, once per board, for every affected instance.
Relationship to #231
#231 is not a duplicate of this, but it overlaps and may be the better fix — please close this if you disagree.
#231 proposes
update_footprints_from_library, whose scope includes refreshing library-owned 3D models onto placed footprints. That would resolve the common case via the library: correct the library footprint, refresh, done. It does not provide a way to set a model on one placed instance deliberately, which is what the KiCad dialog does.If #231's refresh is considered the sanctioned path, then the gap worth recording here is narrower and still real: today, with #231 unimplemented, there is no route at all — not through the library either, because nothing propagates a corrected library model onto already-placed footprints.
Suggested shape
Either a model field on a placed-footprint editor (
edit_componentgainingmodels, matchingset_footprint_models'smode+modelsshape), or an explicitset_placed_footprint_models(board, reference, mode, models). Closed-board would be the more useful of the two, since this is a file-level property that needs no live KiCad.