Board API
The Board API provides operations for working with PCB documents. Get a Board object from the KiCad instance:
from kipy import KiCad
kicad = KiCad()
board = kicad.get_board()
Operations Modules
The Board object provides access to several operation modules:
| Property | Module | Description |
|---|---|---|
board.crud | CRUDOperations | Create, read, update, delete items |
board.footprints | FootprintOperations | Footprint placement and manipulation |
board.routing | RoutingOperations | Track and via creation |
board.zones | ZoneOperations | Copper zones and rule areas |
board.layers | LayerOperations | Stackup and layer management |
board.nets | NetOperations | Net queries and net classes |
board.drc | DRCOperations | Design rule checking |
board.design_rules | DesignRulesOperations | Board design constraints |
board.selection | SelectionOperations | Editor selection |
board.page | PageOperations | Page settings and origin |
board.graphics | GraphicsOperations | Shapes, text, dimensions |
board.grid | GridOperations | Grid settings |
board.view | ViewOperations | Appearance and active layer |
board.export | ExportOperations | Gerber, drill, reports |
board.document | DocumentOperations | Save, open, close |
board.sync | SyncOperations | Update PCB from schematic |
board.library | FootprintLibraryOperations | Footprint library search |
board.connectivity | ConnectivityOperations | Ratsnest queries |
board.groups | GroupOperations | Group management |
Quick Example
from kipy import KiCad
from kipy.geometry import Vector2
from kipy.board import BoardLayer
kicad = KiCad()
board = kicad.get_board()
# Place a footprint
pos = Vector2.from_xy_mm(100, 100)
fp = board.footprints.place("Package_SO:SOIC-8", pos)
# Route a track
start = Vector2.from_xy_mm(100, 100)
end = Vector2.from_xy_mm(120, 100)
board.routing.route([start, end], width=250000, layer=BoardLayer.BL_F_Cu)
# Run DRC
errors, warnings, exclusions = board.drc.run()
print(f"DRC: {len(errors)} errors, {len(warnings)} warnings")
# Export Gerbers
board.export.gerbers("/path/to/output/")
# Save
board.document.save()
Document Operations
# Save the board
board.document.save()
# Get document info
print(board.document.path)
Board Layers
Layers are specified using the BoardLayer enum:
from kipy.board import BoardLayer
# Copper layers
BoardLayer.BL_F_Cu # Front copper
BoardLayer.BL_B_Cu # Back copper
BoardLayer.BL_In1_Cu # Inner layer 1
# Technical layers
BoardLayer.BL_F_SilkS # Front silkscreen
BoardLayer.BL_B_SilkS # Back silkscreen
BoardLayer.BL_F_Mask # Front solder mask
BoardLayer.BL_B_Mask # Back solder mask
# User layers
BoardLayer.BL_User_1 # User layer 1
Coordinate System
PCB coordinates use internal units (nanometers). Use Vector2 for convenience:
from kipy.geometry import Vector2
# Create from millimeters
pos = Vector2.from_xy_mm(100, 50)
# Access values
print(pos.x_mm, pos.y_mm) # Millimeters
Working with Items
# Get all items
items = board.crud.get_items()
# Get specific item by ID
item = board.crud.get_item(item_id)
# Delete items
board.crud.delete_items([item_id1, item_id2])
Next Steps
- Footprints - Placing footprints
- Routing - Creating tracks and vias
- Zones - Copper pours and rule areas
- DRC - Design rule checking
- Export - Generating outputs