mohan-bee/tscircuit-robot-vacuum

A tscircuit package created by mohan-bee.

Version
1.0.0
License
unset
Stars
0

capability-audit/board-hole-collision-probe.tsx

PCBPCB preview for capability-audit/board-hole-collision-probe.tsx
SchematicSchematic preview for capability-audit/board-hole-collision-probe.tsx
import React from 'react'
import { Circuit, assembly, jscad } from 'tscircuit'
import { writeFileSync } from 'node:fs'
const results=[]
for(const kind of ['bare-board','round-npth','native-pinheader']){
 const c=new Circuit()
 c.add(<assembly.device name="hole-check"><board name="B" width={20} height={20} routingDisabled>
  {kind==='round-npth'?<hole name="H1" diameter={3.2} pcbX={5} pcbY={0}/>:null}
  {kind==='native-pinheader'?<pinheader name="J1" pinCount={2} footprint="pinrow2" pcbX={0} pcbY={0}/>:null}
 </board><assembly.printedpart name="COVER" jscad={<jscad.cuboid size={[18,18,2]} center={[0,0,10]}/>} />
 <assembly.explosion.stage name="lift"><assembly.explosion.move targetRefs="COVER" offZ={10}/></assembly.explosion.stage></assembly.device>)
 await c.renderUntilSettled()
 const cj=c.getCircuitJson()
 const errors=cj.filter(x=>/collision.*(warning|error)/.test(x.type))
 const holes=cj.filter(x=>['pcb_plated_hole','pcb_hole'].includes(x.type))
 writeFileSync(`capability-audit/${kind}.circuit.json`,JSON.stringify(cj,null,2))
 results.push({kind,holes,collisionDiagnostics:errors})
}
writeFileSync('capability-audit/board-hole-collision-results.json',JSON.stringify(results,null,2))
console.log(JSON.stringify(results,null,2))