mainview-init
本文回答:vjcad 的入口是
new MainView({...}) → initCadContainer(elementId, cadView) → await cadView.onLoad(),MainView接受 appname / version / wasmServiceUrl / serviceUrl / accessToken / accessKey / sidebarStyle / pluginMarketUrl / fonts / locale / viewMode / showUcsIcon / showAxis 等配置项。
一、最小初始化(npm + TS)
import { MainView, initCadContainer } from 'vjcad';
const cadView = new MainView({
appname: '我的CAD应用',
version: 'v1.0.0'
});
initCadContainer('cad-app', cadView);
await cadView.onLoad();
MCP 参考:vjcad/doc/guide/quick-start.md、vjcad/example/basic/01init.js。
二、MainViewConfig 字段
构造参数类型为
MainViewConfig(types.d.ts导出),官方 guide 中或称MainViewOptions。
| 字段 | 类型 | 说明 |
|---|---|---|
appname |
string |
应用名称,显示在标题栏 |
version |
string |
应用版本号 |
wasmServiceUrl |
string |
WASM 服务地址,用于加载 WebAssembly 模块 |
serviceUrl |
string |
后端服务地址(文件操作等 API) |
accessToken |
string |
访问令牌,身份验证 |
accessKey |
string |
访问密钥,加密图纸 |
pluginMarketUrl |
string |
插件市场配置文件地址。留空/不传时自动使用 <服务根>/_webcad/plugins/plugins.json(无 serviceUrl 时 ./plugins/plugins.json),启动时总会请求它并加载其中 autoLoad 插件;空串无法关闭 |
sidebarStyle |
'both' | 'left' | 'right' | 'none' |
侧边栏样式,默认 'right' |
locale |
'zh-CN' | 'en-US' |
界面语言;不传则按优先级自动检测 |
fonts |
FontConfig[] |
字体配置列表,见 fonts |
viewMode |
'viewer'(按示例) |
只读查看模式开关,见 viewer-mode |
showUcsIcon |
boolean(按示例) |
是否显示左下角坐标轴 |
showAxis |
boolean(按示例) |
是否显示图中坐标轴 |
FontConfig:
interface FontConfig {
path: string; // 字体文件路径
name?: string; // 字体名称(与自动创建的 TextStyle 同名)
kind?: 'woff' | 'ttf' | 'otf' | 'shx'; // 字体类型
}
MCP 参考:vjcad/doc/guide/quick-start.md。
三、Playground 完整配置(CDN 全局)
const { MainView, initCadContainer, message } = vjcad;
const cadView = new MainView({
appname: '唯杰CAD',
version: 'v1.0.0',
serviceUrl: env.serviceUrl,
accessToken: env.accessToken,
accessKey: '',
sidebarStyle: 'right',
pluginMarketUrl: '', // 空串 = 使用默认市场地址(见上表)
fonts: [] // 空数组 = 不加载任何字体;不传 fonts 才默认加载 simkai.woff + _default.shx
});
initCadContainer('map', cadView);
await cadView.onLoad();
message.info('WebCAD 引擎初始化完成');
MCP 参考:vjcad/example/basic/01init.js。
四、initCadContainer 签名
initCadContainer(container: string | HTMLElement, cadViewElement?: HTMLElement): HTMLElement
container:容器 DOM 的 id 或元素本身。cadViewElement:new MainView({...})创建的实例(MainView继承LitElement,本身即 HTMLElement)。- 调用前必须保证容器存在且有非零宽高,否则首屏会黑屏(与初始化无关)。
反例
- 在
await cadView.onLoad()之前就调Engine.addEntities(...)或Engine.eventManager.on(...):此时Engine尚未就绪。 - 配置
viewerMode: true:示例里实际配置项是viewMode: "viewer"(注意拼写)。 - 把
new vjmap.Service()/new vjmap.Map()也写进来:vjcad 不需要这些,初始化只走MainView + initCadContainer。
参考(官方文档 MCP)
- 文档:
vjcad/doc/guide/quick-start.md - 示例:
vjcad/example/basic/01init.js、vjcad/example/basic/02onload.js