kicad-component-converter
kicad-component-converter
This module converts kicad files into a circuit json, an easy-to-use JSON format for electronics or tscircuit code.
Library Usage
npm add kicad-component-converter
import { parseKicadModToCircuitJson } from "kicad-component-converter"
import { readFileSync } from "node:fs"
const fileContent = readFileSync("SW_SP3T_PCM13.kicad_mod")
const circuitJson = await parseKicadModToCircuitJson(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 } }
* ...
*/
CLI Usage
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!
Using the Converted Kicad Directory
You should publish the generated library to the tscircuit registry! Just run
tsci publishinside 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>
)
Development
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.
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
CLI Testing
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