ShiboSoftwareDev/nema8-20mm-dual-usbc-stepper-controller
BAT54C dual Schottky diode in a 3-pin SMD package, with two anodes and a shared cathode.
- Version
- 1.0.14
- License
- unset
- Stars
- 0
scripts/search-cc2-tail.mjs
import fs from "node:fs"
import { runAllRoutingChecks } from "@tscircuit/checks"
const base = JSON.parse(fs.readFileSync("dist/index/circuit.json", "utf8"))
.filter((element) => !String(element.type).endsWith("error"))
const trace = base.find((element) => element.type === "pcb_trace" && element.pcb_trace_id === "source_net_8_0")
const prefix = trace.route.slice(0, 35); const start = prefix.at(-1); const end = trace.route.at(-1)
const wire = (x, y) => ({ route_type: "wire", x, y, layer: "bottom", width: 0.1 })
const makeCircuit = (x, y, mode) => {
const middle = mode === 0
? [wire(x, start.y), wire(x, y), wire(end.x, y)]
: [wire(start.x, y), wire(x, y), wire(x, end.y)]
const route = [...prefix, ...middle, { ...end, width: 0.1 }]
return base.map((element) => element.type === "pcb_trace" && element.pcb_trace_id === trace.pcb_trace_id ? { ...element, route } : element)
}
if (process.argv.length >= 4) {
const errors = await runAllRoutingChecks(makeCircuit(Number(process.argv[2]), Number(process.argv[3]), Number(process.argv[4] ?? 0)))
console.log(errors.length); console.log(errors.map((e) => e.message).join("\n")); process.exit(0)
}
let best = { count: Infinity }
for (let x = -4.2; x <= -2.2 + 1e-9; x += 0.2) for (let y = -2.8; y <= -0.6 + 1e-9; y += 0.2) for (let mode = 0; mode < 2; mode++) {
const cx=Number(x.toFixed(3)), cy=Number(y.toFixed(3)); const errors=await runAllRoutingChecks(makeCircuit(cx,cy,mode))
if(errors.length<best.count){best={count:errors.length,x:cx,y:cy,mode,errors};console.log("best",best.count,best.x,best.y,best.mode)}
if(errors.length<=6){console.log(JSON.stringify({count:errors.length,x:cx,y:cy,mode}));console.log(errors.map(e=>e.message).join("\n"));process.exit(0)}
}
console.log(JSON.stringify(best,null,2))