Multi-Board
Zeo's multi-board feature represents a system of interconnected PCBs as a single project. The Python API exposes this surface through:
kicad.get_mbs_schematic(): connect to the open multi-board schematic editor- The
.multi_boardproperty on the returnedSchematic: read and mutate container state
Concepts
A multi-board project is a container .kicad_pro that owns:
- One or more sub-projects, each a regular
.kicad_pro+.kicad_sch+.kicad_pcbtriple - A top-level multi-board schematic (
.kicad_mbs) that defines how the boards interconnect via cross-board nets
The container's .kicad_pro carries the shared net classes, library tables, and rule sets that propagate to every sub-project.
Document Type
The MBS file is a schematic on disk but uses a distinct document type so the API server routes commands to the right editor frame:
from kipy.proto.common.types import DocumentType
DocumentType.DOCTYPE_MBS_SCHEMATIC
Connecting
from kipy import KiCad
kicad = KiCad()
# Get the multi-board schematic editor
mbs = kicad.get_mbs_schematic()
# Access MBS-specific operations
blocks = mbs.multi_board.get_blocks()
nets = mbs.multi_board.get_cross_board_nets()
info = mbs.multi_board.get_container_info()
Regular schematic operations (mbs.symbols, mbs.wiring, mbs.labels) continue to work on an MBS document.
Targeting Sub-Projects
When several sub-projects are open in peer editor windows, identify a specific one by its absolute .kicad_pro path:
info = mbs.multi_board.get_container_info()
for sub in info.sub_projects:
sch = kicad.get_schematic_by_project_path(sub.absolute_path)
board = kicad.get_board_by_project_path(sub.absolute_path)
# ... edit each sub-project's schematic and PCB independently
Use the absolute path from get_container_info().sub_projects[].absolute_path (or from check_status). Relative paths are not accepted.
API Surface
| Section | Methods |
|---|---|
| Module Blocks | get_blocks, update_block, update_pin, delete_pin |
| Cross-Board Nets | get_cross_board_nets, get_container_info, sync_to_pcb |
| Refresh | refresh_from_sub_projects |
| Rules | get_rules, set_rules |
| Net Classes | get_netclass_report, set_netclass, delete_netclass |
| Libraries | get_library_report, add_library, delete_library, share_library |