简介这份文档面向使用Solidworks进行三维建模、又需要与AutoCAD团队协作的工程师与设计人员聚焦工程图转DWG/DXF格式时字体错乱、图层混乱、线型丢失等常见痛点提供从基础转换到进阶映射再到宏自动化的完整解决思路。资源包内仅含1个docx文件约946KB以图文步骤形式组织内容便于对照操作与查阅。文档依次讲解注解字体设置与drawfontmap.txt字体映射文件的修改方法、自定义映射Solidworks到DXF的图层与颜色线型配置、映射文件的保存复用以及利用VBA宏实现一键批量转换的代码与调试要点并附有对宏代码各部分的解释。已有553人学习下载适合希望减少重复劳动、保证转换后图纸在AutoCAD中图层与样式一致的跨软件工作者参考。1. Solidworks 工程图转 CAD 图纸为什么你导出的 DWG 总是“看着像、改起来废”如果你在机械设计岗待过大概率遇到过这个场景Solidworks 里画好的工程图标注、公差、粗糙度、焊接符号一应俱全另存为 DWG 发给供应商或者外协厂对方打开一看——尺寸线全散了图层乱成一锅粥标题栏文字变成了问号原本对齐的剖视图跑偏了。这不是玄学是 Solidworks 到 DWG 这条转换链路上映射规则没配对。这个标题讲的就是这件事把 Solidworks 工程图.slddrw转成 AutoCAD 能正常编辑的 DWG/DXF。它解决的核心问题是“转换后图纸还能不能改、还能不能看”。适合两类人一是每天要出图给下游的机械工程师二是需要批量处理历史图纸的工艺或文控人员。热搜里 solidworks、DWG、AutoCAD、VBA 这几个词反复出现说明大家卡的点很集中——不是不会点“另存为”而是转出来不能用。我自己的血泪经验是默认设置直接另存十次有八次要被下游打回来。真正能用的转换得先把映射规则、图层、字体、线型这几件事在导出前定死。下面按“先搞懂映射逻辑 → 再动手配 → 再批量跑 → 再排错”的顺序拆开讲。2. 先搞懂 Solidworks 到 DWG 的映射逻辑图层、线型、字体到底谁说了算2.1 映射不是“翻译”是“按规则重建”很多人以为 Solidworks 导出 DWG 是把图形“复制”过去其实不是。Solidworks 工程图内部用的是自己的实体模型和注解体系导出时是通过一套映射表把 Solidworks 的线型、图层、字体、颜色逐项对应到 DWG 的对应属性上。映射表没配好导出的 DWG 就是“图形在、属性丢”。具体来说Solidworks 导出 DWG 时处理这几类对象几何线条可见边、隐藏边、切线边、剖面线分别对应 DWG 的不同线型。注解尺寸、公差、基准、粗糙度、焊接符号、形位公差对应 DWG 的标注样式和文字样式。图层Solidworks 本身图层概念很弱导出时靠映射文件把不同对象分配到 DWG 图层。字体Solidworks 用的字体和 AutoCAD 的 SHX/TTF 字体不是一回事映射不对就出问号。所以核心动作是在 Solidworks 里打开“另存为 DWG”的选项对话框把“选项”里的映射文件、字体、线型、图层逐项确认。默认映射文件是swmap.ini之类的但默认值往往不适合国内出图习惯。2.2 图层映射把 Solidworks 的“类别”翻译成 DWG 的“图层”Solidworks 导出 DWG 时图层映射靠一个映射文件控制。常见做法是自定义一个映射文件把 Solidworks 的对象类别映射到公司标准图层。比如Solidworks 对象类别映射到 DWG 图层线型颜色可见边轮廓线Continuous白/黑隐藏边虚线Hidden黄切线边细实线Continuous灰尺寸标注标注Continuous绿剖面线剖面Continuous青文字注释文字Continuous白这个表不是固定的得按你们公司的图层标准来。关键是映射文件里每一行对应一个类别导出时 Solidworks 按这个表分配图层。如果映射文件里没定义的类别导出时会落到默认图层通常就是“0”层下游一看全在 0 层没法关图层、没法改颜色。我一般会先导出一张测试图用 AutoCAD 打开后看每个对象在哪个图层再反推映射文件该怎么改。这个“导出 → 检查 → 改映射 → 再导出”的循环跑两三遍就能把映射表定下来。2.3 字体映射问号问题的根源DWG 里文字变问号99% 是字体映射没配。Solidworks 工程图里用的字体比如宋体、仿宋、Arial在导出时如果映射文件里没指定对应的 AutoCAD 字体AutoCAD 打开时就找不到字体显示成问号或方框。解决方式有两种在 Solidworks 导出选项里把“字体”映射到 AutoCAD 的 SHX 字体或 TTF 字体。国内机械图纸常用gbcbig.shx仿宋和gbenor.shx西文映射到这两个基本不会出问题。如果下游用的是 TTF 字体比如宋体就在映射里指定simsun.ttc或simfang.ttf。注意映射文件里字体名要写 AutoCAD 能识别的字体文件名不是字体显示名。比如“仿宋”要写simfang.ttf或gbcbig.shx写“仿宋”两个字没用。2.4 线型映射虚线变实线的坑Solidworks 里的隐藏边导出后变成实线通常是线型映射没配。DWG 的线型是靠acad.lin或acadiso.lin定义的Solidworks 导出时如果没指定线型文件隐藏边可能就按默认实线走。常见做法是在导出选项里指定线型映射把“隐藏边”映射到HIDDEN或DASHED线型。如果下游图纸标准用的是自定义线型就把自定义线型文件放到 AutoCAD 支持路径下映射文件里写对应的线型名。这里有个细节Solidworks 导出 DWG 时线型比例可能和 AutoCAD 默认比例不一致导致虚线看起来像实线。解决办法是在导出选项里设置“线型比例”或者在 AutoCAD 里用LTSCALE命令统一调整。3. 手动导出一次能用的 DWG从另存为到映射文件配置的完整步骤3.1 打开导出选项别直接点保存在 Solidworks 里打开工程图点“文件 → 另存为”文件类型选 DWG*.dwg然后不要直接点“保存”先点右下角的“选项”按钮。这个选项对话框才是决定导出质量的地方。对话框里几个关键页签“常规”设置导出比例、是否导出图纸格式、是否导出注解。“图层”指定映射文件或者手动编辑映射。“线型”指定线型映射。“字体”指定字体映射。“注解”控制尺寸、公差、注释的导出方式。我一般会先把“常规”里的“导出比例”设为 1:1除非下游明确要求按比例缩放。“导出图纸格式”勾上这样标题栏和边框会一起导出。3.2 配置映射文件从默认到自定义在“图层”页签里点“映射文件”旁边的浏览按钮选一个映射文件。Solidworks 自带几个默认映射文件但国内用的话建议自己改一个。映射文件本质是一个文本文件格式大致是[Layer Mapping] Visible Edges轮廓线 Hidden Edges虚线 Tangent Edges细实线 Dimensions标注 Section Lines剖面 Notes文字实际格式可能更复杂但逻辑就是这个。你可以用记事本打开默认映射文件另存为自己的然后按公司标准改。改完后在导出选项里加载这个自定义映射文件。加载后对话框里会显示映射结果可以逐项检查。3.3 字体映射的具体设置在“字体”页签里把 Solidworks 字体映射到 AutoCAD 字体。常见映射Solidworks 字体AutoCAD 字体说明仿宋gbcbig.shx国内机械图常用宋体simsun.ttcTTF 字体Arialgbenor.shx西文字体Times New Romantimes.ttf可选如果映射文件里没列出的字体导出时会用默认字体通常就是问号。所以最好把工程图里用到的字体都列进去。3.4 导出后的检查清单导出 DWG 后用 AutoCAD 打开按这个清单检查图层是否按映射分配有没有全在 0 层。文字是否正常显示有没有问号。虚线是否显示为虚线线型比例是否合适。尺寸标注是否可编辑标注样式是否正常。标题栏和边框是否完整。剖视图和局部视图位置是否正确。如果某一项不对回到 Solidworks 改映射重新导出。这个循环跑几次就能把映射表调稳。4. 用 VBA 批量转 DWG几十张工程图一次跑完的脚本与参数4.1 为什么用 VBA 而不是手动一张张导手动导出适合调映射阶段但一旦映射表定下来批量导出就是刚需。比如一个项目几十张工程图一张张另存为太慢而且容易漏。Solidworks 支持 VBA 宏可以遍历文件夹里的.slddrw文件批量导出 DWG。热搜里 VBA 出现频率很高说明很多人已经在用 VBA 做 Solidworks 二次开发。批量转 DWG 是 VBA 在 Solidworks 里最实用的场景之一。4.2 批量导出脚本的核心逻辑下面是一个批量导出 DWG 的 VBA 脚本框架逻辑是遍历指定文件夹里的所有.slddrw文件逐个打开按指定映射导出 DWG然后关闭。 Solidworks 批量导出 DWG 宏 遍历文件夹将 .slddrw 导出为 .dwg Dim swApp As Object Dim swModel As Object Dim swExport As Object Dim swDraw As Object Dim fileName As String Dim folderPath As String Dim exportPath As String Dim fileExt As String Sub main() Set swApp Application.SldWorks folderPath D:\Projects\Drawings\ 工程图所在文件夹 exportPath D:\Projects\DWG\ 导出目标文件夹 fileName Dir(folderPath *.slddrw) Do While fileName 打开工程图只读模式加快速度 Set swModel swApp.OpenDoc6(folderPath fileName, 3, 1, , 0, 0) If Not swModel Is Nothing Then 设置导出选项加载映射文件 Set swExport swModel 导出 DWG参数目标路径、映射文件、输出选项 swModel.Extension.SaveAs exportPath Replace(fileName, .slddrw, .dwg), 0, 1, Nothing, 0, 0 关闭工程图不保存 swApp.CloseDoc swModel.GetTitle End If fileName Dir Loop MsgBox 批量导出完成 End Sub这段代码的关键点OpenDoc6的第二个参数3表示工程图类型1表示只读模式加快打开速度。SaveAs的第二个参数0表示 DWG 格式具体值可能因 Solidworks 版本不同而有差异需要查对应版本的 API 文档。映射文件需要在SaveAs之前通过导出选项设置或者用swExport对象单独配置。实际使用时映射文件的加载方式可能需要在SaveAs前调用swModel.Extension.SetUserPreference或类似接口。不同版本 API 有差异建议先用录制宏的方式生成基础代码再改成批量循环。4.3 参数怎么调导出选项的 API 对应在 VBA 里控制导出选项主要靠swExport相关接口。常见参数参数含义常用值ExportFormat导出格式DWG/DXFMappingFile映射文件路径自定义 .iniExportAnnotations是否导出注解TrueExportSheetFormat是否导出图纸格式TrueExportScale导出比例1:1LineStyleFile线型文件acadiso.lin这些参数在 API 里可能对应不同的方法或属性具体要看 Solidworks 版本。我一般会先用“录制宏”功能手动导出一次看录下来的代码里怎么设置这些参数然后改成循环。4.4 批量导出的性能与稳定性批量导出几十张图时注意几点用只读模式打开减少内存占用。每导出一张后关闭文档避免内存泄漏。如果某张图导出失败记录文件名继续下一张不要中断整个循环。导出前确保目标文件夹存在否则SaveAs会报错。如果图纸特别多上百张可以考虑分批跑或者用 Solidworks Task Scheduler如果版本支持。但 VBA 的好处是灵活可以按自己的规则筛选文件、命名、分类。5. 避坑与排查转换后图纸出问题的 5 个高频场景5.1 现象DWG 打开后文字全是问号原因字体映射没配或者映射文件里字体名写错。AutoCAD 找不到对应字体用默认字体替代显示为问号。解决在导出选项的“字体”页签里把工程图用到的字体逐个映射到 AutoCAD 字体。国内图纸优先映射到gbcbig.shx和gbenor.shx。如果下游用 TTF映射到simfang.ttf或simsun.ttc。映射文件里字体名要写文件名不是显示名。5.2 现象所有线条都在 0 层没法关图层原因图层映射文件没加载或者映射文件里没定义对应类别。Solidworks 导出时未映射的对象默认落到 0 层。解决在导出选项里加载自定义映射文件确保每个对象类别都有对应图层。导出后检查图层分配如果还有遗漏补充映射文件后重新导出。5.3 现象虚线显示为实线原因线型映射没配或者线型比例不对。Solidworks 导出时隐藏边没映射到虚线线型或者 AutoCAD 的LTSCALE值太大/太小导致虚线看起来像实线。解决在导出选项里指定线型映射把隐藏边映射到HIDDEN或DASHED。导出后在 AutoCAD 里用LTSCALE调整线型比例通常设为 0.5 到 2 之间具体看图纸尺寸。5.4 现象尺寸标注变成炸开的线条不能编辑原因导出时注解没有作为标注对象导出而是被炸开成线条和文字。这通常是因为导出选项里“注解”设置不对或者映射文件里尺寸标注没有映射到标注样式。解决在导出选项的“注解”页签里确保“导出注解”勾选并且尺寸标注映射到 DWG 的标注样式。如果还是炸开检查 Solidworks 工程图里的尺寸是不是用“输入尺寸”而非“参考尺寸”输入尺寸导出时可能被炸开。5.5 现象批量导出时程序崩溃或卡死原因内存泄漏、文件句柄未释放、某张图纸损坏。Solidworks 批量打开文档时如果不及时关闭内存会持续增长最终崩溃。解决每导出一张后调用CloseDoc关闭文档并释放对象引用Set swModel Nothing。如果某张图导致崩溃先单独打开检查修复后再批量跑。另外确保 Solidworks 版本和 VBA 环境稳定避免在导出过程中进行其他操作。6. 进阶用映射文件模板 脚本参数化把转换做成可复用的出图流水线前面讲的是一次性配置和批量脚本但真正省事的做法是把映射文件模板化和脚本参数化让不同项目、不同标准都能快速切换。我自己的习惯是维护一套映射文件模板按图层标准分类国标模板、企标模板、供应商专用模板。每个模板对应一个.ini映射文件放在固定目录。VBA 脚本里加一个参数指定用哪个模板导出时自动加载对应映射文件。具体做法 根据项目参数选择映射文件 Dim mappingFile As String Select Case projectStandard Case GB mappingFile D:\Mappings\GB_Mapping.ini Case Company mappingFile D:\Mappings\Company_Mapping.ini Case Else mappingFile D:\Mappings\Default_Mapping.ini End Select 在 SaveAs 前加载 mappingFile这样切换项目时只需要改一个参数不用重新配置导出选项。另一个技巧是导出后自动检查。在 VBA 里加一段逻辑导出 DWG 后用 AutoCAD 的 COM 接口打开检查图层数量、文字是否正常、线型是否正确。如果检查不通过记录日志并标记该文件需要人工复查。这样批量导出后不用一张张打开看直接看日志就知道哪些有问题。验证方法拿一张典型工程图用不同映射模板各导一次对比 DWG 的图层、字体、线型、标注。选最符合下游要求的模板作为默认。然后跑一次批量导出检查日志确认没有异常。我踩过的最大坑是映射文件改好后没有备份换电脑后丢了重新配了一遍。所以现在映射文件和脚本都放在版本控制里改之前先提交改坏了能回滚。这个习惯帮我省了不少后悔药。希望帮到你。本文还有配套的精品资源点击获取