文件

26 行
1.6 KiB
Python

import json,sys,os
sys.path.insert(0,'.claude')
from eda import run
page=sys.argv[1]
r=run("""
await eda.dmt_EditorControl.openDocument('%s'); await new Promise(r=>setTimeout(r,1200));
const cur=(await eda.dmt_Schematic.getCurrentSchematicPageInfo()).name;
const parts=[],ports=[],flags=[];
for (const c of await eda.sch_PrimitiveComponent.getAll()){
const t=c.getState_ComponentType();
if (t==='part'){ const ps=await c.getAllPins(); parts.push([c.getState_Designator(),Math.round(c.getState_X()),Math.round(c.getState_Y()),c.getState_Rotation(),ps.map(p=>[p.getState_PinNumber(),Math.round(p.getState_X()),Math.round(p.getState_Y())])]); }
else if (t==='netport') ports.push([c.getState_Net(),Math.round(c.getState_X()),Math.round(c.getState_Y()),c.getState_Rotation(),c.getState_Component().name]);
else if (t==='netflag') flags.push([c.getState_Net(),Math.round(c.getState_X()),Math.round(c.getState_Y()),c.getState_Rotation()]);
}
const wires=(await eda.sch_PrimitiveWire.getAll()).map(w=>w.getState_Line().map(Math.round));
const texts=[];
return {cur,parts,ports,flags,wires,texts};
"""%page, timeout=300)
assert r.get('success'), json.dumps(r,ensure_ascii=False)[:500]
out=r['result']
json.dump(out,open('.claude/_tmp_page_%s.json'%page,'w',encoding='utf-8'),ensure_ascii=False)
print('page',out['cur'],'parts',len(out['parts']),'ports',len(out['ports']),'flags',len(out['flags']),'wires',len(out['wires']),'texts',len(out['texts']))
for p in out['parts']: print(' PART',p[0],p[1],p[2],p[3],p[4])
for p in out['ports']: print(' PORT',p)
for f in out['flags']: print(' FLAG',f)