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-corner.ts
import fs from 'node:fs'
import * as C from '@tscircuit/checks'
const base=JSON.parse(fs.readFileSync('../right-power-repaired.circuit.json','utf8'))
const v=base.find((e:any)=>e.type==='pcb_via'&&e.pcb_via_id==='pcb_via_192'),old={x:v.x,y:v.y};v.y+=.015
for(const t of base.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.y+=.015
const fns=['checkEachPcbTraceNonOverlapping','checkPadTraceClearance','checkViaTraceClearance','checkViaPadClearance','checkSameNetViaSpacing','checkDifferentNetViaSpacing','checkCopperToBoardEdgeClearance','checkPcbCopperOverKeepout']
search:for(const dy of [-.01,-.02,-.03,.01,.02,.03,-.05,.05])for(const dx of [0,.005,-.005,.01,-.01,.02,-.02]){
const c=structuredClone(base),t=c.find((e:any)=>e.type==='pcb_trace'&&e.pcb_trace_id==='source_trace_111_0');t.route[4].x+=dx;t.route[4].y+=dy
const first=C.checkPadTraceClearance(c);if(first.length)continue
const e=C.dedupePcbDrcErrors(fns.flatMap(f=>(C as any)[f](c)));console.log(dx,dy,e.length,e.map((e:any)=>e.message))
if(!e.length){fs.writeFileSync('../right-geometry-clean.circuit.json',JSON.stringify(c,null,2));break search}
}