kicad-pycbnew is a Python module for creating printed circuit boards designs compatible with KiCad's pcbnew,
Project description
kicad-pycbnew - Python Library for KiCad PCB Creation from Scratch
kicad-pycbnew is a Python library that provides a programmatic interface for creating and manipulating KiCad PCB designs. kicad-pycbnew works without requiring KiCad to be installed. It allows you to generate complex PCB layouts using Python code, making it easier to create parametric designs, automate repetitive tasks, and integrate PCB design into your Python workflows.
Features
- Create KiCad PCB projects programmatically
- Define, place and manipulate PCB elements:
- Footprints and pads
- Nets and logical connections between footprint pads
- Traces and vias
- Zones and keepout areas
- Graphic elements (lines, text, polygons)
- Geometric utilities for PCB design
- Support for S-expressions (KiCad's file format)
- Integration with KiCad CLI
Installation
pip install kicad-pycbnew
Project Structure
The library is organized into three main packages:
Primitives
Basic building blocks for KiCad PCB elements:
kicad.py: Base classes and utilitiesproject.py: Project managementfootprint.py: Footprint and pad handlinglayer.py: Layer definitionsnet.py: Net managementsegment.py: Track segments and arcsvia.py: Via definitionszone.py: Copper zonesgr_elements.py: Graphic elements (text, lines, arcs, rectangles)sexpressions.py: some convenient S-expression utilities
Composites
Higher-level constructs built from primitives:
abstract_path.py: Base path classgr_line_path.py: Paths with graphic lines and arcssegment_path.py: Paths with track segments and arcs
Utils
Utility functions and geometric classes:
geometry.py: Point, Vector, Arc, Rectangle, Polygon classesbernstein.py: Bernstein polynomial functions
Usage Example
from pycbnew.primitives.project import KProject
from pycbnew.primitives.footprint import KFootprint
from pycbnew.primitives.net import KNet
from pycbnew.utils.geometry import Point
# Create a new KiCadObject project
project = KProject(filename="my_project.kicad_pcb", copper_layers=2)
# Create a net
gnd_net = KNet(1, "GND")
project.add(gnd_net)
# Add a footprint
footprint = KFootprint("Resistor_SMD:R_0805_2012Metric",
at=Point(100, 100),
side=KFootprint.Side.Front,
default_net=gnd_net)
project.add(footprint)
# Save the project
project.save()
Advanced usage
See the examples directory.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License. See the LICENSE file for details.
Changelog
See the CHANGELOG file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file kicad_pycbnew-0.1.1.post1.tar.gz.
File metadata
- Download URL: kicad_pycbnew-0.1.1.post1.tar.gz
- Upload date:
- Size: 43.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a88376c603db12daf067632270a7b9c790da3dc3f2909001096fb0fb7a7dedfb
|
|
| MD5 |
e20e6245a0327af7a03f472bacfc89b3
|
|
| BLAKE2b-256 |
7185ce01958a24098a42cb02811d359c85cb30ac8e197e30654d486cfca691d0
|
File details
Details for the file kicad_pycbnew-0.1.1.post1-py3-none-any.whl.
File metadata
- Download URL: kicad_pycbnew-0.1.1.post1-py3-none-any.whl
- Upload date:
- Size: 48.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
07ba573579f56932c6dd26bfa478cc4b2f826252e89a279428872918ab07f380
|
|
| MD5 |
cf99edb3999b69e19b06feb4682f8186
|
|
| BLAKE2b-256 |
51257083f3a9a3b5708dc8a0d4326d641a68a5198a7478ec8ae2d741b0d1f521
|