circuit-json-to-lbrn
v0.0.23
Published
Convert Circuit JSON to LBRN XML for PCB fabrication via laser ablation.
Readme
circuit-json-to-lbrn
Convert Circuit JSON to LBRN XML for PCB fabrication via laser ablation.
Usage
import { convertCircuitJsonToLbrn } from "circuit-json-to-lbrn"
// Generate copper layer only
const copperLbrn = convertCircuitJsonToLbrn(circuitJson, {
includeCopper: true,
includeSoldermask: false,
})
// Generate soldermask layer only (for cutting polyimide sheet)
const soldermaskLbrn = convertCircuitJsonToLbrn(circuitJson, {
includeCopper: false,
includeSoldermask: true,
})
// Generate both layers together in one file
const bothLbrn = convertCircuitJsonToLbrn(circuitJson, {
includeCopper: true,
includeSoldermask: true,
})
// Default behavior (copper only, backward compatible)
const defaultLbrn = convertCircuitJsonToLbrn(circuitJson)Options
includeCopper?: boolean- Include copper traces and pads (default:true)includeSoldermask?: boolean- Include soldermask openings for cutting polyimide sheet (default:false)includeSilkscreen?: boolean- Include silkscreen layer (not implemented yet)origin?: { x: number; y: number }- Set the origin point for the conversionmargin?: number- Set the margin around the PCBtraceMargin?: number- Clearance margin around traces in mm (requiresincludeCopper: true)laserSpotSize?: number- Laser spot size in mm for crosshatch spacing (default:0.005)includeLayers?: Array<"top" | "bottom">- Specify which layers to include (default:["top", "bottom"])
Soldermask Support
The includeSoldermask flag enables generation of soldermask openings for cutting Kapton tape (polyimide sheet). When enabled:
- SMT pads and plated holes will have soldermask openings
- Traces are NOT included in the soldermask layer (to avoid accidental bridging during soldering)
- Holes are always cut through the board regardless of the mode
- Soldermask shapes are filled (Scan mode) instead of outlined, which is required for laser-cutting Kapton tape masks where the laser needs to remove material from the pad areas
Laser Cutting Workflow
The soldermask layer uses LightBurn's "Scan" mode with filled shapes. This is designed for the following workflow:
- Generate LBRN file: Use
includeSoldermask: trueto export filled pad shapes - Laser cut Kapton tape: The laser will fill/ablate the pad areas.
You can generate:
- Copper only:
{ includeCopper: true, includeSoldermask: false }- Traditional copper cutting - Soldermask only:
{ includeCopper: false, includeSoldermask: true }- Just Kapton tape (polyimide) cutting patterns (filled shapes) - Both:
{ includeCopper: true, includeSoldermask: true }- Complete fabrication file with both layers
Trace Margin Support
The traceMargin option enables smart trace rasterization for creating clearance zones around traces. This is essential for laser PCB fabrication to ensure proper electrical isolation between traces.
How it works
When traceMargin is specified:
- Generates trace geometries at normal width (inner trace union)
- Generates trace geometries at width + 2×
traceMargin(outer trace union) - Calculates clearance area = outer - inner
- Outputs clearance area as filled shapes using Scan mode with crosshatch pattern
The crosshatch pattern ablates copper in the margin area, with line spacing determined by laserSpotSize.
Example
const lbrn = convertCircuitJsonToLbrn(circuitJson, {
includeCopper: true,
traceMargin: 0.2, // 0.2mm clearance around traces
laserSpotSize: 0.005, // 0.005mm spot size (crosshatch spacing)
})This will:
- Cut trace outlines (vector mode)
- Fill 0.2mm margin zones around traces with crosshatch pattern (scan mode)
- Use 0.005mm spacing for the crosshatch lines
Note: traceMargin requires includeCopper: true and will throw an error if copper is disabled.
