CAD 实体主题 (vjmapext)
本文回答:vjmapext CAD 实体总览 —— 16+ 实体类型、公共生命周期、基础样式。
vjmapext 在 vjmap 之上提供面向 CAD 的实体系统:点、线、多段线、圆、弧、椭圆、样条、填充、文字、块、标注、引线、云线,以及用户自定义实体。所有实体均继承 EntityBase,拥有统一的样式、变换、图层、自定义属性和序列化能力。
子项索引
实体类型一览
基础几何
| 类名 |
注册名 |
说明 |
PointEnt |
POINT |
单个坐标点 |
LineEnt |
LINE |
直线段(起点 + 终点) |
PolylineEnt |
PLINE |
多段线 / 多边形,支持 bulge 弧段 |
CircleEnt |
CIRCLE |
圆 |
ArcEnt |
ARC |
圆弧 |
EllipseEnt |
ELLIPSE |
椭圆 / 椭圆弧 |
SplineEnt |
SPLINE |
样条曲线 |
填充与文字
| 类名 |
注册名 |
说明 |
HatchEnt |
HATCH |
填充区域(内外环 / 图案) |
TextEnt |
TEXT |
单行文字 |
MTextEnt |
MTEXT |
多行文字 |
块与引用
| 类名 |
注册名 |
说明 |
BlockDef |
— |
块定义(实体集合) |
BlockRefEnt |
INSERT |
块引用 |
标注与引线
| 类名 |
注册名 |
说明 |
LinearDimEnt |
DIMLINEAR |
水平 / 垂直线性标注 |
AlignedDimEnt |
DIMALIGNED |
对齐标注 |
AngleDimEnt |
DIMANGLE |
角度标注 |
RadialDimEnt |
DIMRADIUS |
半径标注 |
MLeaderEnt |
MLEADER |
多重引线标注 |
所有内置实体通过 MapCadLayer.registerBuiltins() 自动注册。
实体生命周期
new LineEnt(...)
↓ 设置属性
addEntity(entity)
↓ 渲染
interact (move / rotate / gripEdit)
↓ changed() / styleChanged()
deleteEntity(id) 或 store.delete(id)
- 创建:
new LineEnt([0,0], [100,0])
- 配置:
entity.color = 0xff0000; entity.lineWidth = 2;
- 添加:
mapcadLayer.addEntity(entity)
- 编辑:拖夹点 / 变换 → 回调里调
entity.changed()
- 删除:
mapcadLayer.deleteEntity(entity.id)
最小代码
const { MapCadLayer, LineEnt, CircleEnt } = vjmapext;
const mapcadLayer = new MapCadLayer();
map.addControl(mapcadLayer); // addControl 即 onAdd
const line = new LineEnt([0, 0], [500, 500]);
line.color = 0xff4444;
line.lineWidth = 2;
mapcadLayer.addEntity(line);
const circle = new CircleEnt([250, 250], 200);
circle.color = 0x4488ff;
circle.fillColor = 0x4488ff;
circle.fillOpacity = 0.3;
mapcadLayer.addEntity(circle);
主题级 Top 3 陷阱
- 颜色是 0x 十六进制整数:
0xff0000,不是 CSS 字符串。
- 角度单位不一致:
ArcEnt/EllipseEnt.startAngle、rotate() 变换方法用弧度;TextEnt.rotation 属性存的是度(内部 rotation += rad*180/π)。
- 修改属性后要调 changed() / styleChanged():不然不重绘;改几何用
changed(),只改颜色用 styleChanged() 更快。
相关主题