属性操作
大约 3 分钟
属性操作
实体属性的设置与获取,包括颜色、图层、线型、线宽、透明度等。
在线示例
| 示例 | 描述 | 链接 |
|---|---|---|
| 颜色设置 | color 属性、颜色索引和 RGB 真彩色 | 在线演示{target="_blank"} |
| 图层设置 | layer 属性用法 | 在线演示{target="_blank"} |
| 线型设置 | lineType 和 lineTypeScale 用法 | 在线演示{target="_blank"} |
| 线宽设置 | lineWeight 属性、标准线宽值、图层线宽、LWDISPLAY 显示开关 | 在线演示{target="_blank"} |
| 透明度设置 | transpMgr 用法 | 在线演示{target="_blank"} |
| 应用默认值 | setDefaults 方法用法 | 在线演示{target="_blank"} |
| 扩展数据 | 为实体附加自定义数据,支持导出到 DWG 并重新加载 | 在线演示{target="_blank"} |
| 可见性 | visible 属性(DXF 60),控制实体级别的显示/隐藏 | 在线演示{target="_blank"} |
核心 API
颜色设置
WebCAD 支持两种颜色表示方式:
// 索引颜色 (1-255)
entity.color = 1; // 红色
entity.color = 2; // 黄色
entity.color = 3; // 绿色
// RGB 真彩色
entity.color = 0x1000000 + 0xFF8000; // 橙色 (RGB: 255, 128, 0)线宽设置
线宽值单位为 0.01mm,例如 25 表示 0.25mm。
标准线宽值:
| 值 | 宽度 | 值 | 宽度 | 值 | 宽度 |
|---|---|---|---|---|---|
| 0 | 0.00mm(细线) | 50 | 0.50mm | 140 | 1.40mm |
| 5 | 0.05mm | 53 | 0.53mm | 158 | 1.58mm |
| 9 | 0.09mm | 60 | 0.60mm | 200 | 2.00mm |
| 13 | 0.13mm | 70 | 0.70mm | 211 | 2.11mm |
| 15 | 0.15mm | 80 | 0.80mm | -1 | 随层 (ByLayer) |
| 18 | 0.18mm | 90 | 0.90mm | -2 | 随块 (ByBlock) |
| 20 | 0.20mm | 100 | 1.00mm | -3 | 默认 (0.25mm) |
| 25 | 0.25mm | 106 | 1.06mm | ||
| 30 | 0.30mm | 120 | 1.20mm | ||
| 35 | 0.35mm | ||||
| 40 | 0.40mm |
设置实体线宽:
const line = new LineEnt([0, 0], [100, 0]);
line.setDefaults();
line.lineWeight = 50; // 0.50mm
Engine.addEntities(line);
// 特殊值
line.lineWeight = -1; // 随层:继承所在图层的线宽
line.lineWeight = -2; // 随块:在块引用中继承块的线宽
line.lineWeight = -3; // 默认:使用 LWDEFAULT 系统变量值 (0.25mm)设置图层线宽:
doc.layers.add("粗线层", {
color: 1,
lineWeight: 100 // 1.00mm
});
// 实体设为 ByLayer 即可继承图层线宽
line.lineWeight = -1;
line.layer = "粗线层";线宽显示开关:
需要 LWDISPLAY 和 SHOW_LINEWEIGHT 同时开启才会渲染线宽。
// LWDISPLAY: 文档级开关,保存到 DWG 文件
Engine.currentDoc.docEnv.LWDISPLAY = true; // 开启
Engine.currentDoc.docEnv.LWDISPLAY = false; // 关闭
// SHOW_LINEWEIGHT: 前端全局开关,不影响 DWG 导出
SystemConstants.SHOW_LINEWEIGHT = true; // 开启
SystemConstants.SHOW_LINEWEIGHT = false; // 关闭
// 切换后需要重新渲染
Engine.regen(true);命令行切换:
在命令行输入 LWDISPLAY(别名 LW)可交互式切换线宽显示:
命令: LW
当前线宽显示 LWDISPLAY = OFF
线宽显示 [ON/OFF] <ON>: ← 直接回车即切换为 ON
LWDISPLAY 设置为 ON该命令同时设置 LWDISPLAY 和 SHOW_LINEWEIGHT,并自动刷新画面。
LWDISPLAY vs SHOW_LINEWEIGHT
- LWDISPLAY 是 DWG 标准的系统变量,会随文档保存/导出,等价于 AutoCAD 状态栏的线宽按钮
- SHOW_LINEWEIGHT 是前端渲染开关,不保存到文件,适合 viewer 模式下想始终隐藏线宽的场景
- LWDISPLAY 命令(别名
LW)同时控制两者,提供最便捷的切换方式
应用默认属性
创建实体后,通常需要调用 setDefaults() 应用系统默认属性:
const line = new LineEnt([0, 0], [100, 100]);
line.setDefaults(); // 应用当前图层、颜色、线型等默认值
// 自定义属性需在 setDefaults() 之后设置
line.color = 1;
line.layer = "标注层";
Engine.addEntities(line);可见性
控制实体级别的显示/隐藏(对应 DXF Group Code 60):
// 隐藏实体
entity.visible = false;
// 显示实体
entity.visible = true;
// 读取可见性
console.log(entity.visible); // true 或 false与图层可见性的区别
- 图层可见性(
layer.layerOn):控制整个图层的显示,影响该图层上的所有实体 - 实体可见性(
entity.visible):控制单个实体的显示,不影响同图层的其他实体
扩展数据 (XData)
为实体附加自定义数据:
// 设置扩展数据
entity.xdata = {
appName: "MyApp",
data: { key: "value" }
};
// 获取扩展数据
const xdata = entity.xdata;