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:

PropertyModuleDescription
board.crudCRUDOperationsCreate, read, update, delete items
board.footprintsFootprintOperationsFootprint placement and manipulation
board.routingRoutingOperationsTrack and via creation
board.zonesZoneOperationsCopper zones and rule areas
board.layersLayerOperationsStackup and layer management
board.netsNetOperationsNet queries and net classes
board.drcDRCOperationsDesign rule checking
board.design_rulesDesignRulesOperationsBoard design constraints
board.selectionSelectionOperationsEditor selection
board.pagePageOperationsPage settings and origin
board.graphicsGraphicsOperationsShapes, text, dimensions
board.gridGridOperationsGrid settings
board.viewViewOperationsAppearance and active layer
board.exportExportOperationsGerber, drill, reports
board.documentDocumentOperationsSave, open, close
board.syncSyncOperationsUpdate PCB from schematic
board.libraryFootprintLibraryOperationsFootprint library search
board.connectivityConnectivityOperationsRatsnest queries
board.groupsGroupOperationsGroup 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