Home > PCB_Event > addPrimitiveEventListener
PCB_Event.addPrimitiveEventListener() method
此 API 当前处于 BETA 预览状态,希望得到开发者的反馈。它的任何功能都可能在接下来的开发进程中被修改,请不要将它用于任何正式环境。
新增图元事件监听
签名
typescript
function 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;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
参数名
参数 | 类型 | 描述 |
|---|---|---|
id | string | 事件 ID,用以防止重复注册事件 |
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
备注
注意:本接口仅扩展有效,在独立脚本环境内调用将始终 throw Error
示例
javascript
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);1
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
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