唯杰地图 logo唯杰地图
VJMAP
EN

overview

vjcad/references/file/overview.md 4.5 KB85 行
原文

本文回答:vjcad 文件操作分五类:① 服务端(OPENFROMSERVER / SAVESERVER);② 本地缓存(OPENFROMLOCAL / SAVELOCAL,IndexedDB);③ 本地下载(QSAVE / SAVEAS,下载 WASM 压缩的 .vcad;OPEN 可打开 .vcad / .webcad);④ DWG 转换(IMPORTDWG / EXPORTDWG,需服务端);⑤ 图片导出(EXPORTPNG,纯前端)。核心服务 = DrawingManagerService(服务端)+ getLocalStorageService()(本地)。

一、按子主题挑

想做的 子主题
从服务端打开 / 保存图纸 server
本地 IndexedDB 缓存 local
QSAVE / SAVEAS 下载 .vcad 见本页 §三
导入 / 导出 DWG dwg-import-export
导出 PNG / JPEG export-png
文档变更对比(Diff) diff
URL 参数自动打开图纸 url-params

二、文件格式速查

格式 说明 命令
.vcad WebCAD 文档的 WASM 压缩格式(内嵌 _meta.serverSource 等元数据) QSAVE / SAVEAS 下载;OPEN 打开
.webcad 未压缩的 WebCAD 原生 JSON(toDb() 直接序列化) OPEN 打开;手工导出见 §三
.dwg AutoCAD(需服务端转换) IMPORTDWG / EXPORTDWG
.dxf 图形交换(IMPORTDWG 兼容) IMPORTDWG
.png / .jpg 视图截图(纯前端) EXPORTPNG

MCP 参考:vjcad/doc/file/index.md、vjcad/doc/file/file-operations.md。

三、QSAVE / SAVEAS 下载(最简单)

// 当前文件名(自动加时间戳)快速保存,浏览器下载 <名>.vcad
await Engine.editor.executerWithOp('QSAVE');

// 弹出对话框另存(同样下载 .vcad)
await Engine.editor.executerWithOp('SAVEAS');

QSAVE / SAVEAS 下载的是 compressWebcadToVcad() 压缩后的 .vcad,文档有 serverSource 时还内嵌 _meta.serverSource(mapid/version/lastPatchId/原始基准等),以便再打开后继续增量保存到服务端。

手工导出未压缩 .webcad(JSON,OPEN 也能打开,但不等价于 QSAVE:无压缩、无 _meta、不清除文档修改标记):

const data = Engine.currentDoc.toDb();
const json = JSON.stringify(data, null, 2);
const blob = new Blob([json], { type: 'application/json' });
const url  = URL.createObjectURL(blob);
const a    = document.createElement('a');
a.href = url;
a.download = (Engine.currentDoc.name || 'untitled') + '.webcad';
a.click();
URL.revokeObjectURL(url);

MCP 参考:vjcad/doc/file/file-operations.md、vjcad/example/file/05qsave.js、06saveas.js。

四、心智模型

┌─────────────────────────────────────────────────┐
│  Engine.currentDoc                              │
│   └─ .toDb() / .fromDb() ↔ webcadJson           │
└─────────────────────────────────────────────────┘
        │                       │
        ▼                       ▼
 ┌─────────────┐         ┌──────────────┐
 │ DrawingMgrSvc│         │ LocalStorageSvc │
 │  服务端 JSON   │         │  IndexedDB    │
 └─────────────┘         └──────────────┘
        │                       │
        ▼                       ▼
 ┌─────────────┐         ┌──────────────┐
 │  服务端 DB    │         │  浏览器本地    │
 └─────────────┘         └──────────────┘

五、命令快捷键

当前版本未绑定文件快捷键:Ctrl + S 只拦截浏览器默认的"保存网页"(preventDefault),不执行任何命令;Ctrl + O / Ctrl + Shift + S 无处理。文件菜单里 SAVELOCAL 旁显示的 "Ctrl+S" 只是标签,并未实际绑定。需要快捷键请自行监听 keydown 调 Engine.editor.executerWithOp('QSAVE') 等。

MCP 参考:vjcad/doc/file/file-operations.md(其中的快捷键表与实际实现不符,以上表为准)。

参考(官方文档 MCP)

  • 文档:vjcad/doc/file/index.md、vjcad/doc/file/file-operations.md
  • 示例:vjcad/example/file/01openfromserver.js ~ 10diff.js