AI 3D建模工具: Tripo 3D | Meshy AI
一句话结论:云端查看器让"打开文件"变容易了,但技术图纸的账不是这么算的:一张 DWG 里可能有未发布的设计、客户信息、制造尺寸和内部修订。第一个该问的问题不是"这个服务能不能打开它",而是"我们要不要把它传上去"。好消息是,很多"必须打开一下"的事根本不用上传:DWG 的版本就写在文件开头的 6 个字节里(浏览器里读 16 字节、不到 2 毫秒),审阅、测量、标注、转换可以整套留在一台 Windows 机器上,手机照片里的 GPS / 设备 / 时间戳也能在浏览器里无损剥掉。本文编译 2026 年 10 月的四份材料,整理成一条"文件不离开本机"的工作流。
披露:Keeping DWG and PDF Workflows Local on Windows 来自 ViewCompanion 官方(厂商内容,文内推广其 Windows 桌面应用,产品能力描述需按试用版自行核对);DWG 文件头解析来自 CADGuide.tools(厂商内容,文内推广其 DWG 版本检查器,magic bytes 表可独立复核);浏览器端 EXIF 清理来自一位 Android 相机 App 开发者(推广其工具页,但解析与清理代码未混淆、可自行阅读);"30 秒自查"来自 DevTrove 作者(推广其浏览器工具集,方法本身是通用的浏览器开发者工具用法)。四份材料的方法均可独立复现。
一、先问"要不要上传":技术图纸的本地处理
对普通文档来说,"上传到在线查看器"是个方便的默认选项;对技术图纸,这是一次需要重新计算的交换。可能外泄的不是一张图片,而是:未公开的设计、客户提供的资料、知识产权、受控的制造信息、内网或离线工位上的工作、以及公司政策明确限制第三方上传的文件。
本地处理去掉的是上传这一步:源文件留在电脑或可访问的网络位置,查看、测量、标注、打印、转换都在本机完成。它不消除常规安全控制——文件权限、备份、终端防护、对不可信文件的谨慎处理仍然要做——但它避免了一次"到托管服务的传送"。
本地也不等于手工。桌面工具通常有批量处理、命令行转换,甚至文件夹监控(新文件到达即按预设转换),足以把例行工作自动化成"受控输入文件夹 → 预设转换 → 独立输出文件夹",全程不出公司自己的 Windows 环境。
二、DWG 打不开:读 16 字节文件头就能确定版本
制图室最经典的报错之一是 Drawing file is not valid 或版本不兼容:装了 AutoCAD 2020 / LT 的机器打不开新版本生成的图,而且它不会告诉你这张图是什么版本生成的。要查属性,很多人的第一反应是把多兆的机密图纸传给云端工具——但这 6 个字节就在文件开头,浏览器里读一下即可。
每个原生 DWG 文件(从 Release 10 到当前版本)在偏移 0x00 处都有一段 6 字节的 ASCII 签名:
| Magic 签名 | 内部版本 | AutoCAD 版本 |
|---|---|---|
AC1032 |
R32 | 2018、2019、2021、2024、2026 |
AC1027 |
R27 | 2013 – 2017 |
AC1024 |
R24 | 2010 – 2012 |
AC1021 |
R21 | 2007 – 2009 |
AC1018 |
R18 | 2004 – 2006 |
AC1015 |
R15 | 2000、2000i、2002 |
AC1014 |
R14 | Release 14 |
AC1012 |
R13 | Release 13 |
AC1009 |
R11/R12 | Release 11 与 12 |
紧跟在 magic 之后的 0x06–0x0B 字节,用于区分维护包(maintenance pack)级别的更新。零依赖的做法是只切前 16 字节进内存,用 Uint8Array 拼出前 6 个字符查表:
async function detectDWGHeader(file) {
const slice = file.slice(0, 16); // 只要前 16 字节,保证瞬时完成
const buffer = await slice.arrayBuffer();
const bytes = new Uint8Array(buffer);
let magic = "";
for (let i = 0; i < 6; i++) magic += String.fromCharCode(bytes[i]);
const registry = {
"AC1032": "AutoCAD 2018 - 2026 Format",
"AC1027": "AutoCAD 2013 - 2017 Format",
"AC1024": "AutoCAD 2010 - 2012 Format",
"AC1021": "AutoCAD 2007 - 2009 Format",
"AC1018": "AutoCAD 2004 - 2006 Format",
"AC1015": "AutoCAD 2000 - 2002 Format",
};
return {
magicBytes: magic,
recognized: !!registry[magic],
versionDescription: registry[magic] || "Unknown or Non-DWG Header",
};
}
边界要讲清楚:这是"看一眼文件头",不是完整解析——它不读几何、不做审阅,只回答"这是不是 DWG、大概是哪个版本"。遇到未知 magic,最该做的是把它当非 DWG 或损坏文件处理,而不是换个云端工具反复重试。"Drawing file is not valid" 在旧版 CAD 里最常见的解释就是版本太新;先确定版本,再决定是升级查看工具、请对方另存为旧格式,还是走本地转换。
三、把审阅留在本地:一套完整流程
供应商发来一张修订版 DWG 和一份对应的 PDF 时,一个本地工作流大致是八步:
- 从项目文件夹直接打开 DWG;
- 检查可用的布局(paper space / model space)与绘图单位;
- 检查图层、标注与可见几何;
- 需要核对的地方做距离、折线、面积测量;
- 加标注或审阅意见;
- 与上一版对比;
- 打印,或转换为所需的 PDF / 栅格格式;
- 把结果存回受控的项目位置。
这八步里没有一步"天然需要云服务"。把整段流程留在本地还有一个常被低估的好处:对客户和 IT 都好解释——文件在本地打开、在本地处理、在本地保存。
看似简单的"打开 DWG",实际依赖的细节比几何多得多,跨组织协作时尤其明显:布局与单位、SHX 字体、外部 DWG/DXF 参照、打印样式、需要重算的图形范围(extents)。桌面审阅工具通常提供单位选择、外部字体文件夹、外部参照搜索路径、布局处理与 extents 重算这些设置——它们解决的正是"别人的图不按你的约定画"的问题。
PDF 也常被当成完全被动的格式,但它可以包含 JavaScript 和交互元素。主流技术审阅工具(例如 ViewCompanion)不执行 PDF 内嵌的 JavaScript:这去掉了技术图纸审阅里本就不需要的一类活动内容,但它不替代终端安全与文件筛查,只是一个额外的默认关闭项。
审阅与发布
什么时候本地工具是更合适的选择:图纸机密或归客户所有、政策限制上传第三方、需要离线工作、新旧格式都要照顾、需要的是测量/标注/对比/转换而不是建模、以及批处理与命令行是工作流的一部分。反过来,当浏览器可达性和外部协作是首要目标时,云服务依然有它的位置。
四、照片也要"本地优先":共享前的 GPS / EXIF 清理
手机照片带的不只是像素:精确的 GPS 位置、机型、镜头与参数、日期时间,有时还有机主姓名或相机序列号,越来越多还带"是否由生成式 AI 编辑"的标签。对 3D / BIM 工作流来说,这意味着工地照片、扫描纹理、无人机素材在分享或上传之前,值得先看一眼元数据。
这件事可以在浏览器里做完,而且不需要任何库、服务器或 WebAssembly——一个 DataView 就够了:
- JPEG 是一串段:
FF D8开头,每个段是FF + marker + 两字节大端长度。元数据在APP1段里,以Exif\0\0开头,随后是一段小的 TIFF 结构(II小端 /MM大端、值 42、第一个 IFD 的偏移;每个条目 12 字节:tag、type、count、值或偏移)。0x8769指向 Exif 子 IFD,0x8825指向 GPS IFD;GPS 坐标是三个有理数(度分秒,各是一对 32 位整数)加一个方向字母。容易忘的是 IFD1:内嵌缩略图——一张被裁剪过的照片,缩略图里可能还保留着未裁剪的原图。 - PNG 是一串 chunk:元数据在
eXIf、tEXt/iTXt/zTXt和tIME里;有些图像生成器会把整段 prompt 写进名为parameters的文本 chunk。 - WebP 是 RIFF:
EXIF和XMP是独立 chunk,VP8X头里的标志位声明它们是否存在。 - XMP 里 2026 年值得看的字段是 IPTC 的
DigitalSourceType(trainedAlgorithmicMedia表示生成式 AI 制作,compositeWithTrainedAlgorithmicMedia表示用它编辑过),以及是否嵌入 Content Credentials(C2PA)清单——注意:检测到 C2PA ≠ 验签通过。
清理的关键是"不重新压缩"。把图片画到 canvas 再导出会重新编码 JPEG、掉画质;正确做法是按容器结构重组文件:
- JPEG:保留除
APP1–APP15和COM之外的一切,但有两个例外——ICC 色彩配置(APP2 "ICC_PROFILE")和 Adobe 的APP14必须留下,否则颜色显示会变;图像数据逐字节复制。还有一个坑:手机常常把图像横着存、用 Orientation 标签声明怎么显示。全剥掉 EXIF,照片就转了 90 度——所以干净副本要重新写入一个 36 字节、只含 Orientation 一个标签的 EXIF 段。 - PNG:去掉
eXIf、tEXt、iTXt、zTXt、tIME与 C2PA 的caBXchunk。 - WebP:去掉
EXIF、XMPchunk,清掉VP8X里的对应标志位,并重写 RIFF 大小。
清理完别急着信:用同一个解析器再读一遍干净副本,报告还剩下什么(location / identity / device / time / software / ai 六类),把"信我"变成"这是输出里实际包含的内容"。做不到无损的格式(如 AVIF)只能退回 canvas 重编码(JPEG q0.95,会掉质量);DNG 只能读;HEIC 只在能解码它的浏览器里能清理。
隐私还可以验得更硬:页面跑在严格的 CSP 下(无内联脚本、无第三方脚本),断网之后照样能用;脚本没有混淆,可以直接读源码;唯一的网络请求是作者自己的计数(不含照片数据)。这正是"本地优先"该有的可验证形态。
五、30 秒验证一个在线工具是否上传你的文件
如果最后还是想用某个在线工具,有一个 30 秒的自查:
- 打开工具,按
F12→ Network,清空列表; - 粘贴假数据,运行一次;
- 点开新增的请求 → Payload:看到你的输入,就说明它离开了你的机器。
附加信号:看响应头里的 content-security-policy,connect-src 'self' 表示页面只能和自己站点通信——这是个好迹象,不是证明。更强的验证是断网再跑一遍。
顺带记住一批"本来就不需要服务器"的任务:给日志打码再贴给 AI、比较两个配置文件、校验下载文件的 SHA-256、把图片转成 data URI。它们如果在请求里带着你的输入,那纯粹是设计选择,不是技术必需。
六、清单
- [ ] 收到 DWG:先本地读文件头确定版本,再决定升级工具、让对方另存旧版,还是本地转换;
- [ ] 涉密 / 客户所有的图纸:默认"本地打开、本地处理、本地保存",并把这条写进给客户与 IT 的说明;
- [ ] 打开外部 DWG 前:准备好外部字体文件夹与外部参照搜索路径,必要时重算 extents;
- [ ] PDF:不执行内嵌 JavaScript,但仍要终端防护与文件筛查;
- [ ] 照片 / 扫描件对外共享前:解析元数据 → 无损清理 → 用同一解析器复检;别忘 Orientation 与内嵌缩略图;
- [ ] 在线工具:30 秒 Network 自查 + 断网测试,把结论写进你的数据分级;
- [ ] 例行转换:用文件夹监控 / 命令行在本地自动化,而不是访问外部转换网站;
- [ ] 别把"本地方案"说成万能:它去掉的是上传,不是安全责任。
一眼结论:"能不能打开"是一个功能问题,"要不要上传"是一个风险问题——而且后者往往有更低成本的答案。DWG 的版本在文件头里,审阅流程可以整套留在本机,照片的元数据能在浏览器里无损剥掉。先问第二个问题,再点点鼠标。
手上正好有 3D 模型要看?BimAnt 3D 模型在线查看器 支持 STL / OBJ / GLB / glTF / FBX / PLY / 3DS,纯浏览器运行、文件在本地读取;STEP / IGES 这类 CAD 格式可以走 CAD 查看器。
同主题阅读
- Text-to-CAD:让 coding agent 写参数化 CAD 的实测
- 别人发来的 3D 文件怎么验收:STEP 翻译与网格拓扑
- Bambu Studio 的多色涂装藏在 3MF 里:paint_color 解码
- 专题:CAD / 制造 / G-Code 完全指南
- 专题:3D 格式与查看器完全指南
本系列另两篇(三站相关系列 · 本地优先)
- 敏感单据不上传:本地 3B 模型转写 + 代码校验(同一件事落到文档:巴西发票、日本合格发票、阿尔伯塔电费单三份本地实测——模型只转写、代码负责算、错误进人工队列)
- 不看仪表盘:自己从 RPC 和 MCP 读链上数据(落到链上:用 curl 读策略快照、用普通 JSON-RPC 把回购逐 wei 重算、以及为什么你自己的数据库只是缓存)
来源
- @terje_helgesen_bf02cbbf96(ViewCompanion), Keeping DWG and PDF Workflows Local on Windows(dev.to,2026-10-15;厂商内容,文内推广 ViewCompanion Premium,含本地审阅八步流程、DWG 打开细节与 PDF 内嵌 JS 的处理口径):https://dev.to/terje_helgesen_bf02cbbf96/keeping-dwg-and-pdf-workflows-local-on-windows-2jjk
- @willsun(CADGuide.tools), Reverse Engineering AutoCAD DWG Magic Bytes: Client-Side Binary Parsing with WebAssembly (AC1009 to AC1032)(dev.to,2026-10-15;厂商内容,文内推广其 DWG 版本检查器;magic bytes 表与 16 字节读法可独立复核):https://dev.to/willsun/reverse-engineering-autocad-dwg-magic-bytes-client-side-binary-parsing-with-webassembly-ac1009-to-2n13
- @amjad_khan_3752d036cd1d58, Stripping EXIF and GPS from photos in the browser, losslessly, in ~500 lines of vanilla JS(dev.to,2026-10-15;作者开发 Android 相机 App,文内推广其照片隐私检查页;解析与清理逻辑未混淆):https://dev.to/amjad_khan_3752d036cd1d58/stripping-exif-and-gps-from-photos-in-the-browser-losslessly-in-500-lines-of-vanilla-js-ll4
- @kkp(DevTrove), Does your online dev tool upload your data? Check in 30 seconds(dev.to,2026-10-15;厂商内容,文内推广其浏览器工具集;F12 Network 自查法通用):https://dev.to/kkp/does-your-online-dev-tool-upload-your-data-check-in-30-seconds-i7k
本文由 BimAnt 编译整理,转载请注明出处。
本文属于「CAD / 制造」专题。查看专题全部文章 →