Skip to main content

Overview

KiCad provides multiple plugin mechanisms for extending functionality:
  1. Python Scripting: Action plugins and automation via Python API
  2. 3D Model Plugins: Import various 3D formats
  3. I/O Plugins: Support additional file formats
  4. IPC API: External tool integration via protocol buffers

Python Scripting

Architecture

KiCad uses SWIG (Simplified Wrapper and Interface Generator) to expose C++ classes to Python. Key files:
  • scripting/kicadplugins.i - SWIG interface definition
  • scripting/python_scripting.cpp - Python integration layer
  • scripting/python_manager.cpp - Plugin lifecycle management

Python API Exposure

SWIG Interface

Generated bindings:
  • pcbnew.py - PCB editor API
  • Python wrapper for C++ classes
  • Automatic memory management via SWIG

Plugin Types

Action Plugins

Location: Loaded from standard plugin directories
  • Linux: ~/.local/share/kicad/scripting/plugins/
  • Windows: %APPDATA%/kicad/scripting/plugins/
  • macOS: ~/Library/Application Support/kicad/scripting/plugins/
Plugin structure:
Capabilities:
  • Access full board data structure
  • Create/modify footprints, tracks, zones
  • Read design rules
  • Generate manufacturing outputs
  • UI integration via toolbar buttons

Footprint Wizards

Purpose: Parametric footprint generation

Python Shell Integration

Interactive console: Built into Pcbnew (if KICAD_SCRIPTING_WXPYTHON enabled)

Python API Examples

Board manipulation

Netlist processing

wxPython Integration

Requires: KICAD_SCRIPTING_WXPYTHON=ON (default) Purpose: Create custom UI dialogs

3D Model Plugins

Overview

3D plugins enable importing various 3D model formats into KiCad’s 3D viewer. Location: plugins/3d/

Supported Formats

STEP (via OpenCASCADE)

Plugin: plugins/3d/oce/ Features:
  • Industry-standard CAD format
  • Precise geometry
  • Assembly support
  • Color and material properties
Implementation:
Capabilities:
  • Solid modeling
  • Surface geometry
  • Assembly hierarchies
  • Compound shapes

VRML (Virtual Reality Modeling Language)

Plugin: plugins/3d/vrml/ Versions supported:
  • VRML 1.0 (v1/)
  • VRML 2.0/VRML97 (v2/)
  • X3D (partial)
Features:
  • Mesh-based models
  • Materials and textures
  • Transformations
  • Hierarchical scenes
Parser structure:

IDF (Intermediate Data Format)

Plugin: plugins/3d/idf/ Purpose:
  • Board outline exchange
  • Component placement
  • Mechanical CAD integration
Format versions:
  • IDF 2.0
  • IDF 3.0 (most common)
  • IDF 4.0

Plugin Architecture

Base class:
Scene graph:
Registration: Plugins are dynamically loaded at runtime based on file extension.

I/O Plugins

Purpose

Enable import/export of various EDA file formats.

Plugin Interface

Supported Formats

Altium

Plugin: common/io/altium/ Formats:
  • .PcbDoc - PCB files
  • .SchDoc - Schematic files
  • .PcbLib - Footprint libraries
  • .SchLib - Symbol libraries
Parsers:
  • altium_binary_parser.cpp - OLE compound documents
  • altium_ascii_parser.cpp - ASCII sections
  • altium_props_utils.cpp - Property extraction

EAGLE

Plugin: common/io/eagle/ Formats:
  • .brd - Board files (XML)
  • .sch - Schematic files (XML)
  • .lbr - Libraries (XML)
Parser: XML-based using TinyXML2

EasyEDA

Plugin: common/io/easyeda/, common/io/easyedapro/ Formats:
  • JSON-based project files
  • Embedded libraries
  • Cloud project exports
Variants:
  • EasyEDA Standard
  • EasyEDA Pro

CADSTAR

Plugin: common/io/cadstar/ Formats:
  • Archive-based projects
  • Parts library database
Features:
  • Complex hierarchical designs
  • Custom attributes
  • Net classes

Plugin Registration

IO_MGR handles plugin discovery:

IPC API

Overview

Modern external tool integration via Protocol Buffers and NNG transport. Introduced: KiCad 8.0 Location: api/

Architecture

Protocol Buffers

Definitions: api/proto/ Message structure:

Message Types

Board commands (board/board_commands.proto):
Common commands (common/commands/):
  • base_commands.proto - Basic operations
  • editor_commands.proto - Editor control
  • project_commands.proto - Project management

Transport Layer

NNG (nanomsg-next-gen): Message queue system Endpoint: ipc:///tmp/kicad-api.sock (Unix) or named pipe (Windows) Patterns:
  • Request/Reply - Synchronous commands
  • Publish/Subscribe - Event notifications

Client Integration

Python example

Use Cases

Automation:
  • CI/CD integration
  • Batch processing
  • Design validation
  • Report generation
External tools:
  • Custom DRC checks
  • Advanced routing algorithms
  • Library management
  • Manufacturing preparation
Testing:
  • Automated testing
  • Regression validation
  • Performance benchmarking

Security

Token validation: Prevents unauthorized access
Limitations:
  • Local-only by default (IPC sockets)
  • No authentication (relies on OS permissions)
  • Trusted client assumption

Plugin Development Guidelines

Python Plugins

Best practices:
  1. Handle exceptions gracefully
  2. Validate board state before modifications
  3. Use transactions for multiple operations
  4. Refresh UI after changes
  5. Provide meaningful error messages
Testing:

I/O Plugins

Requirements:
  1. Inherit from IO_BASE
  2. Register with IO_MGR
  3. Handle malformed input
  4. Preserve as much data as possible
  5. Document format limitations

3D Plugins

Requirements:
  1. Implement S3D_PLUGIN interface
  2. Build scene graph efficiently
  3. Handle materials/colors
  4. Support coordinate transformations
  5. Validate geometry

See Also