A KiCad plugin for quick programmatic layout of components on your PCB.
I’ve done a fair bit of board designs lately that involve laying out a lot of footprints in precise locations that are more easily described in code than via the KiCad UI. I wrote previously about programmatic component layout in KiCad, but since then I’ve refined the process a fair bit. The code run in Kicad is reduced to a single plugin script, which you can find here: https://github.com/mcbridejc/kicad_component_layout.
The basic premise is that you, the designer, write a script (could be python, or whatever you prefer) to generate a layout.yaml, and in KiCad you execute the plugin to sync the instructions in the layout.yaml file to your PCB design.
The layout file can change the positions, rotation, flip status (top/bottom), and the footprint for a component based on designators. I think a quick example of a layout file should give the idea:
origin: [x0, y0] # Offset applied to all component locations components: R1: location: [x, y] # mm rotation: [r] # degrees flipped: false footprint: path: path/to/library.pretty name: SomeFootprint J1: ...
There are more instructions on the github project. If you find it useful, or have suggestions for how to expand it, feel free to open an issue or email with suggestions. I’m pretty open to expanding it to cover more use cases if anyone else finds it useful. I’ve found that this simple plugin handles all of the programmatic use cases I’ve needed, and it avoids the need for project specific code to be installed as a KiCad plugin.