> **本文回答**：在 `MainView({...})` 中设置 **`viewMode: "viewer"`** 进入只读查看模式，只显示绘图区域，隐藏菜单/工具栏/命令行；常用配套选项是 `showUcsIcon: false / showAxis: false / enableContextMenu: false / showGrips: false`。

## 一、最小用法

```js
const { MainView, initCadContainer, Engine, message } = vjcad;

const cadView = new MainView({
  appname: '唯杰CAD',
  version: 'v1.0.0',
  serviceUrl: env.serviceUrl,
  accessToken: env.accessToken,

  viewMode: 'viewer',       // 关键：注意是 viewMode 不是 viewerMode
  showUcsIcon: false,
  showAxis: false
});
initCadContainer('map', cadView);
await cadView.onLoad();
```

MCP 参考：`vjcad/example/basic/03viewermode.js`。

## 二、隐藏选项一览（按示例）

| 选项 | 含义 |
|---|---|
| `viewMode: 'viewer'` | 只显示绘图区域（隐藏菜单/工具栏/命令行/侧边栏等） |
| `showUcsIcon: false` | 隐藏左下角 UCS 坐标轴图标 |
| `showAxis: false` | 隐藏图中坐标轴 |
| `enableContextMenu: false` | 禁用右键菜单（默认） |
| `showGrips: false` | 禁用夹点（默认） |

MCP 参考：`vjcad/example/basic/03viewermode.js`。

## 三、配合远程图纸（只读）

`viewMode: 'viewer'` + `DrawingManagerService.openDrawing(...)` + `Engine.view.openDbDoc(file, data, true)` 适用于"嵌入第三方系统的只读图纸查看"场景（真正只读靠 `openDbDoc` 第三参，`openDrawing` 的 `readOnly` 只是在返回值里标 `isReadOnly`）：

```js
const { MainView, initCadContainer, Engine, DrawingManagerService } = vjcad;

const cadView = new MainView({
  appname: '唯杰CAD', version: 'v1.0.0',
  serviceUrl: env.serviceUrl, accessToken: env.accessToken,
  viewMode: 'viewer', showUcsIcon: false, showAxis: false
});
initCadContainer('map', cadView);
await cadView.onLoad();

const drawingManager = new DrawingManagerService();
const openResult = await drawingManager.openDrawing({
  type: 'imports',
  mapid: env.exampleMapId,
  version: 'v1',
  branch: 'main',
  patchId: 'base',
  readOnly: true            // 仅让返回值 isReadOnly=true，本身不锁定任何东西
});
if (!openResult.success) throw new Error(openResult.error);

const virtualFile = new File([openResult.webcadJson], `${env.exampleMapId}_v1_main`,
                              { type: 'application/json' });
await Engine.view.openDbDoc(virtualFile, openResult.webcadData, true); // 第三参 true 才真正只读（实体进只读层，不可选/编辑）
Engine.zoomExtents();
```

MCP 参考：`vjcad/example/basic/04viewerremote.js`（官方示例未传 `openDbDoc` 第三参，打开后其实可编辑；上面已按源码修正）。

## 四、注意

- viewer 模式下编辑命令（`LINE / MOVE / ERASE / COPY / ROTATE` ...）依然能从代码触发；如果你不希望用户改图纸，用 `Engine.view.openDbDoc(file, data, true)` 让已有实体进只读层（不可选/编辑），并在业务侧禁用编辑命令。`openDrawing({ readOnly: true })` 只在返回值标 `isReadOnly`，不锁定任何东西；只读打开后仍可新建实体。
- viewer 模式不写回服务端：示例里 `Engine.currentDoc.serverSource = {...}` 这一行被特意注释掉。

## 反例

- `viewerMode: true`：vjcad 实际配置项是 **`viewMode: "viewer"`**（字符串），不是布尔。
- viewer 模式下还想保存：需要去掉 viewer 模式或自己处理保存路径。

## 参考（官方文档 MCP）

- 文档：`vjcad/doc/basic/index.md`
- 示例：`vjcad/example/basic/03viewermode.js`、`vjcad/example/basic/04viewerremote.js`
