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/refill-pour.ts

import fs from 'node:fs'
import { CopperPourPipelineSolver, initializeManifoldGeometry, convertCircuitJsonToInputProblem } from '@tscircuit/copper-pour-solver'
const [input,output]=process.argv.slice(2)
const circuit=JSON.parse(fs.readFileSync(input,'utf8')).filter((e:any)=>e.type!=='pcb_copper_pour')
const net=circuit.find((e:any)=>e.type==='source_net'&&e.name==='GND')
const problem=convertCircuitJsonToInputProblem(circuit,{layer:'bottom',subcircuit_id:net.subcircuit_id,source_net_id:net.source_net_id,pad_margin:.21,trace_margin:.21,pour_margin:.21,cutout_margin:.21,board_edge_margin:.3})
await initializeManifoldGeometry()
const solver=new CopperPourPipelineSolver(problem)
for(const [i,shape] of solver.getOutput().brep_shapes.entries()) circuit.push({type:'pcb_copper_pour',pcb_copper_pour_id:`pcb_copper_pour_${i}`,shape:'brep',layer:'bottom',brep_shape:shape,source_net_id:net.source_net_id,subcircuit_id:net.subcircuit_id,covered_with_solder_mask:true})
fs.writeFileSync(output,JSON.stringify(circuit,null,2))