命令基础
大约 2 分钟
命令基础
WebCAD 的命令系统允许你创建和注册自定义命令。
在线示例
| 示例 | 描述 | 链接 |
|---|---|---|
| 简单命令 | 命令基本结构示例 | 在线演示{target="_blank"} |
| 注册命令 | CommandRegistry 用法 | 在线演示{target="_blank"} |
| 带预览命令 | 预览绘制示例 | 在线演示{target="_blank"} |
| 状态机命令 | 多步骤命令示例 | 在线演示{target="_blank"} |
命令结构
命令类必须有 main() 方法作为入口:
// 命令类必须有main()方法作为入口
export class MyCommand {
async main(): Promise<void> {
// 命令逻辑
console.log('命令执行');
}
}注册命令
使用 CommandRegistry 注册命令:
import { CommandRegistry, CommandDefinition, CommandOptions } from 'vjcad';
// 创建命令选项
const options = new CommandOptions();
options.useAutoComplete = true; // 启用自动补全
// 注册命令
const cmdDef = new CommandDefinition(
'MYCMD', // 命令名(大写)
'我的命令描述', // 描述
MyCommand, // 命令类
options // 选项
);
CommandRegistry.regist(cmdDef);获取和执行命令
// 获取命令
const cmd = CommandRegistry.item('MYCMD');
// 执行命令
await Engine.editor.executerWithOp('MYCMD');CommandOptions
| 属性 | 类型 | 说明 |
|---|---|---|
useAutoComplete | boolean | 启用命令行自动补全 |
transparent | boolean | 透明命令(可在其他命令中调用) |
modal | boolean | 模态命令 |
CommandDefinition
| 属性 | 类型 | 说明 |
|---|---|---|
name | string | 命令名(大写) |
description | string | 命令描述 |
commandClass | Class | 命令类 |
options | CommandOptions | 命令选项 |
命令生命周期
命令分类
WebCAD 内置了多种类型的命令:
| 类型 | 示例 |
|---|---|
| 绘图命令 | LINE, CIRCLE, ARC, PLINE |
| 修改命令 | MOVE, COPY, ROTATE, SCALE |
| 查看命令 | ZOOM, PAN, REGEN |
| 编辑命令 | ERASE, TRIM, EXTEND |
| 属性命令 | LAYER, COLOR, LINETYPE |