唯杰地图 logo唯杰地图
VJMAP
EN

url-params

vjcad/references/file/url-params.md 3.3 KB90 行
原文

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

三、处理流程

  1. 页面加载完成 → 解析 vcad_* 参数
  2. 有 vcad_panel → 激活指定侧边栏面板
  3. 有 vcad_mapid → 按以下顺序打开图纸:
    1. 先看 imports 列表里有没有已转换好的 webcad
    2. 如果没有,再去 serverMaps 找原始 DWG → 自动导入 → 打开
    3. 如果 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