唯杰地图 logo唯杰地图
VJMAP
EN

transparency-visibility

vjcad/references/property/transparency-visibility.md 2.4 KB69 行
原文

本文回答:透明度走 entity.transpMgr.setTp100(0~90)(0 不透明;>90 一律钳为 90,没有全透明,要完全看不见用 visible=false),随层用 entity.transpMgr.setValue(-1);可见性用 entity.visible = false / true,对应 DXF 60,修改后必须 Engine.regen()。

一、透明度

const c = new CircleEnt([30, 50], 25);
c.setDefaults();
c.color = 1;
c.transpMgr.setTp100(50);     // 50% 透明
Engine.addEntities(c);

// 随层透明度
c.transpMgr.setValue(-1);

MCP 参考:vjcad/example/property/05transparency.js。

值 含义
setTp100(0) 不透明
setTp100(50) 半透明
setTp100(90) 最大透明度(setTp100(100) 也被钳为 90,仍看得见)
setValue(-1) ByLayer(随层)

二、可见性(实体级)

const line = new LineEnt([0, 0], [100, 0]);
line.setDefaults();
line.color = 5;
line.visible = false;          // 隐藏
Engine.addEntities(line);
Engine.regen();                // ★ 必须重绘

// 切换
line.visible = true;
Engine.regen();

MCP 参考:vjcad/example/property/08visibility.js。

特点(DXF Group Code 60):

  • 不渲染、不可框选/点选、不提供捕捉点
  • Ctrl + A 全选可以选中
  • 数据序列化时保留(DWG 导出 / 重新打开仍然 invisible)

三、实体可见性 vs 图层可见性

概念 控制范围 属性
实体可见性 单个实体 entity.visible
图层可见性 整个图层 layer.layerOn
图层冻结 整个图层 + 重生成性能 layer.isFrozen
图层锁定 整个图层(可见但不可选) layer.isLocked

参见 layer/visibility-frozen-locked。

反例

  • entity.transpMgr.setTp100(0.5) 把 0100 当 01:实际是 百分比,有效范围 0~90(>90 钳为 90);想"全透明隐藏"用 visible = false。
  • entity.visible = false 后没 Engine.regen():屏幕仍能看到。
  • 用 entity.visible 做"批量隐藏":图层级 layer.layerOn = false 性能更好;冻结 isFrozen = true 更省。

参考(官方文档 MCP)

  • 文档:vjcad/doc/property/index.md
  • 示例:vjcad/example/property/05transparency.js、vjcad/example/property/08visibility.js