KiCAD JLCPCB tools
Plugin to generate all files necessary for JLCPCB board fabrication and assembly
- Gerber files
- Excellon files
- BOM file
- CPL file
Furthermore it lets you search the JLCPCB parts database and assign parts directly to the footprints which result in them being put into the BOM file.
Warning ๐ฅ
I try to keep it working with 7.99 nightly builds but there are massive API changes on the horizon and I'm not sure if I can keep up with them.
This is under a lot of developments, so consider this README out of date all the time ๐
If you find any sort of problems, please create an issue so that I can hopefully fix it!
Installation ๐พ
KiCAD PCM
Add my custom repo to the Plugin and Content Manager, the URL is https://raw.githubusercontent.com/Bouni/bouni-kicad-repository/main/repository.json
From there you can install the plugin via the GUI.
Git
Simply clone this repo into your scripting/plugins
folder.
Windows
cd C:\users\<username>\Documents\kicad\<version>\scripting\plugins\ # <username> is your username, <version> can be 6.0, 7.0, or 7.99 depending on the version you use
git clone https://github.com/Bouni/kicad-jlcpcb-tools.git
Linux
cd /home/<username>/.local/share/kicad/<version>/scripting/plugins # <version> can be 6.0, 7.0, or 7.99 depending on the version you use
git clone https://github.com/Bouni/kicad-jlcpcb-tools.git
Linux
cd ~/Library/Preferences/kicad/scripting/plugins
git clone https://github.com/Bouni/kicad-jlcpcb-tools.git
You may need to create the scripting/plugins
folder if it does not exist.
โ ๏ธ
Flatpack The Flatpak installation of KiCAD currently dows not ship with pip and requests installed. The later is required for the plugin to work. In order to get it working you can run the following 3 commands:
flatpak run --command=sh org.kicad.KiCad
python -m ensurepip --upgrade
/var/data/python/bin/pip3 install requests
See issue #94 for more info.
Usage ๐ฅณ
To access the plugin choose Tools โ External Plugins โ JLCPCB Tools
from the PCB Editor menus
Checkout this screencast, it shows quickly how to use this plugin:
Keyboard shortcuts
Windows can be closed with ctrl-w/ctrl-q/command-w/command-w (OS dependent) and escape. Pressing enter in the keyword text box will start a search.
Toggle BOM / CPL attributes
You can easily toggle the exclude from BOM
and exclude from CPL
attributes of one or multiple footprints.
Select LCSC parts from the JLCPCB parts database
Select one or multiple footprints, click select part. You can select parts with equal value and footprint using the Select alike button. In the upcoming modal dialog, search for parts, select the one of your choice and click select part. The LCSC number of your selection will then be assigned to the footprints.
Generate fabrication data
Generate all necessary assembly files for your board with a simple click.
A new directory called jlcpcb
is created, and in there, two separate folders are created, gerber
and production_files
.
In the gerber folder all necessary *.gbr
and *.drl
files are generated and zipped into the production_files
folder, ready for upload to JLCPCB.
The zipfile is named GERBER-<projectname>.zip
Also in the production_files
folder, two files are generated, BOM-<projectname>.csv
and CPL-<projectname>.csv
.
Footprints are included into the BOM and CPL files according to their exclude from BOM
and exclude from POS
attributes.
Footprint rotation correction
JLCPCB seems to need corrected rotation information. @matthewlai implemented that in his JLCKicadTools and I adopted his work in this plugin as well. You can download Matthews file from GitHub as well als manage your own corrections in the Rotation manager.
Icons
This plugin makes use of a lot of icons from the excellent Material Design Icons
Development
- Fork repo
- Fit clone forked repo
- Install pre-commit
pip install pre-commit
- Setup pre-commit
pre-commit run
- Create feature branch
git switch -c my-awesome-feature
- Make your changes
- Commit your changes
git commit -m "Awesome new feature"
- Push to GitHub
git push
- Create PR
Make sure you make use of pre-commit hooks in order to format everything nicely with black
In the near future I'll add ruff
/ pylint
and possibly other pre-commit-hooks that enforce nice and clean code style.