url-params
本文回答:vjcad 支持通过 URL 参数(前缀
vcad_)让页面加载后自动打开图纸 / 激活面板。常量定义在MainView.URL_PARAMS(MainView类静态成员),包括MAPID / VERSION / BRANCH / PATCH / READONLY / TILE / PANEL / WORKSPACE。
一、参数表
| 参数 | 类型 | 必填 | 默认 | 说明 |
|---|---|---|---|---|
vcad_mapid |
string | 是 | — | 图纸 ID |
vcad_version |
string | 否 | 最新 | 版本号 |
vcad_branch |
string | 否 | main |
分支 |
vcad_patch |
string | 否 | base |
Patch ID |
vcad_readonly |
boolean | 否 | false | 只读 |
vcad_tile |
boolean | 否 | false | 瓦片模式 |
vcad_panel |
string | 否 | — | 初始激活的侧边栏面板名 |
vcad_workspace |
string | 否 | 配置/缓存值 | CAD 后端工作区名 |
MCP 参考:vjcad/doc/file/file-operations.md。
二、示例 URL
# 自动打开指定图纸
https://your-domain.com/?vcad_mapid=building_plan
# 打开指定版本,只读
https://your-domain.com/?vcad_mapid=building_plan&vcad_version=v2&vcad_readonly=true
# 瓦片方式打开大图纸
https://your-domain.com/?vcad_mapid=city_map&vcad_tile=true
# 打开图纸并激活 AI 助手面板
https://your-domain.com/?vcad_mapid=building_plan&vcad_panel=ai-assistant
# 仅激活面板,不打开图纸
https://your-domain.com/?vcad_panel=ai-assistant
三、处理流程
- 页面加载完成 → 解析
vcad_*参数 - 有
vcad_panel→ 激活指定侧边栏面板 - 有
vcad_mapid→ 按以下顺序打开图纸:- 先看
imports列表里有没有已转换好的 webcad - 如果没有,再去
serverMaps找原始 DWG → 自动导入 → 打开 - 如果
vcad_tile=true,则以瓦片方式打开
- 先看
MCP 参考:vjcad/doc/file/file-operations.md。
四、代码访问常量
import { MainView } from 'vjcad';
console.log(MainView.URL_PARAMS.MAPID); // 'vcad_mapid'
console.log(MainView.URL_PARAMS.VERSION); // 'vcad_version'
console.log(MainView.URL_PARAMS.BRANCH); // 'vcad_branch'
console.log(MainView.URL_PARAMS.PATCH); // 'vcad_patch'
console.log(MainView.URL_PARAMS.READONLY); // 'vcad_readonly'
console.log(MainView.URL_PARAMS.TILE); // 'vcad_tile'
console.log(MainView.URL_PARAMS.PANEL); // 'vcad_panel'
console.log(MainView.URL_PARAMS.WORKSPACE); // 'vcad_workspace'
MCP 参考:vjcad/doc/file/file-operations.md。
五、典型场景:在分享链接里嵌入
// 生成分享链接
function buildShareUrl(currentDoc) {
const src = currentDoc.serverSource;
const u = new URL(window.location.origin);
u.searchParams.set(MainView.URL_PARAMS.MAPID, src.mapid);
u.searchParams.set(MainView.URL_PARAMS.VERSION, src.version);
u.searchParams.set(MainView.URL_PARAMS.BRANCH, src.branchName);
u.searchParams.set(MainView.URL_PARAMS.READONLY, 'true');
return u.toString();
}
反例
- 直接用
?mapid=xxx(漏掉vcad_前缀):vjcad 不识别。 - 在
cadView.onLoad()之前手动 open / panel:会被 URL 参数覆盖;建议要么完全交给 URL 参数,要么_panel不写在 URL 里。 vcad_tile=true但图纸不大:瓦片模式有性能开销,小图纸反而更慢。
参考(官方文档 MCP)
- 文档:
vjcad/doc/file/file-operations.md - 示例:
vjcad/example/file/01openfromserver.js