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_board property on the returned Schematic: 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_pcb triple
  • 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

SectionMethods
Module Blocksget_blocks, update_block, update_pin, delete_pin
Cross-Board Netsget_cross_board_nets, get_container_info, sync_to_pcb
Refreshrefresh_from_sub_projects
Rulesget_rules, set_rules
Net Classesget_netclass_report, set_netclass, delete_netclass
Librariesget_library_report, add_library, delete_library, share_library