builtin-draw
本文回答:内置绘图命令 —— LINE / PLINE / POINT / CIRCLE / ARC / ELLIPSE / SPLINE / FREEHAND / RECTPOLY / DLINE / REVCLOUD / HATCH / TEXT / MTEXT / DIMLINEAR / MLEADER / BLOCK / INSERT 等 40+ 命令。
一、命令一览表
绘图
| 命令 | 说明 | 多模式 |
|---|---|---|
LINE |
直线段 | |
PLINE |
多段线 | U 撤销 / C 闭合 |
POINT |
点 | |
CIRCLE |
圆 | 6 种:圆心+半径 / D 直径 / 2P 两点 / 3P 三点 / T 切切半径 / TT 三切点 |
ARC |
圆弧 | 10 种:三点 / SCE / SCA / SCL / SEA / SER / SED / CSE / CSA / CSL |
ELLIPSE |
椭圆 | 中心法 / A 轴端点法 |
SPLINE |
样条曲线 | |
FREEHAND |
自由手绘 | |
RECTPOLY |
矩形多段线 | P 正多边形 / F 圆角矩形 |
ARROW |
箭头 | |
HATCH |
填充图案(点选顶点画多边形,≥3 点回车成填充) | |
TOHATCH |
把选中的已有闭合实体转成填充(圆/整椭圆/弧/闭合多段线/闭合样条,原实体被删除) | |
DLINE |
双线 | W 宽 / B/S/R 封口 / C 闭合 |
REVCLOUD |
修订云线 | U 撤 / C 闭合 |
文字 / 标注
| 命令 | 说明 |
|---|---|
TEXT |
单行文字 |
TEXTEDIT |
编辑文字 |
MTEXT |
多行文字 |
DIMLINEAR |
线性标注 |
DIMALIGNED |
对齐标注 |
DIMANGLE |
角度标注 |
DIMRADIUS |
半径标注 |
MLEADER |
多重引线 |
块 / 其他
| 命令 | 说明 |
|---|---|
BLOCK |
创建块定义 |
INSERT |
插入块引用 |
PASTECLIP |
粘贴剪贴板 |
IMPORTSVG |
导入 SVG |
ZOOM |
缩放视图 |
二、启动
mapcadLayer.executeCommand('LINE');
mapcadLayer.executeCommand('CIRCLE');
mapcadLayer.executeCommand('RECTPOLY');
mapcadLayer.executeCommand('TEXT');
// ⚠️ TEXT 不消费 opts——v1.0.1 里只有 TEXTEDIT({entity})/INSERT({blockName})/DRAWORDER({action}) 读 opts
mapcadLayer.executeCommand('REVCLOUD');
三、多模式命令详解
CIRCLE 6 种
| 关键字 | 模式 | 步骤 | SDK 等价 |
|---|---|---|---|
| —— | 圆心 + 半径 | 圆心 → 半径点 | new CircleEnt(center, r) |
D |
圆心 + 直径 | 圆心 → D → 直径点 |
CircleEnt.fromCenterDiameter(c, d) |
2P |
两点(直径端点) | A → B | CircleEnt.fromTwoPoints(a, b) |
3P |
三点(外接圆) | 1 → 2 → 3 | CircleEnt.fromThreePoints(a, b, c) |
T |
TTR(相切相切半径) | 实体 1 → 实体 2 → 半径 | 内部解算 |
TT |
TTT(三切点) | 实体 1 → 2 → 3 | 内部解算 |
启动后命令栏显示:
指定圆心 [三点(3P) 两点(2P) 切点(T) 三切点(TT)]:
键入字母或点击弹出按钮切换。
ARC 10 种
每个字母模式对应命令内 drawSCE/drawSCA/… 实例方法(无公开 createArc_* API);默认三点为 draw3P,完整列表:
| 关键字 | 构造方式 |
|---|---|
| —— | 三点 |
SCE |
Start + Center + End |
SCA |
Start + Center + Angle(度数输入) |
SCL |
Start + Center + chord Length |
SEA |
Start + End + Angle |
SER |
Start + End + Radius |
SED |
Start + End + Direction |
CSE |
Center + Start + End |
CSA |
Center + Start + Angle |
CSL |
Center + Start + chord Length |
注意 SDK 内 *Angle 参数是弧度;命令交互输入的是度。
ELLIPSE
| 关键字 | 模式 | 步骤 |
|---|---|---|
| —— | 中心法 | 中心 → 长轴端 → 短轴距离 |
A |
轴端点法 | 长轴端 1 → 长轴端 2 → 短轴距离 |
RECTPOLY
| 关键字 | 模式 | 步骤 |
|---|---|---|
| —— | 矩形 | 角点 1 → 角点 2 |
P |
正多边形 | 边数 → 中心 → 外接圆半径点 |
F |
圆角矩形 | 圆角半径 → 角点 1 → 角点 2 |
圆角矩形输出 8 顶点闭合 PolylineEnt(含 bulge 弧段),整体 1 个实体。
PLINE
绘制中任意时刻:
U撤销上一个顶点(可连撤)C闭合
DLINE(双线)
关键字:
W宽度B/S/R封口(butt / square / round)U撤 /C闭合
REVCLOUD(修订云线)
沿用户指定折线,沿线画一连串半圆弧。关键字:
U撤 /C闭合- 弧长由
RevcloudCommand.arcLength(静态属性,CAD 单位,默认 50)控制——drawingDefaults上没有 revcloud 字段
四、交互与 SDK 的对应
| 交互命令 | 等价 SDK |
|---|---|
LINE |
new LineEnt(p1, p2) + mapcadLayer.addEntity |
PLINE |
new PolylineEnt(pts, closed/* boolean */) |
CIRCLE |
new CircleEnt(center, r) 或 CircleEnt.fromTwoPoints/ThreePoints |
TEXT |
new TextEnt(pos, text, height)(height 是数字;对齐改 t.textAlignment 枚举) |
HATCH |
new HatchEnt(outerPoints),再设 .patternName/.patternScale 属性 |
参见 entity/* 系列。
五、编辑 / 标注命令
编辑命令见 builtin-edit;标注命令参见 entity/dimensions 与 entity/leader。
六、常见坑
- 交互输入角度 vs SDK 角度单位不同:命令输入 度,SDK 用 弧度。
CIRCLE 3P三点共线:构造失败;命令栏给出错误提示。RECTPOLY F(圆角矩形)半径 > 半短边:圆角退化为半圆形。TextEnt默认height = 10:DrawingDefaults没有textHeight字段(字段表见 serialize),改字高只能传new TextEnt(pos, text, height)第三参或事后改t.height。- TOHATCH 不是"点选封闭区域":它是把已选中的闭合实体转换为 HatchEnt(可转:Circle / 全椭圆 Ellipse / Arc /
isClosed的 Polyline 与 Spline;选择时filter已过滤不可转实体),转换后原实体被删除。没有 flood-fill 区域探测,也没有"无法找到封闭区域"提示——未选中可转实体时静默结束。HATCH命令本身则是逐点点出多边形边界。
相关
- 命令调用 → execute-command
- 自定义命令 → custom-command
- 圆角矩形 → entity/line-polyline