EntityBase API
大约 3 分钟
EntityBase API
EntityBase 是所有实体的抽象基类。不可直接实例化,需使用具体子类(LineEnt、CircleEnt 等)。
属性
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
id | string | 自动生成 | 唯一标识符 |
type | string | — | 实体类型标识(由子类设置) |
color | number | 0x00ff00 | 线条颜色(24 位 RGB 整数) |
fillColor | number | 0 | 填充颜色 |
fillOpacity | number | 0 | 填充不透明度(0–1) |
lineWidth | number | 1 | 线宽(像素) |
lineType | string | 'Continuous' | 线型名称 |
ltScale | number | 1 | 线型缩放比例 |
layer | string | '0' | 所属图层名称 |
visible | boolean | true | 是否可见 |
rotation | number | 0 | 旋转角度(弧度) |
editable | boolean | true | 是否可编辑 |
selectableInReadonly | boolean | false | 浏览模式下是否可选择 |
minDisplayLevel | number | undefined | undefined | 最小显示缩放级别 |
maxDisplayLevel | number | undefined | undefined | 最大显示缩放级别 |
dynamic | boolean | false | 是否为动态实体(每帧重绘) |
方法
boundingBox
boundingBox(): BBox计算实体的轴对齐包围盒。
返回: BBox — [minX, minY, maxX, maxY] 四元组。
toGeoJSON
toGeoJSON(): GeoJSON.Feature[]将实体转换为 GeoJSON Feature 数组,供 vjmap 渲染使用。
返回: Feature[]。
clone
clone(): EntityBase深拷贝实体(生成新 ID)。
返回: 新的实体实例。
示例:
const copy = line.clone();
copy.color = 0xff0000;
cadLayer.addEntity(copy);translate
translate(dx: number, dy: number): void平移实体。
| 参数 | 类型 | 说明 |
|---|---|---|
dx | number | X 方向位移 |
dy | number | Y 方向位移 |
rotate
rotate(angle: number, cx?: number, cy?: number): void绕指定中心点旋转实体。
| 参数 | 类型 | 说明 |
|---|---|---|
angle | number | 旋转角度(弧度) |
cx | number | 旋转中心 X(省略时使用实体中心) |
cy | number | 旋转中心 Y |
scale
scale(sx: number, sy: number, cx?: number, cy?: number): void缩放实体。
| 参数 | 类型 | 说明 |
|---|---|---|
sx | number | X 方向缩放因子 |
sy | number | Y 方向缩放因子 |
cx | number | 缩放中心 X(省略时使用实体中心) |
cy | number | 缩放中心 Y |
mirror
mirror(p1: Point2DLike, p2: Point2DLike): void以两点确定的直线为轴做镜像变换。
| 参数 | 类型 | 说明 |
|---|---|---|
p1 | Point2DLike | 镜像轴起点 |
p2 | Point2DLike | 镜像轴终点 |
changed
changed(): void标记实体几何已变更,触发重新渲染。修改几何属性后应调用此方法。
styleChanged
styleChanged(): void标记实体样式已变更,触发样式重绘。修改颜色、线型等属性后应调用此方法。
setModified
setModified(): void标记实体已被修改(包含几何与样式)。
hasDisplayLevelFilter
hasDisplayLevelFilter(): boolean返回: 实体是否设置了显示层级过滤。
自定义属性
setCustomProperty
setCustomProperty(key: string, value: any, type?: CustomPropertyType): void设置自定义扩展属性。
| 参数 | 类型 | 说明 |
|---|---|---|
key | string | 属性键名 |
value | any | 属性值 |
type | CustomPropertyType | 可选,属性类型提示 |
getCustomProperty
getCustomProperty(key: string): CustomPropertyValue | undefined返回: 指定键的自定义属性值,不存在时返回 undefined。
removeCustomProperty
removeCustomProperty(key: string): void移除指定的自定义属性。
getAllCustomProperties
getAllCustomProperties(): Record<string, CustomPropertyValue>返回: 所有自定义属性的键值对。
示例:
entity.setCustomProperty('楼层', '3F', 'string');
entity.setCustomProperty('面积', 120.5, 'number');
const floor = entity.getCustomProperty('楼层');
const all = entity.getAllCustomProperties();相关类型
BBox
type BBox = [minX: number, minY: number, maxX: number, maxY: number];GripPointDef
interface GripPointDef {
point: Point2D;
type: GripType;
onMove: (newPoint: Point2D) => void;
}GripType
type GripType = 'vertex' | 'edge' | 'center' | 'control' | 'custom';GripShape
type GripShape = 'square' | 'circle' | 'diamond' | 'triangle';PropertyInfo
用于属性面板显示的属性元数据。
VertexListData
顶点列表数据结构,用于多段线等实体。
CustomPropertyType
type CustomPropertyType = 'string' | 'number' | 'boolean' | 'json';CustomPropertyValue
interface CustomPropertyValue {
value: any;
type: CustomPropertyType;
}