FreeCAD <> KiCAD
Find a file
Morgan 'ARR\!' Allen c4c2b80892 thatsa workbench
2025-03-28 23:11:13 -07:00
freecad/kiconnect thatsa workbench 2025-03-28 23:11:13 -07:00
CMakeLists.txt boilerplate, build/config, legal, not sure what all is even needed 2025-03-28 23:09:29 -07:00
LICENSE boilerplate, build/config, legal, not sure what all is even needed 2025-03-28 23:09:29 -07:00
MANIFEST.in boilerplate, build/config, legal, not sure what all is even needed 2025-03-28 23:09:29 -07:00
pyproject.toml boilerplate, build/config, legal, not sure what all is even needed 2025-03-28 23:09:29 -07:00
README.md README 2025-03-28 22:36:38 -07:00
setup.py boilerplate, build/config, legal, not sure what all is even needed 2025-03-28 23:09:29 -07:00

KiConnect

KiCAD 9 API Workbench

What works

  • Create board
  • Add Vias
  • Add footprint pads
  • Import footprint 3d models
  • Reload outline after changed in KiCAD
  • Can be used in FreeCAD Assemblies

In Progress / To be ported

Tracks

Tracks can be loaded and drawn as simple LineSegment but more work is needed to draw properly 'widthed', and particularly whilte trying to eliminate overlapping lines.

More Pad Shapes

Only rectangle get drawn right now, would like to figure out how to get Sketcher to do the heavy lifting

Sync to KiCAD

In theory this code is mostly working but there seems to be an issue in kicad-python

Plans

Add more board features

Currently refactoring similar objects to common base class, this will enable easily including other board elements (text, graphics, )

Package as proper FreeCAD add-on

Mutliboard support

Hope to support this one of several ways, depending on the future of KiCAD/API

  • KiCAD supports multi-document, API include get_boards()
  • kicad-cli supports full API, spin up instances as needed
  • Manually switch between KiCAD projects and import new boards
  • socker-per-project but this seems messy

Panelization

In it's most basic form, this will probably utilize kikit to assist in basic panelization but in multiboard projects it will assist in panelizing differnt boards into one panel.

Syncronize all the things!

Syncing selections is fairly straight forward, but long term it would be awesome to have everything sync as their changed.