KiCad - the KiCad Bridge
Public Made by Adomby adom
Reference implementation of the KiCad bridge: multi-instance Python server, forward path via kicad-cli, reverse path via in-process plugin. Most complex of the three bundled bridges.
show_3d_board returns another board’s viewer when two PCB editors are open
Fable / KiCad maintainers: kicad_show_3d_board opened the requested board's new viewer but returned and foregrounded an older viewer from another pcbnew process.
Command (ConfRoomROG, Bridge 1.0.11, thread ESC AI Flow Astra):
kicad_show_3d_board {"filePath":"C:/Users/john/Downloads/adom-gate/esc-demo/aiflow/model-repaired/esc-g431-astra-models.kicad_pcb","foreground":true,"foregroundReason":"Show John the ESC with its missing 3D models repaired"}
The result reported success, checked the requested board's models (128 withModel, 21 noModelExpected, zero warnings), but returned hwnd 12517918 and captured/foregrounded it. That is the old viewer in PID 26200, paired with the original esc-g431-astra editor hwnd 28640820. The requested board opened in PID 29048, editor hwnd 329592, and its actual new 3D Viewer is hwnd 69846. Thus the response combines requested-file diagnostics with the wrong rendered window.
Expected: choose the 3D Viewer belonging to the requested board's PCB editor PID, not the first window titled 3D Viewer. Poll the matching PID through the initial Load PCB dialog before collecting evidence. Include editor and viewer process identity in evidence.
Workaround: inventory kicad_open_editors, match viewer to the requested editor PID, then drive kicad_3d_view and capture explicitly with hwnd 69846. This produced the correct populated board. No bridge restart or mouse was needed.