> **本文回答**：高亮 `Engine.highLightEntities([...])`，清除 `Engine.clearHighLight()`；底层等价 `Engine.pcanvas.highLightEntities(...)` / `Engine.pcanvas.clearHighLight()`。单实体高亮 `Engine.pcanvas.drawControl.drawHighLightEntity(ent)`。高亮是**临时视觉效果**，不影响实体属性 / 序列化。

## 一、最小用法

```js
Engine.highLightEntities(group1);     // 高亮一组
// ...
Engine.clearHighLight();              // 清除
```

MCP 参考：`vjcad/example/edit/09highlight.js`。

## 二、按选中实体高亮

```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（命令内常用）

```js
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`
