唯杰地图 logo唯杰地图
VJMAP
EN

builtin-draw

vjmapext/references/drawing/builtin-draw.md 6.1 KB166 行
原文

本文回答:内置绘图命令 —— 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。

六、常见坑

  1. 交互输入角度 vs SDK 角度单位不同:命令输入 度,SDK 用 弧度。
  2. CIRCLE 3P 三点共线:构造失败;命令栏给出错误提示。
  3. RECTPOLY F(圆角矩形)半径 > 半短边:圆角退化为半圆形。
  4. TextEnt 默认 height = 10:DrawingDefaults 没有 textHeight 字段(字段表见 serialize),改字高只能传 new TextEnt(pos, text, height) 第三参或事后改 t.height。
  5. TOHATCH 不是"点选封闭区域":它是把已选中的闭合实体转换为 HatchEnt(可转:Circle / 全椭圆 Ellipse / Arc / isClosed 的 Polyline 与 Spline;选择时 filter 已过滤不可转实体),转换后原实体被删除。没有 flood-fill 区域探测,也没有"无法找到封闭区域"提示——未选中可转实体时静默结束。HATCH 命令本身则是逐点点出多边形边界。

相关