唯杰地图 logo唯杰地图
VJMAP
EN

mainview-config

vjcad/references/setup/mainview-config.md 3.7 KB90 行
原文

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