CommandRegistry API
Less than 1 minute
CommandRegistry API
CommandRegistry registers, looks up, and runs commands. Access via cadLayer.commandRegistry.
Methods
register
register(name: string, cls: CommandClass, description?: string): voidRegister a command.
| Parameter | Type | Description |
|---|---|---|
name | string | Command name (case-insensitive) |
cls | CommandClass | Command class with static main |
description | string | Optional description for UI |
Example:
class DrawStar {
static async main(ctx: CommandContext, opts?: Record<string, any>) {
const result = await ctx.inputManager.getPoint({ prompt: '指定中心点' });
if (result.status !== InputStatusEnum.OK) return;
// draw star...
}
}
cadLayer.commandRegistry.register('star', DrawStar, '绘制星形');execute
execute(name: string, opts?: Record<string, any>): Promise<void>Run a registered command.
| Parameter | Type | Description |
|---|---|---|
name | string | Command name |
opts | Record<string, any> | Optional arguments |
repeatLast
repeatLast(): Promise<void>Repeat the last command.
lastCommandName
readonly lastCommandName: string | undefinedName of the last executed command.
CommandClass
interface CommandClass {
main(ctx: CommandContext, opts?: Record<string, any>): Promise<void>;
}Commands implement static main with CommandContext and optional options.
CommandContext
Context injected when a command runs.
interface CommandContext {
store: EntityStore;
inputManager: InputManager;
eventBus: EventBus;
coordMapper: CoordMapper;
renderPipeline: RenderPipeline;
previewManager: PreviewManager;
gripManager: GripManager;
drawingDefaults: DrawingDefaults;
undoManager: UndoManager;
blocks: Blocks;
map: vjmap.Map;
dimReactorManager: DimReactorManager;
}| Property | Type | Description |
|---|---|---|
store | EntityStore | Entity store |
inputManager | InputManager | Input |
eventBus | EventBus | Event bus |
coordMapper | CoordMapper | Coordinates |
renderPipeline | RenderPipeline | Rendering |
previewManager | PreviewManager | Previews |
gripManager | GripManager | Grips |
drawingDefaults | DrawingDefaults | Defaults |
undoManager | UndoManager | Undo/redo |
blocks | Blocks | Blocks |
map | vjmap.Map | Map |
dimReactorManager | DimReactorManager | Dimension reactors |
Full example:
class DrawCircleCmd {
static async main(ctx: CommandContext) {
const centerResult = await ctx.inputManager.getPoint({
prompt: '指定圆心',
});
if (centerResult.status !== InputStatusEnum.OK) return;
const radiusResult = await ctx.inputManager.getReal({
prompt: '输入半径',
defaultValue: 10,
});
if (radiusResult.status !== InputStatusEnum.OK) return;
const circle = new CircleEnt();
circle.center = centerResult.point!;
circle.radius = radiusResult.value!;
ctx.store.add(circle);
}
}
cadLayer.commandRegistry.register('mycircle', DrawCircleCmd, '绘制圆');