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 时,一个本地工作流大致是八步:

  1. 从项目文件夹直接打开 DWG;
  2. 检查可用的布局(paper space / model space)与绘图单位;
  3. 检查图层、标注与可见几何;
  4. 需要核对的地方做距离、折线、面积测量;
  5. 加标注或审阅意见;
  6. 与上一版对比;
  7. 打印,或转换为所需的 PDF / 栅格格式;
  8. 把结果存回受控的项目位置。

这八步里没有一步"天然需要云服务"。把整段流程留在本地还有一个常被低估的好处:对客户和 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 的 caBX chunk。
  • WebP:去掉 EXIF、XMP chunk,清掉 VP8X 里的对应标志位,并重写 RIFF 大小。

清理完别急着信:用同一个解析器再读一遍干净副本,报告还剩下什么(location / identity / device / time / software / ai 六类),把"信我"变成"这是输出里实际包含的内容"。做不到无损的格式(如 AVIF)只能退回 canvas 重编码(JPEG q0.95,会掉质量);DNG 只能读;HEIC 只在能解码它的浏览器里能清理。

隐私还可以验得更硬:页面跑在严格的 CSP 下(无内联脚本、无第三方脚本),断网之后照样能用;脚本没有混淆,可以直接读源码;唯一的网络请求是作者自己的计数(不含照片数据)。这正是"本地优先"该有的可验证形态。


五、30 秒验证一个在线工具是否上传你的文件

如果最后还是想用某个在线工具,有一个 30 秒的自查:

  1. 打开工具,按 F12 → Network,清空列表;
  2. 粘贴假数据,运行一次;
  3. 点开新增的请求 → 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 查看器。

同主题阅读

本系列另两篇(三站相关系列 · 本地优先)

来源

  • @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 / 制造」专题。查看专题全部文章 →