skill
EDA Skillpack
Public Made by Adomby adom
All skills for all EDA capabilities across the Adom ecosystem.
main
from planner import *
def search2(a,start,target,goalgeo,width=.25,plane=False):
goal=np.zeros((2,H,W),dtype=np.uint8)
if plane:goal[0]=1-a[2]
else:
for z,g in goalgeo:raster(goal[z],g.buffer(width/2-.005))
goal[a[:2]>0]=0
starts=np.zeros((H,W),dtype=np.uint8);raster(starts,start['g'].buffer(width/2-.005));starts[a[0]>0]=0
ids=np.flatnonzero(starts)
if not len(ids) or not np.any(goal):return None
a.tofile('mask.bin');goal.tofile('goal.bin');tx,ty=ij(*target)
r=subprocess.run(['./search2'],input=f'{W} {H} 0 {tx} {ty} {len(ids)} '+ ' '.join(map(str,ids)),capture_output=True,text=True)
raw=json.loads(r.stdout)
if not raw:return None
ps=compress(raw);out=[];curz=0
for i,j,z in ps:
x,y=xy(i,j)
if z!=curz:out.append(dict(x=x,y=y,layer='B.Cu' if z else 'F.Cu'))
elif [x,y]!=(out[-1] if out else None):out.append([x,y])
curz=z
return out