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/refine-right.ts
import fs from 'node:fs'
import * as C from '@tscircuit/checks'
const input=process.argv[2],output=process.argv[3]
const base=JSON.parse(fs.readFileSync(input,'utf8'))
const fns=['checkEachPcbTraceNonOverlapping','checkPadTraceClearance','checkViaTraceClearance','checkViaPadClearance','checkSameNetViaSpacing','checkDifferentNetViaSpacing','checkCopperToBoardEdgeClearance','checkPcbCopperOverKeepout']
for(const [dx,dy] of [[-.015,0],[0,.015],[-.01,.01],[0,.025],[-.025,0]]){
const c=structuredClone(base),via=c.find((e:any)=>e.type==='pcb_via'&&e.pcb_via_id==='pcb_via_192'),old={x:via.x,y:via.y};via.x+=dx;via.y+=dy
for(const t of c.filter((e:any)=>e.type==='pcb_trace'))for(const p of t.route)if(Math.hypot(p.x-old.x,p.y-old.y)<1e-6&&!p.start_pcb_port_id&&!p.end_pcb_port_id){p.x+=dx;p.y+=dy}
const t=c.find((e:any)=>e.type==='pcb_trace'&&e.pcb_trace_id==='source_trace_111_0');t.route[4].x+=.015
const errors=C.dedupePcbDrcErrors(fns.flatMap(f=>(C as any)[f](c)))
console.log(dx,dy,errors.length,errors.map((e:any)=>e.message))
if(!errors.length){fs.writeFileSync(output,JSON.stringify(c,null,2));break}
}