app
Codex
Public Made by Adomby adom
Codex in Adom Hydrogen: ecosystem setup, dock dashboard and live engineering demos.
main
John Lauer
Corrected Astra ESC routing: native zero-open result, full accounting and voiceover handoff
a80479d
23d ago
from component_search import *
import sys
plans=json.load(open(sys.argv[1]));load(plans);out=[]
for p in plans:
if p['net'] not in ['+VBAT','GND_OUT','/DRV_SHA','/DRV_SHB','/DRV_SHC']:
out.append(p);continue
a=masks(p['net'],1.0);narrow=[];wide=[]
for path in p['paths']:
z=path[0].get('layer','F.Cu') if isinstance(path[0],dict) else 'F.Cu'
pos=lambda v:(v['x'],v['y']) if isinstance(v,dict) else v
for u,v in zip(path,path[1:]):
aa,bb=pos(u),pos(v);newz=v.get('layer',z) if isinstance(v,dict) else z
if aa!=bb:
length=math.dist(aa,bb);num=max(2,math.ceil(length/.025)+1)
ok=length>=.6
for t in np.linspace(0,1,num):
x=aa[0]+(bb[0]-aa[0])*t;y=aa[1]+(bb[1]-aa[1])*t;i,j=ij(x,y)
if a[1 if z=='B.Cu' else 0,j,i]:ok=False;break
(wide if ok else narrow).append([dict(x=aa[0],y=aa[1],layer=z),list(bb)])
if z!=newz:narrow.append([dict(x=bb[0],y=bb[1],layer=z),dict(x=bb[0],y=bb[1],layer=newz)]);z=newz
for width,paths in [(.5,narrow),(1.,wide)]:
for i in range(0,len(paths),128):out.append(dict(net=p['net'],width=width,paths=paths[i:i+128]))
# Short nets first, each commit carries only one net. Shared planes last.
out.sort(key=lambda p:(p['net'] in ['GND','+3V3'],max(math.hypot(a['x']-b['x'],a['y']-b['y']) for a in by[p['net']] for b in by[p['net']]),p['width']))
# Native KiCad detected a pad-edge tangency at U5.5; extend 0.05 mm into the pad.
next(p for p in out if p['net']=='/HSE_IN')['paths'].append([[121.4,100.25],[121.35,100.25]])
Path('corrected-final-plan.json').write_text(json.dumps(out,indent=2));print('commits',len(out),'wide paths',sum(len(p['paths']) for p in out if p['width']==1))