实际机械设计和非标自动化项目里,SolidWorks 工程图转成 DWG 给客户或加工厂是很常见的一步。真正让人头疼的往往不是转不出来,而是转出来之后用 AutoCAD 打开,标题栏中文全部变成问号,技术要求文字变成一行乱码,尺寸标注里的直径符号显示成方框。这类问题十有八九不是工程图本身坏了,而是 SolidWorks 在输出 DWG 时,字体和图层没有按预期映射到 CAD 环境。本文以 SolidWorks 输出 DWG 乱码问题为切入点,重点讲清映射文件的定位、读取、修改和应用流程,并提供一套从 SolidWorks 到 AutoCAD 都能复用的排查和验收方法。
文章适合三类读者:一是经常需要把 SolidWorks 工程图转成 DWG 给下游使用的工程师,二是负责公司 CAD 标准模板和转换规范的技术人员,三是刚接触 SolidWorks 转 CAD 流程、被乱码折腾过的新人。看完之后,你至少能完成三件事:定位本机 SolidWorks 的映射文件,修改字体映射规则解决中文乱码,以及在 CAD 端快速判断乱码到底是字体缺失还是映射配置错误。
1. 为什么 SolidWorks 转出的 DWG 会出现乱码
1.1 转换链路里,文字发生了什么
SolidWorks 工程图里的注释、尺寸、技术要求,在另存为 DWG 时并不是简单地把界面上的文字“拍扁”到图纸里。SolidWorks 会通过数据交换接口,把工程图中的文字对象转换为 DWG 文件里的 TEXT 或 MTEXT 实体。DWG 文件本身并不嵌入中文字体数据,它只记录字体名称、字符内容和文字样式信息。CAD 打开这个文件时,再根据字体名称去本机字体库中找对应的字体来渲染。
问题就出在这个环节。如果 SolidWorks 文档里使用的是“仿宋_GB2312”“@宋体”这类名称,而 CAD 机器上没有对应字体,或者映射文件里把 SolidWorks 的字体指向了一个不支持中文的 CAD 字体,那么文字内容虽然还在,显示出来却是问号、乱码或者空心方块。换句话说:乱码不等于文字丢失,往往是字体加载失败或字体替换错误。
1.2 乱码的几种典型表现,决定了排查方向
乱码不是只有一种样子。同样是图纸打不开中文,问号、乱码、空心字和文字消失对应的原因完全不同。先判断现象,再决定动哪里,效率会高很多。
| 现象 | 本质 | 优先级 |
|---|---|---|
中文全部显示为??? | CAD 找不到中文字体,用默认字体替代 | 高 |
| 中文显示为“锟斤拷”“澶ц寖鍥”等乱码字符 | 字符编码被错误解读,或字体映射到不支持中文的 SHX 字体 | 高 |
| 文字显示为空心方块,或无边框方框 | 字体是 SHX 字体且缺少大字体文件,或 TTF 字体不存在 | 中 |
| 文字内容正常,但位置偏移、旋转角度不对 | 文字样式对齐方式或字体宽度因子被改变 | 低 |
| 文字完全看不到,但 CAD 状态栏提示有对象 | 图层被关闭、冻结,或颜色与背景色相同 | 中 |
实际排查时,优先检查占比最高的前两类:问号和乱码。这两类基本都是字体映射或字体缺失导致,而映射文件正是控制这个转换过程的配置文件。
1.3 映射文件在转档过程中的角色
SolidWorks 自带一个转档机制,输出 DWG/DXF 时会读取一个映射文件,告诉转换引擎三件事:SolidWorks 的字体名对应 CAD 的哪个字体;SolidWorks 的图层名对应 CAD 的哪个图层;SolidWorks 使用的线型对应 CAD 的哪种线型。映射文件的作用不是加密,也不是压缩,而是建立一套“原名到目标名”的对应规则。
如果映射文件里缺少某个字体,或者某条映射规则把中文字体映射到了一个只支持 ASCII 字符集的 CAD 字体,那么转出来的 DWG 必然乱码。理解了这一层,就能明白为什么网上很多“换 CAD 字体”“改系统区域语言”的偏方只能临时缓解,真正稳定可靠的解决办法是直接把映射文件配置对。
2. 先读懂映射文件,再动手修改
2.1 映射文件在哪里,有哪些
不同版本的 SolidWorks 安装路径略有差异,但映射文件基本都放在安装目录下的 data 或 data/map 文件夹中。常见文件包括图纸映射文件、图层映射文件和线型映射文件。在默认安装路径下,可以在以下位置查找:
C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\data\map\ C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\data\安装目录下可能不只一个映射文件,常见的关键文件有:
| 文件名 | 作用 |
|---|---|
| drawingmap.txt | 图纸输出映射,通常包含字体映射、图层映射和线型映射 |
| solidworks.map | 图层和线型映射规则 |
| sheetmap.txt | 图纸格式相关映射 |
不同版本目录结构和文件名不一定完全一致。如果本机找不到这些文件,可以在安装目录下搜索*.map、drawingmap.txt,或者打开 SolidWorks 的“另存为 DWG”选项界面,里面一般会显示当前使用的映射文件路径。这个路径才是最重要的,因为 SolidWorks 实际读取的是它在选项中指向的那个文件,而不是 data 目录下所有同名文件。
2.2 映射文件里到底写了什么
以常见的 drawingmap.txt 为例,文件内容通常是纯文本,每行一条规则,注释行以感叹号开头。文件里通常分成几个段落:字体映射、图层映射、线型映射。
典型格式如下:
! Font mapping SimSun, SimSun FangSong, FangSong ! Layer mapping 注释, 注释层 中心线, 中心线层每条规则的含义是“逗号左边的 SolidWorks 名称,在转换时替换为逗号右边的 CAD 名称”。判断一段映射是否有效,关键看两件事:源名称是否与 SolidWorks 文档中的字体名、图层名一致;目标名称是否在目标 CAD 环境中真实存在。如果映射的两端都对不上号,转换器就会退回到默认值,默认值往往是乱码的根源。
2.3 修改前必须做的备份和编码确认
修改映射文件之前,建议先把原始文件复制一份到安全目录。原因有两点:一是映射文件属于 SolidWorks 安装目录下的程序配置文件,改动后如果规则写错,可能导致后续所有图纸转档异常;二是 SolidWorks 升级或修复安装时,可能覆盖安装目录下的映射文件,保留备份可以在升级后快速对比差异。
另外,映射文件的编码对中文规则非常重要。用 Windows 记事本打开时,如果文件看起来正常,保存时注意右下角编码方式。常见映射文件使用的是 ANSI 或 GB2312 编码,如果另存为 UTF-8,某些版本的 SolidWorks 可能无法正确解析中文规则。推荐做法是:打开后不做不必要的编码转换,直接编辑内容,保存时保持与原文件一致的编码。
注意:不要直接用“另存为 UTF-8”覆盖原有映射文件。很多人在这一步把原本正常的映射文件存成了 UTF-8,结果 SolidWorks 读取中文规则失败,乱码反而加重。
3. 字体映射配置,解决中文乱码的核心操作
3.1 找到字体映射段落,确认当前规则
打开 drawingmap.txt 后,先往下翻,找到字体映射区域。不同版本段落标记不太一样,常见的关键词有Font mapping、FONT之类。看到形如“字体名, 字体名”的行,就是字体映射规则。
假设当前内容是:
! Font mapping Arial, Arial SimSun, SimSun FangSong, FangSong如果 SolidWorks 文档里使用的是“仿宋_GB2312”,而映射文件里根本没有这一条,转换时 SolidWorks 会按照默认规则处理,CAD 打开时很可能找不到对应字体。这时可以手动把规则补上,让 SolidWorks 的字体名指向 CAD 端的真实字体。
仿宋_GB2312, SimSun 黑体, SimHei 宋体, SimSun这里把“仿宋_GB2312”映射到“SimSun”而不是“仿宋_GB2312”,原因很实际:CAD 机房里很多电脑的 Windows 字体目录里根本没有“仿宋_GB2312”,但几乎都有 SimSun(宋体)。映射的目标字体必须真实存在,否则规则写了等于没写。
3.2 中文字体和特殊符号的推荐映射组合
不同企业使用的 CAD 字体环境差异很大,有的用 Windows 的 TTF 字体,有的用天正或中望自带的 SHX 字体。以下是一组通用性较好的映射建议,适合大多数普通机械加工和装备制造场景:
| SolidWorks 端字体 | CAD 端推荐字体 | 说明 |
|---|---|---|
| 宋体 / SimSun | SimSun | 最稳的中文 TTF 字体,几乎所有 Windows 都有 |
| 仿宋 / 仿宋_GB2312 | SimSun 或 FangSong | 优先 SimSun,避免 GB2312 字体在其他电脑缺失 |
| 黑体 / SimHei | SimHei | 标题栏常用,Windows 自带 |
| Arial | Arial | 数字和英文,保留原映射 |
| 默认字体 | SimSun | 兜底方案,避免默认映射到不支持中文的字体 |
特殊符号也是经常出问题的点。直径符号Φ、度符号°、正负号±在 SolidWorks 里显示正常,转成 DWG 后变成问号,通常是因为目标字体不支持这些字符。此时不要把这些符号单独映射,更不要手工在 CAD 里逐个替换,正确做法是让文字整体使用支持中文和符号的 TTF 字体,例如 SimSun。TTF 字体对常见工程符号支持较好,而部分 SHX 字体如果不配合大字体文件,就会把高位字符显示成方框或问号。
3.3 标注文字和表格文字乱码的处理差异
普通注释文字乱码和尺寸标注乱码,修复路径略有差别。尺寸标注文字除了依赖字体,还依赖尺寸样式。如果 SolidWorks 转出的 DWG 里尺寸文字出现乱码,但普通注释文字正常,说明尺寸样式引用的字体可能是单独的映射规则,这时要去映射文件里检查尺寸相关字体项,或者转档后到 CAD 里打开标注样式管理器,把尺寸文字的字体统一改成 SimSun。
表格文字,比如 SolidWorks 的 BOM 表转成 CAD 表格后的乱码,经常和块定义有关。此时映射文件只能解决字体部分,表格样式本身还需要到 CAD 里调整。经验是:先保证字体映射正确,再处理表格样式,一条路走不通时不要反复重转同一份图纸。
3.4 保存映射文件时的编码注意事项
编辑完映射文件后,保存时最容易踩编码坑。直接用 Windows 记事本编辑时,默认保存为 ANSI,这种编码通常没有问题。如果用 Visual Studio Code 编辑,就要注意右下角的编码状态。如果原文件是 ANSI 编码,你在 VS Code 里看到的中文正常是因为 VS Code 自动猜对了编码,但保存时如果没有选择“保存为 ANSI”,而是按 UTF-8 保存,SolidWorks 读取时可能把中文规则解析成错误字符。
建议操作顺序是:用记事本打开映射文件,确认中文显示正常,修改内容,保存时只选 ANSI 或与原始文件一致的编码。修改完成后,重新打开一次文件,确认中文规则没有变成乱码,再做转档验证。
# 在 Windows 下快速备份映射文件 copy "C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\data\map\drawingmap.txt" drawingmap_backup.txt4. 把映射文件正确应用到 SolidWorks 输出
4.1 另存为 DWG 时的操作路径
修改完映射文件后,需要让 SolidWorks 在输出时使用这个文件。打开工程图后,依次操作:文件 -> 另存为,文件类型选择 DWG,点击右下角的“选项”按钮,进入 DWG/DXF 导出选项。
在导出选项对话框中,通常会有“激活自定义映射”或类似选项。勾选后,点击“映射文件”位置的选择按钮,指向你编辑好的映射文件。如果映射文件路径没有加载,SolidWorks 会使用安装目录下的默认文件,你之前的修改就不会生效。
文件 -> 另存为 文件类型: DWG 选项 -> 激活自定义映射 -> 选择映射文件 确定 -> 保存这里最容易犯的错误是:改了安装目录下的原始文件,又没有在导出选项里重新指定映射文件,结果导出的规则还是旧的。建议把修改后的映射文件复制到一个独立目录,比如D:\CAD_Mapping\drawingmap.txt,在导出选项里统一指向这个文件。这样既避免直接改坏安装目录文件,也方便多台电脑共享同一份配置。
4.2 映射文件无法生效的常见原因
按照步骤配置后,如果转出的 DWG 仍然乱码,先不要急着改映射规则,按以下顺序检查:
| 检查项 | 方法 |
|---|---|
| 映射文件是否被选中 | 重新打开“另存为”选项,确认路径正确 |
| 文件编码是否被改动 | 用记事本重开映射文件,看中文规则是否可读 |
| 字体名称是否完全一致 | 对照 SolidWorks 文档属性里的字体名,注意全角半角、空格、下划线 |
| SolidWorks 是否重启 | 部分版本的配置读取在启动时缓存,修改后建议重启 SolidWorks |
| 转档版本是否过高 | 输出为 AutoCAD 2018 或更高版本时,CAD 端版本过旧也可能显示异常 |
特别注意字体名称。SolidWorks 里显示为“仿宋_GB2312”的字体,在映射文件里写错成“仿宋 GB2312”或者“仿宋_GB2312 ”(尾部带空格),转换时都匹配不上。
4.3 转档后 CAD 端的基本验证
转出 DWG 后,不要只看图形整体效果,要放大到标题栏文字、技术要求文字、尺寸数字和 BOM 表格四个区域逐项确认。CAD 端验证时,可以双击文字对象打开属性面板,看“文字”栏里的实际内容。如果属性面板里的文字是正常中文,但界面显示问号,说明文字内容没有丢失,问题只出在显示字体上,按第 5 章的方法处理即可。
如果属性面板里的文字本身就是乱码,说明文字在转换过程中已经被错误映射或替换,需要回到映射文件和导出选项排查。
5. CAD 端排查乱码,别把字体缺失当成文件损坏
5.1 打开 DWG 提示缺少 SHX 字体
AutoCAD 打开 DWG 时弹窗提示缺少 SHX 字体,是常见现象。遇到这个提示不要盲目点确定,先看缺少的字体名称。如果缺少的是gbcbig.shx、hztxt.shx这类大字体文件,说明图纸里的中文文字样式依赖 SHX 大字体,而当前 CAD 环境没有安装对应文件。
处理方法有两种。第一种是点击弹窗中的“指定每个缺少的 SHX 文件”,手动选择本机已有的中文字体;第二种是在 CAD 中执行STYLE命令,打开文字样式管理器,把对应样式的字体改为SimSun或宋体。修改后全图文字会统一刷新显示。
对于“以后打开别人的图纸都不弹缺少字体”的需求,可以把本机的 SHX 字体库补充完整,或者通过 CAD 的字体映射文件指定替代字体。需要注意,替代字体只能解决显示问题,如果原来图纸里使用的中文大字体规则复杂,替代后可能出现部分字符错位或显示成方框。
5.2 用属性面板确认文字内容本身没有损坏
判断乱码是“显示问题”还是“内容问题”,一个非常实用的操作是选中乱码文字,打开属性面板(快捷键Ctrl+1),查看文字对象的内容属性。
选中文字 -> 按 Ctrl+1 -> 查看“文字”或“内容”字段如果“文字”字段显示正常中文,说明 DWG 文件中的字符内容是正确的,乱码只是当前 CAD 字体替换导致。这种情况修改文字样式字体即可,不需要重新转档。如果“文字”字段本身就是乱码,说明问题出在 SolidWorks 转换环节,建议回到映射文件重新检查字体规则,再重新导出。
注意:在 CAD 里把文字打散成线段后再修改,会丢失文字属性,后续无法通过属性面板恢复。除非最终交付要求必须炸开文字,否则不要为处理乱码而把文字炸开。
5.3 CAD 端常见乱码现象速查表
| 现象 | 可能原因 | 检查方式 | 处理建议 |
|---|---|---|---|
中文显示??? | 文字样式引用的不是中文字体 | 打开属性面板查看文字内容 | 修改文字样式字体为 SimSun |
| 中文显示为乱码符号 | 映射文件把字体指向了非中文字体 | 检查映射文件字体规则 | 改为 SimSun 或本机已有中文字体 |
| 打开文件提示缺少 hztxt.shx | CAD 缺少中文大字体 | 查看字体缺失弹窗 | 指定替代字体或补装 SHX 文件 |
| 中文正常,数字/符号显示方框 | 字体不支持这些符号 | 查看文字样式中的字体 | 换成支持全字符集的 TTF 字体 |
| 输出为 PDF 时中文显示正常 | CAD 本身正常,转 PDF 驱动问题 | 检查 PDF 打印样式 | 打印设置中勾选“使用 TrueType 字体” |
6. 生产环境下的转档规范
6.1 映射文件统一管理和分发
在个人电脑上修改映射文件很容易,但企业里面临的是多台设计电脑、多台 CAD 电脑,甚至还有外协厂家。最怕的是每台电脑的映射文件各改各的,A 电脑转出的图纸在 B 电脑打开正常,到 C 电脑又乱码。
建议把映射文件作为标准化配置统一管理。做法是:选一台基准电脑,整理一份验证通过的映射文件,放到共享盘或版本管理仓库中,命名为drawingmap_std.txt。其他设计电脑在 SolidWorks 导出选项中统一指向这个共享文件。SolidWorks 升级后,先在基准电脑上验证新版映射文件兼容性,确认无误后再下发给其他电脑。
映射文件需要维护版本。每次修改前,建议在文件头部的注释区域记录修改日期和内容:
! 2025-01-10: 增加 仿宋_GB2312 -> SimSun 映射 ! 2025-01-10: 调整 图层映射,尺寸线统一进入 尺寸线层这样修改历史有迹可循,出问题也能快速回滚。
6.2 SolidWorks 文档字体统一,减少转档差异
映射文件能解决转换规则问题,但无法解决源文档本身字体混乱的问题。如果设计员在 SolidWorks 文档里使用了各种自定义字体,有的字体机器上有、有的没有,映射文件再全也覆盖不了所有情况。
推荐做法是在公司标准工程图模板里统一字体。标题栏、技术要求、尺寸标注分别指定固定字体,例如标题栏用“黑体”,技术要求用“仿宋_GB2312”,尺寸用“宋体”,并且在新模板里把字体名固定写死。这样映射文件只需要覆盖少数几种字体,维护成本大幅降低。
实际操作时,可以打开 SolidWorks 的“文档属性”窗口,找到“注释”“尺寸”“表格”等分类,把默认字体统一设置为宋体或黑体。保存模板后,新建工程图会自动使用这套字体配置。已有工程图如果字体已经五花八门,可以用“替换字体”工具批量统一后再转档。
6.3 批量转换后的抽检清单
用 SolidWorks 任务调度器批量把几十张工程图转成 DWG 时,逐张检查不现实,但也不能转完直接发出去。建议按图纸类型抽检,每类至少抽一张重点检查。抽检项包括:标题栏中文是否正常,技术要求是否可读,尺寸文字是否包含乱码,图层是否按预期合并,线型比例是否合适。
批量转档时,映射文件路径要格外注意。任务调度器打开的是 SolidWorks 后台进程,如果映射文件是网络路径且权限不足,后台转换可能读取不到自定义映射文件,直接使用默认配置,导致整批图纸乱码。处理方式是先把映射文件复制到每台设计电脑本地,或确认共享目录具有读取权限。
7. 从映射文件出发,建立完整的 DWG 转档检查清单
7.1 转档前检查清单
转档前花两分钟检查以下项目,能避免绝大多数乱码:
- SolidWorks 文档中的文字字体是否都在映射文件里有对应规则
- 映射文件的编码是否为 ANSI 或与原始文件一致
- 导出选项里是否勾选了自定义映射文件
- 映射文件路径是否是独立管理目录,且所有电脑都能访问
- SolidWorks 文档的单位和 DWG 输出单位是否一致,避免尺寸错误与乱码混淆
- 目标 DWG 版本是否低于或等于 CAD 端使用的版本
7.2 转档后验收清单
DWG 打开后逐项确认:
- 标题栏单位、图号、名称文字是否与 SolidWorks 一致
- 技术要求段落是否完整显示,无问号、无乱码
- 尺寸文字中的直径符号、度符号、公差符号是否正常
- 图层列表是否符合预期,没有出现大量自动生成的杂乱图层
- 用属性面板抽查三处文字,确认内容字段与实际文字相同
- 用不同 CAD 软件各打开一次,确认跨软件显示无差异
7.3 下一步扩展方向
映射文件解决的是“字体名 -> 字体名”的转换问题。实际转档规范还可以延伸到图层映射、线型比例、图框替换和批量自动化。比如多层 SolidWorks 图层统一映射到 CAD 的“0”层,或者把 SolidWorks 的孔标注映射成 CAD 的直径标注样式,这些都可以在映射文件或导出选项里继续配置。对经常出图的团队来说,建议把“SolidWorks 转 DWG”从一次性的手工操作,升级为一套有标准模板、有统一映射文件、有转档后抽检的规范化流程。字体映射只是第一步,但这一步做扎实,乱码问题就解决了一大半。