事件处理
大约 1 分钟
事件处理
WebCAD 事件系统,监听实体、文档、命令等状态变化。
在线示例
| 示例 | 描述 | 链接 |
|---|---|---|
| 实体添加事件 | EntityAdded 事件监听 | 在线演示{target="_blank"} |
| 实体修改事件 | EntityModified 事件监听 | 在线演示{target="_blank"} |
| 选择变化事件 | SelectionChanged 事件监听 | 在线演示{target="_blank"} |
| 命令事件 | CommandStarted 和 CommandEnded 事件 | 在线演示{target="_blank"} |
| 文档事件 | DocumentOpened 和 DocumentSaved 事件 | 在线演示{target="_blank"} |
核心 API
事件监听
const { Engine, CadEvents } = vjcad;
// 监听实体添加事件
Engine.eventManager.on(CadEvents.EntityAdded, (args) => {
const entity = args.entity;
console.log("实体已添加:", entity.type);
});
// 监听实体修改事件
Engine.eventManager.on(CadEvents.EntityModified, (args) => {
console.log("实体已修改:", args.entity.id);
});
// 监听选择变化事件
Engine.eventManager.on(CadEvents.SelectionChanged, (args) => {
console.log("选择集变化:", args.entities.length);
});可取消的事件
某些事件可以在操作执行前拦截并取消:
// 监听实体添加前事件(可取消)
Engine.eventManager.on(CadEvents.EntityAdding, (args) => {
if (someCondition) {
args.cancel = true; // 取消添加操作
}
});命令事件
// 命令开始
Engine.eventManager.on(CadEvents.CommandStarted, (args) => {
console.log("命令开始:", args.commandName);
});
// 命令结束
Engine.eventManager.on(CadEvents.CommandEnded, (args) => {
console.log("命令结束:", args.commandName);
});移除事件监听
// 移除特定事件监听
const handler = (args) => { /* ... */ };
Engine.eventManager.on(CadEvents.EntityAdded, handler);
Engine.eventManager.off(CadEvents.EntityAdded, handler);常用事件类型
| 事件 | 说明 |
|---|---|
EntityAdding | 实体添加前(可取消) |
EntityAdded | 实体添加后 |
EntityModifying | 实体修改前(可取消) |
EntityModified | 实体修改后 |
EntityErasing | 实体删除前(可取消) |
EntityErased | 实体删除后 |
SelectionChanged | 选择集变化 |
CommandStarted | 命令开始 |
CommandEnded | 命令结束 |
DocumentOpened | 文档打开 |
DocumentSaved | 文档保存 |