唯杰地图 logo唯杰地图
VJMAP
EN

highlight

vjcad/references/edit/highlight.md 2.0 KB60 行
原文

本文回答:高亮 Engine.highLightEntities([...]),清除 Engine.clearHighLight();底层等价 Engine.pcanvas.highLightEntities(...) / Engine.pcanvas.clearHighLight()。单实体高亮 Engine.pcanvas.drawControl.drawHighLightEntity(ent)。高亮是临时视觉效果,不影响实体属性 / 序列化。

一、最小用法

Engine.highLightEntities(group1);     // 高亮一组
// ...
Engine.clearHighLight();              // 清除

MCP 参考:vjcad/example/edit/09highlight.js。

二、按选中实体高亮

const canvas = document.getElementById('map');
canvas.addEventListener('click', () => {
  const selected = Engine.ssGetFirst();
  if (selected.length > 0) {
    Engine.highLightEntities(selected);
  } else {
    Engine.clearHighLight();
  }
});

MCP 参考:vjcad/example/edit/09highlight.js。

三、底层 API(命令内常用)

Engine.pcanvas.highLightEntities(entities);
Engine.pcanvas.clearHighLight();

// 单实体(命令循环里常用)
Engine.pcanvas.drawControl.drawHighLightEntity(entity);
Engine.pcanvas.redraw();

MCP 参考:vjcad/doc/selection/entity-selection.md(OffsetCommand / TrimCommand 用法)。

四、Engine vs Engine.pcanvas API 对比

Engine 顶层 pcanvas 同名 推荐
Engine.highLightEntities Engine.pcanvas.highLightEntities 业务代码用 Engine.*
Engine.clearHighLight Engine.pcanvas.clearHighLight 同上

两者都在示例与文档中使用,行为一致。命令内部 / 框架代码常见 pcanvas.* 形式。

反例

  • 高亮一组实体后做了批量编辑(move/rotate),但忘记 clearHighLight:保留高亮容易误导用户。
  • 在命令的 try 块里只 catch 错误,没在 finally 中 clearHighLight:取消命令后高亮残留。

参考(官方文档 MCP)

  • 文档:vjcad/doc/edit/index.md、vjcad/doc/selection/entity-selection.md
  • 示例:vjcad/example/edit/09highlight.js