> **本文回答**：显示顺序两条路：① 命令 `ENTDRAWFRONT / ENTDRAWBACK / LAYDRAWFRONT / LAYDRAWBACK`；② 直接操作 `Engine.currentSpace.items`（数组末尾 = 最前），改完 `Engine.pcanvas.regen(true)`。

## 一、命令版

| 命令 | 含义 |
|---|---|
| `ENTDRAWFRONT` | 选中图形置于最前 |
| `ENTDRAWBACK`  | 选中图形置于最后 |
| `LAYDRAWFRONT` | 选中图形所在图层整体置于最前 |
| `LAYDRAWBACK`  | 选中图形所在图层整体置于最后 |

```js
Engine.editor.executerWithOp('ENTDRAWFRONT');
Engine.editor.executerWithOp('ENTDRAWBACK');
Engine.editor.executerWithOp('LAYDRAWFRONT');
Engine.editor.executerWithOp('LAYDRAWBACK');
```

## 二、API 版（直接改 items 顺序）

```js
const items = Engine.currentSpace.items;

function moveToFront(entity) {
  const idx = items.indexOf(entity);
  if (idx > -1) {
    items.splice(idx, 1);
    items.push(entity);
    Engine.pcanvas.regen(true);
  }
}

function moveToBack(entity) {
  const idx = items.indexOf(entity);
  if (idx > -1) {
    items.splice(idx, 1);
    items.unshift(entity);
    Engine.pcanvas.regen(true);
  }
}
```

MCP 参考：`vjcad/example/edit/07draworder.js`。

> 数组顺序：**末尾 = 最前**；**开头 = 最后**。

## 反例

- 直接改 `items` 后没 `regen(true)`：画布顺序没刷新。
- 误把 `Engine.currentSpace.aliveItems`（已过滤已删除）替代 `items`：`splice` 不影响真实数组。
- 频繁地把 N 个实体逐个 `moveToFront`：每次都 `regen` 卡顿，应一次性 `splice` 完再 `regen`。

## 参考（官方文档 MCP）

- 文档：`vjcad/doc/edit/index.md`
- 示例：`vjcad/example/edit/07draworder.js`
