imrishabh18/corne-keyboard

The code defines and renders two surface-mount chip components with SMT pads, silkscreen outlines, and 3D CAD models (OBJ and STEP) for PCB assembly.

Version
2.0.21
License
unset
Stars
1

scripts/solve-srj.ts

import {AutoroutingPipelineSolver9_PreloadedTraceGraph as Solver} from '@tscircuit/capacity-autorouter'
import fs from 'node:fs'
const [inputPath,outPrefix,optionsString='{}']=process.argv.slice(2)
const input=JSON.parse(fs.readFileSync(inputPath,'utf8'))
const options=JSON.parse(optionsString)
const solver:any=new Solver(input,{...options,cacheProvider:null})
const start=Date.now();let phase='',last=0
while(!solver.solved&&!solver.failed){try{solver.step()}catch(e){console.error(String(e));break}
const p=solver.getCurrentPhase();if(p!==phase||Date.now()-last>10000){console.log(p,((Date.now()-start)/1000).toFixed(1));last=Date.now();phase=p}}
fs.writeFileSync(outPrefix+'.status.json',JSON.stringify({solved:solver.solved,failed:solver.failed,error:solver.error,options,seconds:(Date.now()-start)/1000},null,2))
if(solver.solved){fs.writeFileSync(outPrefix+'.traces.json',JSON.stringify(solver.getOutputSimplifiedPcbTraces(),null,2));console.log('solved',solver.getOutputSimplifiedPcbTraces().length)}
else{
 fs.writeFileSync(outPrefix+'.debug.json',JSON.stringify(solver.portPointPathingSolver?.stats,null,2));console.error(solver.error);process.exitCode=1
}