overview
本文回答:vjcad 用户输入有 8 类——
getPoint / getSelections / getEntity / getString / getInteger / getReal / getKeyword / getCorner(矩形角点拖拽),全部await返回带status的结果对象(多数是{ status, value, stringResult, ... };getEntity例外,返回{ status, pickedEntity, pickedPoint, stringResult },没有value),必须以result.status === InputStatusEnum.OK判断成功;对应的选项类是PointInputOptions / SelectionInputOptions / SelectionSetInputOptions / StringInputOptions / IntegerInputOptions / RealInputOptions / KeywordInputOptions / CornerInputOptions。
一、按子主题挑
| 想做的 | 子主题 |
|---|---|
| 取一个点 / 多个点 | get-point |
| 带基点取点(橡皮筋 / 自定义预览) | base-point |
| 取多个实体(框选 / 点选) | get-selections |
| 取单个实体 + 拾取点 | get-entity |
| 取字符串 / 整数 / 实数 / 关键字 | get-string-number |
二、调用方式(两种等价)
// 方式 A:直接函数(包级导出)
import { getPoint, getSelections, getEntity, getReal, getInteger } from 'vjcad';
const r = await getPoint(options);
// 方式 B:通过 Engine
const r2 = await Engine.getPoint(options);
const r3 = await Engine.getSelections(options);
const r4 = await Engine.getReal(options);
const r5 = await Engine.getInteger(options);
const r6 = await Engine.getString(options);
const r7 = await Engine.getKeyword(options);
MCP 参考:vjcad/doc/command/api-reference.md、vjcad/example/input/*.js。
三、InputStatusEnum(按 vjcad/doc/command/api-reference.md)
| 值 | 名称 | 说明 |
|---|---|---|
5100 |
OK |
成功获取输入 |
-5002 |
Cancel |
用户取消 |
-5005 |
Keyword |
用户输入关键字 |
3 |
EnterOrSpace |
用户按回车或空格(实际只有 getEntity 返回;其他输入的空回车见 get-string-number) |
4 |
IsNumber |
用户输入数字 |
5000 |
None |
无输入 |
-5001 |
Error |
发生错误 |
这些是文档里给的数值。一般写代码用
result.status === InputStatusEnum.OK,不要直接对比数字字面量。
四、Top 输入坑
- 没判
Cancel:用户按 Esc 后还继续创建实体。 result.value当 number 用:getPoint的value是Point2D;想要数字得用getReal / getInteger。- 取点的
callback把canvasPt当世界坐标:必须Engine.canvasToWcs(canvasPt)转换。
参考(官方文档 MCP)
- 文档:
vjcad/doc/command/api-reference.md、vjcad/doc/command/index.md - 示例:
vjcad/example/input/01getpoint.js~06getkeyword.js