main
John Lauer Publish independent Astra ESC source and full-pad Kelvin review lesson d057af8 23d ago
from bridge import *
from geometry import pads
z=json.loads((D/'evidence/outer-pours-attempt1.json').read_text())
for ref in ['U2.10','U2.11','U3.2','R27.1','R19.2']:
 p=next(p for p in pads if p['name']==ref);g=p['g'].buffer(.3)
 z.append(dict(net='GND',layers=['F.Cu'],polygon=list(map(list,g.exterior.coords[:-1])),priority=4,connection='solid',clearance=.2,minThickness=.25,name='Astra local ground connection '+ref))
# Merge adjoining U2 pad patches at same priority.
from shapely.geometry import Polygon
from shapely.ops import unary_union
new=z[-5:];z=z[:-5];g=unary_union([Polygon(q['polygon']) for q in new])
for i,p in enumerate(g.geoms if g.geom_type=='MultiPolygon' else [g]):z.append(dict(new[0],polygon=list(map(list,p.exterior.coords[:-1])),name='Astra local ground connection '+str(i)))
(D/'outer-pours.json').write_text(json.dumps(z,indent=2))
s=call('kicad_routing_state',{'filePath':B});r=call('kicad_add_zone',{'filePath':B,'expectedRevision':s['revision'],'zones':z,'dryRun':True});(D/'evidence/outer-pours-dryrun.json').write_text(json.dumps(r,indent=2));print('passed',flush=True)