mainview-config
本文回答:
MainView配置除了 mainview-init 列出的常用项,还支持workspace / closeDocOnOpen / plugins / docUrl / wasmServiceUrl等;状态栏按钮可通过Engine.view.coordsBar.funcButtons访问,Engine.ORTHOMODE / Engine.GRIDMODE程序化切换状态。
一、完整配置示例(来自 ui 示例)
const fullConfig = {
// 基本信息
appname: '唯杰CAD',
version: 'v1.0.0',
// 后端服务
serviceUrl: env.serviceUrl,
accessToken: env.accessToken,
workspace: '', // CAD 后端工作区间
accessKey: '', // 加密图纸的访问密钥
// WASM
wasmServiceUrl: '',
// 字体(见 setup/fonts):非 http(s) 开头的 path(含 '/x')在配置了 serviceUrl 时
// 一律解析为 <服务根>/_webcad/<path>;字体在自己站点下请写绝对 URL
fonts: [
{ path: 'https://your.site/fonts/simsun.ttf', name: '宋体', kind: 'ttf' },
{ path: 'https://your.site/fonts/hztxt.shx', name: 'hztxt', kind: 'shx' }
],
// 文档行为
closeDocOnOpen: true, // 打开新图时关闭当前文档(单文档模式)
// 插件
plugins: [], // 启动时自动加载的插件列表,例如 [{ url: '/plugins/x/plugin.js' }]
pluginMarketUrl: '', // 插件市场配置文件地址;留空 = 默认 <服务根>/_webcad/plugins/plugins.json(无法用空串关闭)
// UI
sidebarStyle: 'none', // both / left / right / none
docUrl: 'https://www.vjmap.com' // 文档按钮链接
};
MCP 参考:vjcad/example/ui/09mainviewconfig.js。
本示例标题为"主视图配置 MainViewConfig 用法",其字段是 vjcad 在 playground 内确认存在的。
二、状态栏(FuncButtons / CoordsBar)程序化操作
const coordsBar = Engine.view.coordsBar;
const funcButtons = coordsBar.funcButtons;
// 通过修改 Engine 系统变量切换状态,按钮状态会自动同步
Engine.ORTHOMODE = 1; // 开正交(F8)
Engine.GRIDMODE = 1; // 开栅格(F7)
Engine.ORTHOMODE = 0; // 关正交
console.log(funcButtons.orthomodeButton.isOn); // 当前是否开启
console.log(funcButtons.gridmodeButton.isOn);
状态栏内置按钮 / 快捷键:
| 功能 | 快捷键 | Engine 变量 |
|---|---|---|
| 对象捕捉 OSNAP | F3 | Engine.OSMODE |
| 栅格显示 GRID | F7 | Engine.GRIDMODE |
| 正交模式 ORTHO | F8 | Engine.ORTHOMODE |
| 极轴追踪 POLAR | F10 | — |
| 主题切换 | — | 画布深/浅色用 Engine.THEME_MODE = 0/1;UI 配色用 MainView({ themeColors }) / cadView.setThemeColors()。MainView.setTheme() 是遗留接口,只记录主题名、不切换任何配色(另见 ui/theme-statusbar) |
MCP 参考:vjcad/example/ui/08statusbar.js。
三、UI 进一步定制
| 想做的 | 去读 |
|---|---|
| Ribbon 按钮 / 菜单 / 命令注册 | plugin/menu-ribbon |
| 右键菜单 | ui/contextmenu |
| 主题(亮 / 暗)+ 状态栏 | ui/theme-statusbar |
| 侧边栏面板 | ui/sidebar-panel |
| 对话框 / 浮动工具栏 | ui/dialogs、ui/floating-toolbar |
反例
- 在
await onLoad()之前访问Engine.view.coordsBar:拿到undefined。 - 把
closeDocOnOpen: false用作"打开新图后台并存"的开关:实际行为是是否关闭旧文档,不是是否后台保留。
参考(官方文档 MCP)
- 文档:
vjcad/doc/ui/index.md、vjcad/doc/ui/controls.md - 示例:
vjcad/example/ui/09mainviewconfig.js、vjcad/example/ui/08statusbar.js