> **本文回答**：状态栏坐标显示走 `Engine.view.coordsBar`：`Engine.view.coordsBar.updateCoordsTitle()` 只按 `pcanvas.ucsIsWCS` 把标题切成 "WCS" / "UCS"（坐标数值本身随鼠标实时按当前 UCS 换算，不需要它刷新），也可以 hide / show。坐标系转换 API 在 `Engine` 顶层（`canvasToWcs / wcsToUcs / ucsToWcs / wcsToDcs`；反向转换直接用 `Engine.trans.WcsToCanvas / DcsToWcs / …`），详见 [core/coordinate](../core/coordinate.md)。

## 一、CoordsBar API

```js
Engine.pcanvas.updateUcsIsWcs();              // 先按新 UCSORG/UCSXANG 重算 ucsIsWCS
Engine.view.coordsBar.updateCoordsTitle();
// 只把状态栏标题切成 "WCS" / "UCS"；坐标数值实时换算，不靠它刷新
```

MCP 参考：`vjcad/example/view/10ucs.js`（UCS 设置后调用）、`vjcad/example/view/11planview.js`（平面视图设置后调用）。

## 二、坐标系转换（在状态栏 / 命令里取值）

```js
// 鼠标事件回调里
canvas.addEventListener('mousemove', (e) => {
  const wcs = Engine.canvasToWcs(new Point2D(e.offsetX, e.offsetY));   // 参数是 Point2D 对象
  console.log('WCS', wcs.x, wcs.y);

  const ucs = Engine.wcsToUcs(wcs);
  console.log('UCS', ucs.x, ucs.y);

  const dcs = Engine.wcsToDcs(wcs);
  console.log('DCS', dcs.x, dcs.y);
});
```

MCP 参考：`vjcad/doc/view/index.md`、`vjcad/example/view/08coordinate.js`。

## 三、状态栏其他元素（系统变量联动）

| Engine 变量 | 状态栏按钮 | 说明 |
|---|---|---|
| `Engine.ORTHOMODE` | F8 / 正交 | 0/1 |
| `Engine.GRIDMODE` | F7 / 栅格 | 0/1 |
| `Engine.OSMODE` | F3 / 对象捕捉 | 位掩码 |

```js
Engine.ORTHOMODE = 1;    // 开启正交
Engine.GRIDMODE  = 1;    // 开启栅格
```

详见 [setup/mainview-config](../setup/mainview-config.md) 与 [core/engine](../core/engine.md)。

## 四、自定义坐标格式 / 单位

文档 / 示例里没有直接提供"修改坐标显示格式"的 API；可以监听 `mousemove` 后自己用 `writeMessage` 输出，或自定义 UI 替换。详细可看 `Engine.view.coordsBar.updateCoordsTitle` 内部读取的属性（IDE 解析）。

## 反例

- 设置 UCS 后没 `updateUcsIsWcs()` + `updateCoordsTitle()`：状态栏标题仍显示旧的 "WCS"/"UCS"（坐标数值本身会按新 UCS 实时换算，不受影响）。
- 在 `mousemove` 回调里频繁 `Engine.regen()`：开销大，建议只 `redraw` 或不刷新。

## 参考（官方文档 MCP）

- 文档：`vjcad/doc/view/index.md`、`vjcad/doc/core/coordinate.md`（参考）
- 示例：`vjcad/example/view/08coordinate.js`、`vjcad/example/view/10ucs.js`、`vjcad/example/view/11planview.js`
