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`)