This module converts kicad files into a tscircuit soup json, an easy-to-use JSON format for electronics.
npm add kicad-mod-converter
import { parseKicadModToTscircuitSoup } from "kicad-mod-converter"
import { readFileSync } from "node:fs"
const fileContent = readFileSync("SW_SP3T_PCM13.kicad_mod")
const jsonSoup = await parseKicadModToTscircuitSoup(fileContent)
/*
* {
* "type": "pcb_smtpad",
* "x": 0.345,
* ...
*/
You can also output "kicad json", an intermediary JSON format that more closely resembles the original kicad sexpr.
import { parseKicadModToKicadJson } from "kicad-mod-converter"
const kicadJson = parseKicadModToKicadJson(readFileSync("SW_SP3T_PCM13.kicad_mod"))
/*
* {
* footprint_name: "...",
* fp_lines: [
* { start: [0, 0], end: [20, 4], stroke: { width: 0.1 } }
* ...
*/
npm install -g kicad-mod-converter
# interactive usage
kicad-mod-converter
# Convert a directory ./my-footprints.pretty to a tscircuit project
kicad-mod-converter convert-kicad-directory --input-dir ./my-footprints.pretty --output-dir ./my-tscircuit-footprints
You can now go inside ./my-tscircuit-footprints
and run npm i
and npm run start
to
view all your footprints!
Note
You should publish the generated library to the tscircuit registry! Just run tsci publish
inside the directory!
You can then use tsci add yourgithubusername/package-name
import { Battery_CR1225 } from "./my-tscircuit-footprints"
export default () => (
<group>
<component footprint={Battery_CR1225} />
</group>
)
You should read about the kicad sexpr syntax to understand how to read the footprint files.
There are tests in this repo, take a look in the tests
directory to see how they work.
Note
You'll need to pull the kicad-footprints official repo before you can run the
tests, you can do this by running npm run test:pull-kicad-footprints
You can test the cli by running npm run cli
.
If you want to test conversion of a kicad directory, run npm run cli:test-convert