# -*- coding: utf-8 -*- """把当前页(或指定页)的元件引脚导出成 pins.json,供 local_netcheck.py 用。 用法: python .claude/fetch_pins.py """ import json, sys sys.path.insert(0, '.claude') from eda import run JS = """ %s const out={}; for (const c of await eda.sch_PrimitiveComponent.getAll()){ if (c.getState_ComponentType()!=='part') continue; const d=c.getState_Designator(); const o={}; for (const p of await c.getAllPins()) o[p.getState_PinNumber()]=[Math.round(p.getState_X()),Math.round(p.getState_Y()),p.getState_PinName()]; out[d]=o; } return {page:(await eda.dmt_Schematic.getCurrentSchematicPageInfo()).name, pins:out}; """ page = sys.argv[1] if len(sys.argv) > 1 else None out = sys.argv[2] if len(sys.argv) > 2 else 'pins.json' prefix = "await eda.dmt_EditorControl.openDocument('%s');" % page if page else "" r = run(JS % prefix) assert r.get('success'), r json.dump(r['result']['pins'], open(out, 'w', encoding='utf-8'), ensure_ascii=False, indent=1) print(r['result']['page'], '->', out, len(r['result']['pins']), '个元件')