Skip to content

Convert easyeda JSON PCB footprints into tscircuit json

License

Notifications You must be signed in to change notification settings

tscircuit/easyeda-converter

Repository files navigation

easyeda-converter

Convert EasyEDA JSON PCB footprints into Circuit JSON or TypeScript React components.

npm install -g easyeda

Library Usage

Fetching EasyEDA Component Data

import { fetchEasyEDAComponent } from "easyeda"

// Get raw EasyEDA JSON for a component
const rawEasyJson = await fetchEasyEDAComponent("C46749")

Converting to Circuit JSON

import { convertEasyEdaJsonToCircuitJson } from "easyeda"

// Convert to tscircuit soup
const soupJson = convertEasyEdaJsonToCircuitJson(rawEasyJson)

Converting to TypeScript React Component

import { convertRawEasyEdaToTs } from "easyeda"

// Convert to TypeScript React component
const tsxComponent = await convertRawEasyEdaToTs(rawEasyJson)

Full Example: Fetching and Converting to TSX

import { fetchEasyEDAComponent, convertRawEasyEdaToTs } from "easyeda"

async function convertPartNumberToTsx(partNumber: string) {
  const rawEasyJson = await fetchEasyEDAComponent(partNumber)
  const tsxComponent = await convertRawEasyEdaToTs(rawEasyJson)
  return tsxComponent
}

// Usage
const ne555TsxComponent = await convertPartNumberToTsx("C46749")
console.log(ne555TsxComponent)

CLI

Install the CLI with npm install -g easyeda, you can then call the cli with either easyeda or easyeda-converter.

# Convert a schematic and footprint for JLCPCB part number C46749 (NE555) to tscircuit component
easyeda convert -i C46749 -o C46749.tsx
easyeda convert -i C46749 -t tsx

# Convert a footprint and schematic for JLCPCB part number C46749 (NE555) to tscircuit soup JSON
# More info: https://docs.tscircuit.com/api-reference/advanced/soup
easyeda convert -i C46749 -o C46749.soup.json

# Convert a footprint for JLCPCB part number C46749 (NE555) to KiCad footprint
easyeda convert -i C46749 -o C46749.kicad_mod

# Download the C46749 footprint and schematic and convert to readable JSON
easyeda convert -i C46749 -o C46749.bettereasy.json

# Can also convert from files!
easyeda convert -i ./C46749.raweasy.json -o C46749.soup.json

# Get exactly what is returned from the JLC API
# The footprint, schematic and some other data is encoded in strings, you
# probably want to convert to *.bettereasy.json
easyeda download -i C46749 -o C46749.raweasy.json

File Formats

Format Description
*.raweasy.json The raw JSON from the EasyEDA API
*.bettereasy.json The raw JSON from the EasyEDA API, but with the footprint and schematic data decoded
*.circuit.json The tscircuit's easy-to-use JSON format (docs)
*.kicad_mod A KiCad footprint file
*.tsx A TypeScript React component file

Advanced Usage

Customizing Conversion Options

When converting EasyEDA JSON to tscircuit soup, you can pass additional options:

import { convertEasyEdaJsonToCircuitJson } from "easyeda"

const soupJson = convertEasyEdaJsonToCircuitJson(rawEasyJson, {
  useModelCdn: true, // Use CDN for 3D models
  shouldRecenter: false, // Don't recenter the component
})

Working with Generated TypeScript Components

The generated TypeScript React components can be imported and used in your tscircuit projects:

import { NE555 } from "./NE555"

const MyCircuit = () => {
  return (
    <circuit>
      <NE555 name="U1" />
      {/* Other components */}
    </circuit>
  )
}

These components include proper typing for props and integrate seamlessly with the tscircuit ecosystem.