Schematic symbols for tscircuit
[!TIP] Looking to contribute to this repo? Take a look at How to Contribute to Schematic Symbols!
import { getSvg, resize, symbols } from "@tscircuit/schematic-symbols"
console.log(symbols.resistor.primitives)
// [{ type: "path", d: "M0 0L1 0...", color: "primary" }, {type: "text", text: "{REF}", ... }]
console.log(symbols.resistor.size)
// { width: 1, height: 0.6 }
getSvg(resistor)
// <svg><path d="M0 0L1 0... ..."</svg>
// You can easily resize symbols
console.log(resize(symbols.resistor, { width: 100 }).size)
// { width: 100, height: 60 }
./assets/symbols
directory (copy volt_meter.svg to a new file named <symbol_name>.svg
)bun run generate
to generate the new symbolbun run dev
to start the dev server and verify the new symbolbun run format
to format code before committingbun run test
to ensure symbol snapshots are present & validatedbun run build
to build all the symbols into the ./generated
directoryHere's an example of a generated symbol file:
// boxresistor.ts
import { path, text, defineSymbol } from "drawing"
export const boxresistor = defineSymbol({
primitives: [
path({ points: [[0, 0] /* ... */, , [1, 0]], color: "primary" }),
text("{REF}", { x: 0.5, y: 0.3, anchor: "middle_top" }),
],
ports: [
{ x: 0, y: 0, labels: ["1", "-"] },
{ x: 1, y: 0, labels: ["2", "+"] },
],
center: { x: 0.5, y: 0 },
size: { width: 1, height: 0.6 },
})
These files are used to generate an
Various primitive JSON elements are defined to represent components, each primitive has a function you can use to quickly define it inside new symbol definitions.
Primitive | Description |
---|---|
path |
A set of lines { points: Array<[number, number]>, color } |
text |
Text { text, x, y, anchor } |
circle |
Circle { x, y, radius } |
box |
Box { x, y, width, height, anchor } |
You can use the following color aliases to color your symbol:
primary
secondary
background
The symbols should all look correct next to eachother, since they're all used together in the same schematic.
1
0.6
Software needed to edit this project: