overview
本文回答:实体的"属性"分两类:① 对象属性
color / layer / lineType / lineTypeScale / lineWeight / visible / transpMgr;② 默认属性setDefaults()套用Engine.CECOLOR / CELTYPE / CELTSCALE+Engine.currentDoc.CLAYER(Engine.CLAYER不存在),并把透明度重置为 ByLayer,不碰线宽;不调用时为构造默认color=256 / lineType='ByLayer' / lineTypeScale=1 / lineWeight=-1 / 图层 '0';扩展数据走entity.setExtData(appName, dataObj)与entity.extData / hasExtData / clearExtData。
一、按子主题挑
| 想做的 | 子主题 |
|---|---|
| 颜色(ACI / RGB) / 线型 / 线宽 | color-linetype |
| 透明度 / 可见性 | transparency-visibility |
setDefaults() 套用系统默认 |
set-defaults |
| 扩展数据 XData(DWG 兼容) | xdata |
二、最常用属性速查
ent.color = 1; // ACI
ent.color = 0x1000000 + 0xFF8000; // RGB
ent.layer = '墙体'; // 图层不存在时静默落到 '0',先 Engine.createLayer
ent.lineType = 'HIDDEN';
ent.lineTypeScale = 1.5;
ent.lineWeight = 50; // = 0.50mm;-1 = ByLayer
ent.visible = false; // DXF 60,对实体级别隐藏
ent.transpMgr.setTp100(50); // 透明度 0~90(>90 钳为 90,完全隐藏用 visible=false)
ent.transpMgr.setValue(-1); // ByLayer 透明度
ent.setExtData('MyApp', { ... }); // 扩展数据
MCP 参考:vjcad/example/property/01color.js ~ 08visibility.js、vjcad/doc/property/index.md。
三、修改属性后的刷新策略
| 改了... | 是否需要 Engine.regen() |
|---|---|
color / lineType / lineWeight 等绘制属性 |
不会自动:setter 只 setModified() 标脏,改完须 Engine.regen() |
visible |
必须 Engine.regen() |
move/rotate/scale/mirror 几何变换 |
必须 Engine.regen() |
setExtData / 业务字段 |
不影响显示,可不刷新 |
参考(官方文档 MCP)
- 文档:
vjcad/doc/property/index.md - 示例:
vjcad/example/property/01color.js~08visibility.js