highlight
本文回答:高亮
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