await eda.dmt_EditorControl.openDocument('f126ffb29c92f9b2'); await new Promise(r=>setTimeout(r,1500)); const M = 39.3700787; const comps = await eda.pcb_PrimitiveComponent.getAll(); const map = {}; for (const c of comps) map[c.getState_Designator()] = c; const rd = async (d) => { const c = map[d]; const pins = await eda.pcb_PrimitiveComponent.getAllPinsByPrimitiveId(c.getState_PrimitiveId()); return pins.slice(0,8).map(p=>[p.padNumber, +(p.x/M).toFixed(3), +(p.y/M).toFixed(3), p.layer]); }; const out = {}; const orig = {}; for (const d of ['U51','J71','R761']) { const c = map[d]; orig[d] = {x:c.getState_X(), y:c.getState_Y(), rotation:c.getState_Rotation(), layer:c.getState_Layer()}; out[d+'_top_r'+orig[d].rotation] = await rd(d); await eda.pcb_PrimitiveComponent.modify(c.getState_PrimitiveId(), {layer: 2}); out[d+'_bot_r'+orig[d].rotation] = await rd(d); await eda.pcb_PrimitiveComponent.modify(c.getState_PrimitiveId(), {rotation: 90}); out[d+'_bot_r90'] = await rd(d); await eda.pcb_PrimitiveComponent.modify(c.getState_PrimitiveId(), {layer: 1}); out[d+'_top_r90'] = await rd(d); await eda.pcb_PrimitiveComponent.modify(c.getState_PrimitiveId(), {x: orig[d].x, y: orig[d].y, rotation: orig[d].rotation, layer: orig[d].layer}); out[d+'_restored'] = await rd(d); const cc = map[d]; out[d+'_state'] = [cc.getState_X()/M, cc.getState_Y()/M, cc.getState_Rotation(), cc.getState_Layer()]; } return out;