PCBmodEZero
Experimental Python frontend to PCBmodE.
Highlights:
- Concise: Flat 'dot' syntax and helper functions to reduce configuration size
- Less boiler plate: See the 'Hello PCB' example for a tiny example
- Familiar: Syntax preserves original JSON names (as far as possible)
- Reduce duplication: copy components and slightly modifiy (e.g. location) to reuse as new components
- Programmatic configuration: e.g. reuse config generated from functions, use constants etc
- Procedural generation: e.g. use loops to generate paths and component placements
- Reduce hardcoded SVG Path: e.g. import SVG files for 'paths', rather than using embedded SVG path command strings
- Built-in component library (e.g. resistors, LEDs, connectors) collected from the Boldport PCBmodE projects
Status
Experimental... the current examples should hopefully give a flavour of what it currently is, and what could be.
On the TODO list is:
- generating shapes/[shape].json files
Perhaps the integration of a library or two for netlists and auto-routing.
Documentation
It's only the examples at the moment... but here's an Hello World! example:
from pcbmodezero import PCB
# Hello world example, place an LED (from the built-in part library)
# in the middle of a 30mm x 30mm PCB
pcb = PCB(board_name ="hello_pcb", width=30, height=30)
pcb.add_component('led-1206', 'LED1', [0, 0])
pcb.save()
Install
Ensure PCBmodE is setup then install pcbmodezero by running:
pip install pcbmodezero
Feedback
All feedback is welcomed and greatly appreciated, please feel free to:
- Raise a GitHub Issue
- Submit a PR
Thanks!