国产 CAD 迁移与替代·免费版
红线
- 不编造命令与版本特性:具体命令名、菜单路径、支持程度随版本变化,必须注明「以所用版本的官方文档为准」。
- 迁移前必须备份与抽检:批量转换前先备份,抽 5%~10% 图纸人工核对,不许全量替换后才发现错。
- 不评价商业产品优劣:只给迁移方法与验证清单,不做采购建议。
- 不引用付费服务:开源方案(FreeCAD、LibreCAD、QCAD)与本地工具优先。
何时使用
- 单位要做 CAD 国产化替代,评估迁移工作量。
- 换了 CAD 后命令不会用、图纸打开乱码、打印样式不对。
- 要处理字体缺失(问号、方块)。
- 要把 LISP/插件迁移到新平台。
- 想了解开源 CAD 能不能顶替某些场景。
反触发:
- 需要厂商官方技术支持 → 联系原厂。
- 需要采购选型结论 → 需自行试用评估与商务对比。
职责边界
- 做:迁移方法、对照思路、验证清单、问题归因、开源替代方案边界。
- 不做:提供精确命令表(以官方文档为准)、做采购决策。
主流程
第 1 步:迁移前盘点(质检闸 A)
| 盘点项 | 内容 | 为什么重要 |
|---|---|---|
| 图纸数量与格式 | DWG 版本分布、DXF、外部参照 | 决定转换工作量 |
| 字体文件 | 用了哪些 SHX/TTF,是否有自定义 | 乱码主因 |
| 打印配置 | CTB/STB、笔宽、打印机驱动 | 出图一致性 |
| 样板文件 | DWT、图层标准、图框块 | 标准落地载体 |
| 二次开发 | LISP、.NET、COM、VBA 脚本 | 迁移最大工作量 |
| 专业模块 | 机械/建筑/电气专业功能 | 替代难度最高 |
| 三维模型 | 是否用 3D 功能、格式是什么 | 国产 3D 差异大 |
# 扫描目录,统计 DWG 版本分布(读文件头 6 字节)
import pathlib, collections
ACAD_VER = {
"AC1015": "2000", "AC1018": "2004", "AC1021": "2007",
"AC1024": "2010", "AC1027": "2013", "AC1032": "2018",
}
cnt = collections.Counter()
for f in pathlib.Path(".").rglob("*.dwg"):
head = f.open("rb").read(6).decode("ascii", "ignore")
cnt[ACAD_VER.get(head, head)] += 1
print(cnt)
> 质检闸 A:未盘点完 → 不许开始批量迁移。
第 2 步:图纸兼容性处理
版本策略:
| 情况 | 处理 |
|---|---|
| 新软件打不开高版本 | 用 ODA File Converter(免费命令行)降版 |
| 与外单位交换 | 统一约定一个中间版本(如 2007/2010) |
| 归档 | 同时存 PDF(可视化)+ DWG(可编辑) |
# 批量降版(本地命令行工具)
ODAFileConverter "D:\dwg_in" "D:\dwg_out" "ACAD2010" "DWG" "0" "1"
外部参照(XREF):迁移时最容易丢。
| 检查 | 处理 |
|---|---|
| 参照路径是绝对路径 | 改为相对路径或统一目录 |
| 参照文件缺失 | 迁移前拷贝完整 |
| 嵌套参照 | 逐层检查 |
第 3 步:字体处理(乱码头号原因)
常见现象与原因:
| 现象 | 原因 |
|---|---|
文字变问号 ??? |
缺少对应 SHX/TTF 字体 |
| 文字变方块 | 大字体(Bigfont)缺失 |
| 中文乱码 | 编码/字体映射不对 |
| 尺寸文字错位 | 字体替换后字宽变化 |
处理步骤:
- 用
ezdxf或软件自带工具列出图纸用到的文字样式与字体名。 - 把缺失字体文件拷贝到字体目录(工程字体/公司字体库)。
- 无法获取原字体时,建立字体替换映射表(如
hztxt.shx → gbcbig.shx)。 - 替换后逐张目视核对排版是否错位。
import ezdxf
doc = ezdxf.readfile("a.dxf")
for style in doc.styles:
print(style.dxf.name, "| font:", style.dxf.font, "| bigfont:", getattr(style.dxf, "bigfont", ""))
字体替换映射表模板:
# 字体替换映射(替换后必须人工核对排版)
font_map:
hztxt.shx: gbcbig.shx
monotype: simfang.ttf
# 新增条目时注明:原字体 → 替代字体 → 核对人/日期
> ⚠️ 字体替换会改变字宽 → 标题栏文字可能溢出或换行错位,
> 必须目视核对,不能只看能不能打开。
第 4 步:打印与出图配置
| 配置项 | 迁移要点 |
|---|---|
| CTB/STB 笔宽文件 | 拷贝并重新指定路径 |
| 打印样式表 | 颜色→线宽映射是否一致 |
| 页面设置 | 图纸尺寸、打印区域、比例 |
| 打印机驱动 | 新环境可能需要重新配置(或输出 PDF 虚拟打印) |
| 线型文件(LIN) | 一并拷贝,否则线型变实线 |
| 填充图案(PAT) | 一并拷贝,否则填充丢失 |
建议:迁移期统一用 PDF 虚拟打印做基准比对——
同一张图在新旧软件各出一份 PDF,叠加对比差异。
第 5 步:命令与操作对照(思路,具体以官方文档为准)
对照表建立方法(不要抄网上的表,按自己常用命令建):
| 使用频率 | 命令 | 旧平台 | 新平台 | 快捷键差异 |
|---|---|---|---|---|
| 高 | 直线 | L | <查官方文档填> | |
| 高 | 偏移 | O | ||
| ... |
建立企业常用命令对照表的步骤:
- 统计团队最常用的 30~50 个命令(从操作日志或访谈得)。
- 在新软件中逐个查官方文档确认命令名与行为差异。
- 把差异项(命令名不同、行为不同、不支持)单列。
- 对不支持的命令,找替代操作路径或申请定制。
> 行为差异比命令名差异更隐蔽:比如同样叫 TRIM,
> 边界选择方式、连续修剪行为可能不同,要实测。
第 6 步:二次开发迁移
| 原类型 | 迁移难度 | 思路 |
|---|---|---|
| LISP / Visual LISP | 中 | 国产 CAD 多数兼容 LISP,需逐个测试;注意 ActiveX 接口差异 |
| .NET / ObjectARX | 高 | 需按新平台 API 重写,工作量大 |
| COM 自动化 | 中 | 接口基本兼容,需验证属性/方法名 |
| VBA | 高 | 多数新平台不支持,需重写 |
| 脚本(SCR) | 低 | 命令名对了基本可用 |
迁移顺序:
- 盘点脚本清单,按使用频率与重要性分级。
- 高频且简单的先迁。
- 复杂的逐个重写 + 单元测试。
- 迁不动的评估是否放弃或改人工流程。
;; LISP 迁移检查要点
;; 1. 命令名是否可用((command "LINE" ...) 中的命令字符串)
;; 2. 系统变量读写是否一致(getvar/setvar)
;; 3. ActiveX 对象模型是否一致(vla-* 函数)
;; 4. 选择集过滤条件是否一致(ssget 过滤器)
;; 5. 中文路径与编码处理
第 7 步:开源替代方案的适用边界
| 场景 | 开源方案 | 适用度 |
|---|---|---|
| 2D 看图、轻量编辑 | LibreCAD / QCAD | 高(个人/简单场景) |
| 2D 图纸批处理 | ezdxf(Python) | 高(自动化场景首选) |
| 参数化 3D 建模 | FreeCAD | 中高(机械零件可行) |
| BIM | FreeCAD BIM / BlenderBIM | 中(需投入学习) |
| 替代专业模块(机械/建筑/电气) | 基本无 | 低(需商业软件) |
| 与企业 PLM/PDM 集成 | 需二次开发 | 中 |
> 开源方案适合批处理与自动化(ezdxf 极强),
> 交互式替代在专业模块上仍有明显差距,需务实评估。
第 8 步:迁移验证清单(质检闸 B)
- [ ] 已备份全部原文件
- [ ] 抽检 5%~10% 图纸:能打开、字体正常、尺寸正确
- [ ] 外部参照全部有效
- [ ] 打印输出与旧平台 PDF 叠加比对一致
- [ ] 图框、标题栏、块属性完整
- [ ] 图层标准一致(名称、颜色、线型)
- [ ] 高频脚本全部测试通过
- [ ] 团队完成培训、命令对照表发放
- [ ] 有回退方案(旧平台保留一段时间)
> 质检闸 B:抽检未通过 → 不许全量切换。
常见坑
| 坑 | 后果 | 避免 |
|---|---|---|
| 不备份直接批量转换 | 原图毁了 | 先备份、输出到新目录 |
| 只看能不能打开 | 字体/线型/填充已丢但没发现 | 目视核对 + PDF 叠加比对 |
| 字体替换不核对排版 | 标题栏文字溢出 | 替换后逐张目视 |
| 忽略外部参照 | 图形缺失 | 迁移前检查 XREF |
| 二次开发没评估 | 上线后团队效率暴跌 | 提前盘点分级 |
| 一次全量切换 | 出问题影响全公司 | 先试点 → 再分批 |
| 没有回退方案 | 出问题无法处理 | 旧平台保留过渡期 |
| 拿网上命令表当依据 | 版本不符 | 以所用版本官方文档为准 |
失败降级
- 图纸转换后异常 → 回退到备份,用 ODA 转换器重来,或单张人工处理。
- 某命令/脚本不支持 → 记录到差异清单,评估替代操作或定制开发。
- 专业模块无法替代 → 明确说明边界,建议保留专用工具或分阶段推进。
依赖
ezdxf(开源,图纸分析与批处理)、ODA File Converter(免费命令行工具)。- 开源 CAD:FreeCAD、LibreCAD、QCAD(均为开源许可)。
- 全部本地运行,不联网、不调用任何付费服务。
免责声明
本技能提供的是迁移方法与验证清单,
具体命令、功能支持度、兼容性以各软件厂商官方文档与实测为准。
涉及企业生产系统的切换,必须经过试点验证与回退预案评审。
致谢
- 原创免费技能,基于公开的 CAD 迁移通用实践与开源工具用法重新组织撰写。
- 采用 MIT 许可,不依赖任何专有实现或付费服务。