在 SolidWorks 出图、外发加工或与客户协同时,经常遇到一个非常头疼的问题:SolidWorks 工程图转成 DWG 后,用 AutoCAD 打开,中文注释全部变成“问号”或“方块”,图层名变成乱码,中心线、虚线全部变成实线,尺寸标注也错位。更麻烦的是,这种问题往往不是个例,而是整个工程图批量出现。网上搜到的解决办法大多是“把字体改成宋体”或者“重新安装字体”,改完还是时好时坏,根本没有解决根因。
这篇文章我会从根上讲清楚 SolidWorks 转 DWG 乱码的原因,重点讲解映射文件的配置方法,通过字体映射、图层映射、线型映射三个方面,把 SolidWorks 输出的图纸完美转成 AutoCAD 可正常使用、可编辑的 CAD 图纸。
如果你遇到的是“临时导出一下能用就行”的情况,那本文稍微有点超纲;但如果你需要长期、稳定、批量地把 SolidWorks 工程图转成 DWG 给下游使用,这篇文章非常建议完整看一遍。
1. 为什么 SolidWorks 转 DWG 会乱码
先说结论:SolidWorks 转 DWG 之后产生的乱码,绝大多数不是文件损坏,也不是软件问题,而是两个软件的“语言体系”不同,中间缺少翻译规则。
1.1 SolidWorks 和 AutoCAD 的图纸数据模型不一样
SolidWorks 工程图是一个“三维模型关联的二维表达”,它的文字、尺寸、图层、线型都保存在 SolidWorks 自己的数据模型里;而 AutoCAD 的 DWG 文件则是一套基于图元实体的独立格式。SolidWorks 在导出 DWG 时,需要把自身的文字对象转换为 AutoCAD 的文字对象,把自身图层转换为 AutoCAD 图层,把自身线型转换为 AutoCAD 线型。
在这个转换过程中,需要一张“翻译对照表”,告诉 SolidWorks:
- 你用的这个字体,在 AutoCAD 里应该替换成什么字体;
- 你用的这个图层名,在 AutoCAD 里应该叫什么;
- 你用的这个线型,在 AutoCAD 里应该对应哪种线型。
这张表,就是 SolidWorks 里的映射文件。
1.2 乱码的本质是字体和编码不匹配
乱码最常见的情况是中文注释变成“???”,或者变成一排方框。这是因为 SolidWorks 工程图中的文字用的是 Windows 字体(比如宋体、仿宋),但 AutoCAD 打开 DWG 时,如果字体文件缺失,AutoCAD 会用默认字体(一般是simplex.shx)代替,而simplex.shx不支持中文,就会显示为问号或乱码。
还有一种情况是,SolidWorks 导出的 DWG 文字本身就是 Unicode 编码,而 AutoCAD 使用的 SHX 字体编码不匹配,导致文字对应关系错乱。所以只改工程图里的字体并不一定能完全解决问题,因为导出时还涉及字体映射规则。
1.3 图层乱码和线型丢失是另一类高频问题
除了文字,图层的乱码同样常见。比如 SolidWorks 工程图里的图层名是“中心线层”“标注层”,导出后 AutoCAD 里显示为“???”或者变成__开头的系统图层,导致下游无法通过图层批量管理图纸。
线型丢失则是因为 SolidWorks 的线型名称(比如Dashed、Center、Phantom)和 AutoCAD 的线型名称(比如DASHED、CENTER、PHANTOM)不完全一致,映射不上时就自动落回Continuous(实线)。这就是为什么很多人导出后中心线、虚线全变成实线的原因。
2. 认识映射文件:解决乱码的关键
2.1 映射文件是什么
SolidWorks 的映射文件(Mapping File)是一个纯文本文件,通常位于 SolidWorks 安装目录的data文件夹下,文件名是solidworks2d.dxf或类似名称。它的作用就是在 SolidWorks 导出 DXF/DWG 时,控制实体、图层、线型、字体等属性的对应关系。
映射文件可以简单理解为一张“翻译对照表”,里面记录了:
| 映射类别 | 意义 |
|---|---|
$INSUNITS | 导出单位映射 |
$LAYERS | SolidWorks 图层与 AutoCAD 图层的对应关系 |
$LINETYPES | SolidWorks 线型与 AutoCAD 线型的对应关系 |
$FONTS | SolidWorks 字体与 AutoCAD 字体的对应关系 |
$COLORS | 颜色映射规则 |
$DIMENSIONS | 尺寸对象、注释对象的输出规则 |
2.2 为什么要手动配置映射文件
SolidWorks 安装时自带的默认映射文件,基本能满足“图形能打开”的需求,但对中文字体、中文图层名、自定义线型的支持非常有限,默认映射通常不会自动将中文字体替换为 AutoCAD 可识别的字体。
所以实际工程中,我们需要手动编辑映射文件,明确告诉 SolidWorks:中文用什么字体,图层叫什么名字,线型对应什么类型。配置一次之后,后续每次导出都会沿用这套规则,团队里所有人共享一个映射文件,输出效果也能保持一致。
2.3 映射文件、工程图模板、导出设置三者配合
这里需要澄清一个概念:映射文件不是唯一的配置项,它需要和 SolidWorks 工程图模板配合工作。
- 工程图模板控制的是设计阶段的字体、图层命名、线型、标注样式;
- 映射文件控制的是导出阶段把 SolidWorks 的字体/图层/线型对应到 AutoCAD 的哪一个对象;
- 导出设置控制的是导出 DXF/DWG 版本、是否激活映射文件、是否输出 3D 数据等。
三者配合,才能保证“设计时用着顺手,导出后下游用着也顺手”。如果你只在 SolidWorks 里把字体改成宋体,但映射文件里没有做字体替换规则,某些情况下依然可能乱码。
3. 环境准备与导出前的工程图检查
3.1 软件环境说明
本文以 Windows 环境 + SolidWorks 工程图模块 + AutoCAD 查看验证为例。SolidWorks 的版本从 2016 到 2024 之间,映射文件的位置和编辑方式基本一致,但不同版本可能在导出选项界面布局上略有差异,操作时以你本机安装的版本为准。
AutoCAD 建议至少使用 2010 以上版本打开验证,早期版本对 TTF 字体的兼容性稍差,容易误判“还是乱码”。
3.2 导出前检查工程图字体
在配置映射文件之前,先检查一下 SolidWorks 工程图本身的字体设置。如果工程图里的字体本身就很乱,比如标题栏用了很多种中文字体、西文字体混杂,那么即使映射文件配置得再好,也无法保证百分之百不乱码。
建议打开 SolidWorks 工程图,进入工具 -> 选项 -> 文档属性,检查“注释”“尺寸”“表格”等选项下的字体设置。常见做法是:
- 中文文字字体统一使用“仿宋”或“宋体”;
- 西文和数字字体统一使用“Arial”或“Times New Roman”;
- 标题栏标准文字使用“仿宋”,尺寸标注文字使用“仿宋”或“宋体”;
- 不要使用 SolidWorks 特有的艺术字体或特殊符号字体。
这样做的原因很简单:仿宋、宋体、黑体、Arial 这些都是 Windows 系统自带字体,也是 AutoCAD 环境里最容易找到的字体,字体映射时不容易丢字。
3.3 检查图层命名
SolidWorks 工程图里的图层名,建议在创建时就使用英文字母、数字、下划线,不要直接用中文。例如:
- 不建议:
中心线层 - 建议:
CENTER_LINE或CENTER - 不建议:
标注层 - 建议:
DIM或DIMENSION
虽然映射文件可以把中文图层名映射成英文字段,但图层名本身是设计阶段就存在的,能主动规避就用主动规避的方式,少做一层翻译就少一层出错概率。
4. 映射文件配置实战
下面进入核心内容:如何编辑映射文件,将 SolidWorks 导出的 DWG 完美转成 AutoCAD 可用图纸。
4.1 找到映射文件位置
不同的安装路径可能不一样,常见位置如下:
C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\data\solidworks2d.dxf或者:
C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\data\solidworks2d.dxf.txt如果你不知道自己的映射文件在哪里,可以用以下方式找:
- 在 SolidWorks 中执行一次“另存为 DWG”操作,在弹窗中点击“选项”;
- 在弹出的导出选项对话框中,会显示当前激活的映射文件路径;
- 点击“浏览”可以查看文件所在的目录。
找到映射文件后,先复制一份备份,例如改成solidworks2d_backup.dxf,再开始编辑。备份很重要,因为映射文件一旦误改,后续所有导出都会受牵连。
4.2 备份并打开映射文件
用系统自带的“记事本”或者“Notepad++”打开映射文件。不建议用 Word 编辑,因为 Word 会更改文件编码和换行符,可能导致 SolidWorks 无法识别。
打开后,你会看到一份以!开头注释行的文本。部分段落如下:
! ============================== ! SolidWorks -> AutoCAD 映射文件 ! 注释行以 ! 开头 ! ==============================4.3 修改字体映射,解决中文乱码
字体映射是解决乱码最核心的段落。不同版本的映射文件里,字体映射段的写法可能略有差异,但思路一致:把 SolidWorks 里的字体名,映射成 AutoCAD 里存在的字体名。
下面是一个简化示例,展示字体映射的思路:
$FONTS 仿宋, gbcbig.shx 宋体, simsun.ttf 黑体, simhei.ttf Arial, arial.ttf注意:gbcbig.shx是 AutoCAD 的中文大字体,通常搭配gbeitc.shx或gbenor.shx使用,适合在 AutoCAD 中显示中文和西文。simsun.ttf是宋体 TrueType 字体,Windows 系统自带,AutoCAD 也能正常引用。
如果 AutoCAD 打开后仍然乱码,可能是 AutoCAD 侧的字体映射问题,此时可以检查 AutoCAD 的FONTALT系统变量。在 AutoCAD 命令行输入:
FONTALT把这个值设置为simfang.ttf或simsun.ttf,这样当字体缺失时,AutoCAD 会自动用中文字体替代,而不是用不支持中文的simplex.shx。
4.4 配置图层映射,避免图层名乱码
图层映射段负责把 SolidWorks 的图层名映射为 AutoCAD 的图层名。如果你在 SolidWorks 里用了中文图层名,可以在映射文件里这样配置(示例):
$LAYERS 0, 7, CONTINUOUS 中心线层, 1, CENTER 标注层, 2, CONTINUOUS这段含义是:
- SolidWorks 图层
中心线层导出为 AutoCAD 中颜色号1(红色)、线型CENTER的图层; - SolidWorks 图层
标注层导出为 AutoCAD 中颜色号2(黄色)、线型CONTINUOUS的图层。
如果 SolidWorks 里的图层名是英文,比如DIM,那可以直接映射为:
$LAYERS DIM, 2, CONTINUOUS最关键的一点:不要让 SolidWorks 图层直接暴露到 AutoCAD 中变成系统随机图层名。所有需要在 AutoCAD 中管理的图层,都应该在映射文件里有一条显式规则,避免生成__开头的临时图层。
4.5 配置线型映射,解决虚线变实线
线型映射段负责把 SolidWorks 的线型名映到 AutoCAD 的线型名。常见的线型映射如下:
$LINETYPES Continuous, CONTINUOUS Dashed, DASHED Center, CENTER Phantom, PHANTOM注意,AutoCAD 中线型名称通常是大写字母,而 SolidWorks 中线型名可能是首字母大写。映射文件里两侧的名称需要准确匹配,否则线型识别不到时,会自动变成Continuous。
如果你在 SolidWorks 工程图中自定义了线型,比如“中心线(粗)”,导出后也希望能对应到 AutoCAD 的CENTER,同样需要添加一行映射规则。
4.6 保存映射文件
修改完成后,保存文件,注意保持原来的编码格式(一般是 ANSI 或 UTF-8,不用刻意改)。如果使用“记事本”保存,建议在“另存为”时选择“ANSI”编码,避免部分 SolidWorks 版本对 UTF-8 带 BOM 文件解析出错。
保存后不要直接关掉,先到 SolidWorks 里验证一次导出,确认乱码是否解决。
5. 在 SolidWorks 中激活映射文件并导出 DWG
映射文件改好了,接下来要告诉 SolidWorks 使用这份文件。
5.1 单次导出时激活映射文件
在 SolidWorks 中打开工程图,点击文件 -> 另存为,在“保存类型”中选择DWG,点击“选项”按钮。此时会弹出 DWG/DXF 导出选项对话框,找到“激活映射文件”选项,选择你修改好的映射文件。
界面上的选项大致如下:
- 导出所有工程图为 DWG/DXF 文件;
- 激活映射文件(选中后可以浏览选择映射文件路径);
- 自定义 SolidWorks 到 AutoCAD 的映射;
- 针对 AutoCAD 版本进行导出设置。
选择映射文件后,建议把 AutoCAD 版本设置为和你目标环境匹配的版本。比如下游统一用 AutoCAD 2018,就可以在下拉框中选择AutoCAD 2018。如果拿不准,选择AutoCAD 2013或AutoCAD 2010这类中间版本,兼容性一般更好。
5.2 设置默认导出选项
如果你不希望每次导出都手动切换映射文件,可以在 SolidWorks 中设置默认导出配置:
工具 -> 选项 -> 系统选项 -> 导出,在 DXF/DWG 相关选项中选择默认使用的映射文件。这样后续每次另存为 DWG 时,SolidWorks 会自动加载这份映射文件,不用反复手动选择。
5.3 导出后验证
导出完成后,用 AutoCAD 打开 DWG,重点检查以下几项:
- 中文注释是否正常显示;
- 图层名是否正常、是否按映射规则创建;
- 中心线、虚线、点画线是否保持对应线型;
- 尺寸标注文字是否完整;
- 标题栏文字是否缺失或错位。
如果仍有问题,回到映射文件中继续微调,通常两三次迭代后就能稳定。
6. 常见问题与排查思路
映射文件配置并不是一次就能成功的,尤其是不同版本的 SolidWorks、不同字体环境、不同 AutoCAD 版本组合,可能出现各种状况。下面整理了一些高频问题。
| 问题现象 | 常见原因 | 解决思路 |
|---|---|---|
| 中文注释变成问号或方块 | 映射文件字体缺失,或 AutoCAD 缺少对应字体 | 在映射文件中添加中文字体映射,建议统一映射到gbcbig.shx或simsun.ttf |
| 图层名显示为乱码 | SolidWorks 图层名为中文,且映射文件未配置对应的图层映射 | 将映射文件中增加该图层的显式映射规则,尽量映射为英文字段图层名 |
| 中心线、虚线全部变成实线 | 线型映射缺失或线型名称不匹配 | 在$LINETYPES段中补充线型映射,并在 AutoCAD 中确认线型已加载 |
尺寸文字偏移或变成??? | 尺寸标注使用的字体与映射目标字体度量不同 | 统一尺寸文字字体,映射到相同 TTF 字体,避免使用 SHX 大字体时度量差异 |
| 特殊符号(直径、角度)显示异常 | 字体不支持Ø、°、±等特殊符号 | 将相关文字映射到simsun.ttf或simfang.ttf,这类 TTF 字体对特殊符号支持更好 |
| 导出后标注关联性丢失 | SolidWorks 尺寸导出为普通文字而非 CAD 标注对象 | 在导出选项中取消“导出注释为文字”类选项,或在映射文件中配置尺寸对象输出规则 |
如果遇到上述问题仍然无法解决,可以按下面步骤排查:
- 用 AutoCAD 打开 DWG,执行
FONTALT命令,把替代字体设置为simfang.ttf; - 执行
STYLE命令,检查文字样式的“大字体”选项是否启用; - 如果图层乱码,先检查 AutoCAD 的图层列表,确认是图层名本身乱码还是显示乱码;
- 在 SolidWorks 中导出一张最简单的工程图(只包含一行中文注释),用最小化方式定位问题出在字体、图层还是线型;
- 每修改一次映射文件,都重新导出并验证一次,不要一次性改多处。
7. 最佳实践与工程建议
映射文件配置好只是第一步,要让整个团队的 SolidWorks 转 DWG 稳定不乱码,还需要在规范和管理层面做一些工作。
7.1 统一工程图模板
强烈建议在 SolidWorks 工程图模板中统一字体和图层命名规则。模板里的字体、图层、线型越规范,导出时越不容易出错。比如:
- 图层名统一英文:
DIM、CENTER、HIDDEN、TITLE; - 注释字体统一为“仿宋”,尺寸字体统一为“仿宋”;
- 线型统一使用标准线型库中的名称。
7.2 维护共享映射文件
映射文件不要放在个人电脑的临时目录,建议放在团队共享目录或代码仓库中,统一管理。新入职的同事只需要拿到这一份映射文件,放到自己电脑上并在 SolidWorks 中激活即可,省去重复踩坑的时间。
7.3 建立导出验证清单
养成每次导出前检查的习惯,可以大幅度减少外发图纸出错。下面是一个简单的验证清单:
- [ ] 工程图中没有使用特殊字体、艺术字体;
- [ ] 图层名全部是英文或已在映射文件中配置;
- [ ] 映射文件已选择,不是默认的空白映射;
- [ ] AutoCAD 版本选择与下游一致或向下兼容;
- [ ] 导出后用 AutoCAD 打开,中文、图层、线型都正常。
7.4 关注版本兼容性
SolidWorks 不同版本自带的默认映射文件格式可能略有不同,升级 SolidWorks 后,建议重新检查一遍映射文件是否仍生效。如果团队中有人使用旧版本映射文件激活到新版本 SolidWorks,遇到导出异常时,优先怀疑映射文件字段兼容性。
7.5 特殊符号和标题栏处理
如果工程图里有大量直径符号Ø、角度符号°、公差符号±,建议把这些文字统一使用 TTF 字体(宋体、仿宋),因为 TTF 字体对 Unicode 符号支持较好。SHX 大字体虽然能解决中文显示,但特殊符号支持不一定完整。标题栏部分也可以单独测试:先在 SolidWorks 中导出一张只包含标题栏的工程图,确认标题栏文字和边框在 AutoCAD 中正常,再导出完整图纸。
8. 总结
SolidWorks 输出 DWG 之后乱码,本质上不是文件坏了,而是 SolidWorks 到 AutoCAD 之间缺少一套完善的“翻译规则”。通过配置映射文件,把字体、图层、线型逐项映射到 AutoCAD 可识别的对象,就能从根本上解决中文乱码、图层乱码、线型丢失等问题。
这篇文章的重点实操内容可以简单归纳为三步:
- 找到 SolidWorks 安装目录下的映射文件,备份后编辑;
- 在映射文件中配置字体映射、图层映射、线型映射;
- 在 SolidWorks 导出 DWG 时激活这份映射文件,并根据 AutoCAD 环境微调。
配置完成后,建议把映射文件纳入团队共享管理,后续所有导出都使用同一套规则。这样不仅自己省事,下游拿到图纸后也能直接用于加工、设计与归档。