Home > PCB_Event > addPrimitiveEventListener
PCB_Event.addPrimitiveEventListener() method
This API is provided as a beta preview for developers and may change based on feedback that we receive. Do not use this API in a production environment.
Add a primitive event listener
Signature
public addPrimitiveEventListener(id: string, eventType: 'all' | EPCB_PrimitiveEventType, callFn: (eventType: EPCB_PrimitiveEventType, props: [{ primitiveId: string; primitiveType: EPCB_PrimitiveType; net?: undefined | string; designator?: undefined | string; parentComponentPrimitiveId?: undefined | string; parentComponentDesignator?: undefined | string }]) => void | Promise<void>, onlyOnce?: boolean): void;Parameters
Parameter | Type | Description |
|---|---|---|
id | string | Event ID, used to prevent duplicate event registration |
eventType | 'all' | EPCB_PrimitiveEventType | Event type |
callFn | (eventType: EPCB_PrimitiveEventType, props: [{ primitiveId: string; primitiveType: EPCB_PrimitiveType; net?: undefined | string; designator?: undefined | string; parentComponentPrimitiveId?: undefined | string; parentComponentDesignator?: undefined | string }]) => void | Promise<void> | The callback function triggered when the event fires |
onlyOnce | boolean | (Optional) Whether to listen only once |
Returns
void
Remarks
Note: This API is only valid for extensions. Calling it in a standalone script environment will always throw Error
Example
const listenerId = '嘉立创示例_primitive_event';
const events = [];
// 1. 注册图元事件监听,eventType 用 'all' 接收全部图元事件
eda.pcb_Event.addPrimitiveEventListener(
listenerId,
'all',
(eventType, props) => {
events.push({ eventType, primitiveType: props?.[0]?.primitiveType });
},
false
);
// 2. 创建一个测试焊盘,触发图元 add 事件
const pad = await eda.pcb_PrimitivePad.create(1, '1', 5000, 3000, 0, ['ELLIPSE', 60, 60], '', null, 0, 0, 0, false, 0);
await new Promise(r => setTimeout(r, 500));
// 3. 删除测试焊盘,再触发一次图元删除事件(同时清理测试图元)
await eda.pcb_PrimitivePad.delete([pad.getState_PrimitiveId()]);
await new Promise(r => setTimeout(r, 500));
// 4. 观察两次操作分别触发的事件
console.log('events:', JSON.stringify(events));
// 5. 清理监听
const removed = eda.pcb_Event.removeEventListener(listenerId);
console.log('removed:', removed);2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27