# -*- coding: utf-8 -*- u"""刷新 `_pcb2_pads_full.json` / `_pcb2_vias.json`(inner1_* 三个校核脚本的输入)。""" import json, os, sys HERE = os.path.dirname(os.path.abspath(__file__)); sys.path.insert(0, HERE) from eda import run JS = u""" await eda.dmt_EditorControl.openDocument('942ed1560d81c1e7'); await new Promise(r=>setTimeout(r,1800)); const name = {}; for (const c of await eda.pcb_PrimitiveComponent.getAll()) name[c.getState_PrimitiveId()] = c.getState_Designator(); const ids = Object.keys(name).sort((a,b)=>b.length-a.length); const pads = []; for (const p of await eda.pcb_PrimitivePad.getAll()) { const pid = p.getState_PrimitiveId(); let hit=''; for (const id of ids) if (pid.length>id.length && pid.indexOf(id)===0){hit=name[id];break;} pads.push([hit, p.getState_PadNumber(), p.getState_Net(), p.getState_Layer(), p.getState_X(), p.getState_Y(), p.getState_Pad(), p.getState_Hole()]); } const vias = []; for (const o of await eda.pcb_PrimitiveVia.getAll()) vias.push([o.getState_Net(), o.getState_X(), o.getState_Y(), o.getState_Diameter(), o.getState_HoleDiameter()]); return {pads: pads, vias: vias}; """ r = run(JS, timeout=300) if not r.get('success'): sys.exit(u'失败: ' + json.dumps(r, ensure_ascii=False)[:400]) d = r['result'] json.dump(d['pads'], open(os.path.join(HERE, '_pcb2_pads_full.json'), 'w', encoding='utf-8'), ensure_ascii=False) json.dump(d['vias'], open(os.path.join(HERE, '_pcb2_vias.json'), 'w', encoding='utf-8'), ensure_ascii=False) print(u'焊盘 %d / 过孔 %d' % (len(d['pads']), len(d['vias'])))