Abstract构造函数
Readonlytype实体类型标识(固定为 "CUSTOM")
Abstract Readonlycustom自定义实体类型标识 子类必须设置此属性以标识具体的自定义实体类型 例如: "ANGLE_DIMENSION", "CUSTOM_HATCH" 等
Abstract Readonlycustom自定义实体显示名称 子类必须设置此属性以提供在属性栏中显示的名称 例如: customType为"ANGLE_DIMENSION"时,displayName为"角度标注" 属性栏显示时会自动截断过长内容并显示"..."
Protected_嵌套实体缓存 用于避免重复生成嵌套实体,提高渲染性能
DWG对象ID(句柄)- 从DWG文件导入时的唯一标识符 这个值不应该在克隆时复制,新创建的实体应该为空字符串
实体索引ID - 从1开始递增的唯一索引 用于在WebCAD格式中标识实体
是否处于脏状态,供渲染器增量更新
Optionalblock获取颜色索引
颜色索引值(256表示"随图层"颜色)
设置颜色索引
颜色索引值(256表示"随图层"颜色)
获取图层ID
图层ID字符串
设置图层ID
图层ID字符串
获取线型比例
线型比例因子
设置线型比例
线型比例因子
获取线宽
线宽值(-1=ByLayer, -2=ByBlock, >=0为具体值,单位为0.01mm)
设置线宽
线宽值(-1=ByLayer, -2=ByBlock, >=0为具体值)
获取实体存活状态
是否存活(true表示有效,false表示已删除)
设置实体存活状态
是否存活
获取原始扩展数据(用于序列化) 格式: { "1001": "AppName", "1000": "JSON字符串" }
原始xdata对象或undefined
设置原始扩展数据(从数据库加载时使用)
原始xdata对象
获取扩展数据的应用程序名(AppName)
AppName字符串,或undefined
获取所属文档
通过实体所在的块来获取文档对象。在CAD系统中, 实体总是属于某个块,而块又属于某个文档。
文档对象,如果无法获取则返回undefined
获取图层名称
根据实体的layerId从文档的图层集合中查找对应的图层名称。 如果找不到对应的图层,则返回默认图层"0"。
图层名称,默认为"0"
设置图层名称
根据图层名称查找对应的图层ID并设置给实体。 如果找不到指定的图层,则使用默认图层ID("0")。
注意:优先使用实体所属文档的图层列表,如果实体尚未添加到文档, 则使用 Engine.currentDoc 的图层列表。
图层名称
获取线型
返回实体当前的线型设置。线型控制线条的显示样式 (如实线、虚线、点划线等)。
线型名称
设置线型
设置实体的线型,支持标准CAD线型、常见别名和自定义线型。 输入的线型名称会被转换为大写进行匹配。
支持的线型:
线型名称
AbstractgetAbstractget炸开实体
将自定义实体分解为基本图元(线、圆弧等)。 用于分解命令和DXF导出。
子类可以重写此方法以提供自定义的炸开逻辑。 如果不重写,默认使用 getNestEnts() 返回的实体进行炸开。
炸开后的基本实体数组
Protected Abstractbuild构建嵌套实体(由子类实现)
返回组成该自定义实体的子实体,用于渲染显示。 与explode不同,这里返回的实体不需要独立存在, 主要用于渲染器绘制自定义实体的视觉效果。
子类必须实现此方法来生成实际的嵌套实体。
此方法的返回值会被基类缓存(通过 getNestEnts() 调用)。 当实体被修改(调用 setModified())时,缓存会自动清除。 下次调用 getNestEnts() 时会重新调用 buildNestEnts() 生成新的实体。
在实现此方法时,不允许克隆文本实体(MTextEnt/TextEnt)!
原因:文本实体的坐标是在渲染时动态计算和更新的。 如果克隆文本实体,会导致:
正确做法是直接将类内部的文本对象(如 _dimText)添加到实体数组中:
// 错误示例 - 不要这样做:
const textClone = this._dimText.clone();
entities.push(textClone);
// 正确示例:
if (this._dimText) {
this._dimText.fromDefaultProps(this);
entities.push(this._dimText);
}
嵌套实体数组
获取嵌套实体(带缓存)
返回组成该自定义实体的子实体,用于渲染显示。
此方法使用内部缓存来避免重复生成嵌套实体,提高渲染性能:
子类如需重写此方法(如需支持额外参数),应注意正确处理缓存逻辑。
嵌套实体数组
Protectedclear清除嵌套实体缓存
在需要强制重新生成嵌套实体时调用。 通常在setModified时会自动调用。
计算边界框
默认实现:根据 getNestEnts() 返回的子实体计算合并边界框。 子类可以重写此方法以提供自定义的边界框计算逻辑。
坐标系类型
边界框
Abstractclone转换为数据库格式
将实体序列化为可存储的数据格式。 默认实现会包含嵌套实体数据用于DWG导出。 子类可以重写此方法以提供自定义序列化逻辑。
数据库格式对象
将属性映射到数据库默认属性对象(重写父类方法)
除了调用父类的基础属性映射外,还会序列化嵌套实体用于DWG导出。
目标数据库属性对象
映射后的属性对象
AbstractfromAbstractget获取自定义实体的特定数据
子类应重写此方法返回需要序列化的自定义数据。
自定义实体数据对象
Abstractset从自定义实体数据恢复
子类应重写此方法从自定义数据恢复实体状态。
自定义实体数据对象
获取属性面板显示名称
返回在属性面板中显示的实体名称。 超过指定长度的内容将被截断并显示"..."
最大显示长度,默认为20
显示名称
夹点编辑
响应夹点拖拽操作。子类应根据gripId识别不同的夹点。
新的夹点位置
夹点标识符
标记实体已修改
重写父类方法,在标记修改时同时清除嵌套实体缓存。
移动变换
默认实现:移动所有夹点。子类可重写以实现自定义移动逻辑。
起始点
目标点
拉伸变换
拉伸起点
拉伸终点
拉伸框
清除扩展数据
检查是否有扩展数据
是否存在扩展数据
从默认属性对象复制属性
将指定的默认属性对象的所有相关属性复制到当前实体。 这通常用于创建新实体时应用默认设置。
默认属性对象,包含layer、colorIndex、lineType等属性
当前实例(支持链式调用)
设置为系统默认值
从全局CAD系统设置中获取当前的默认属性值并应用到实体。 这些默认值包括当前图层、当前颜色、当前线型等。
使用的全局变量:
从数据库默认属性对象设置属性
从数据库查询结果或序列化数据中恢复实体属性。 这个方法处理数据库中可能存在的空值和默认值情况。
数据库属性对象,包含layerId、colorIndex等属性
当前实例(支持链式调用)
释放实体占用的外部资源 子类如持有 PIXI 对象或大尺寸缓冲,应覆盖此方法清理
自定义实体基类
所有插件自定义实体都应继承此类,并实现所有抽象方法。