main
John Lauer Publish independent Astra ESC source and full-pad Kelvin review lesson d057af8 23d ago
from component_search import *
import sys
plans=json.load(open(sys.argv[1]));load(plans)
errs=[];tree=shapely.STRtree([c['g'] for c in m.copper])
for i,c in enumerate(m.copper):
 for j in tree.query(c['g'],predicate='dwithin',distance=.19999):
  q=m.copper[j]
  if j<i and c['net']!=q['net'] and set(c['zs'])&set(q['zs']):errs.append((c['net'],q['net'],c['g'].distance(q['g'])))
missing={p['net']:len(components(p['net']))-1 for p in plans if p['net'] not in ['GND','+3V3'] and len(components(p['net']))>1}
print('inter-net copper clearance hits',len(errs),errs[:10]);print('missing',missing)
Path('evidence/geometric-audit.json').write_text(json.dumps(dict(clearanceHits=errs,missing=missing),indent=2))