ShiboSoftwareDev/f1c100s-linux-gameboy
Restores PCB assembly metadata by assigning part numbers, managing 3D CAD models and orientations, removing test-point bodies, and validating top-side SMT solder-paste features.
- Version
- 1.0.8
- License
- unset
- Stars
- 0
scripts/capture-board-routes.mjs
import fs from "node:fs"
const circuit = JSON.parse(fs.readFileSync("dist/index/circuit.json", "utf8"))
const traces = circuit.filter((element) =>
element.type === "pcb_trace" &&
element.subcircuit_id === "subcircuit_source_group_7" &&
!/^pcb_trace_\d+$/.test(element.pcb_trace_id),
)
for (const trace of traces) {
for (let i = 1; i < trace.route.length; i++) {
const previous = trace.route[i - 1]
const current = trace.route[i]
if (previous.route_type !== "wire" || current.route_type !== "wire" || previous.layer === current.layer) continue
if (current.end_pcb_port_id) current.layer = previous.layer
else if (previous.start_pcb_port_id) previous.layer = current.layer
}
}
if (traces.length !== 205) {
throw new Error(`Expected 205 routed board traces, found ${traces.length}`)
}
fs.writeFileSync("imports/board-routes.json", `${JSON.stringify(traces, null, 2)}\n`)
console.log(`Captured ${traces.length} deterministic routed traces`)