求SolidWorks零件配置转DXF合并宏(CNC加工用)
SolidWorks多配置零件批量导出顶视图DXF宏
需求说明
我需要为CNC加工从SolidWorks导出大量DXF文件,要求创建一个宏,将零件的每个配置以顶视图形式导出为DXF文件,保存至SolidWorks原文件所在目录。已找到两个宏:第一个可批量保存各配置为单独零件文件,第二个可导出单个零件的顶视图DXF,希望将二者功能合并。
合并后的完整宏代码
Option Explicit Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim swPart As SldWorks.PartDoc Dim configNamesArray As Variant Dim origConfigName As String Dim partPath As String Dim partName As String Dim dxfPath As String Dim configName As Variant Dim cleanConfigName As String Dim varAlignment As Variant Dim dataAlignment(11) As Double Dim varViews As Variant Dim dataViews(0) As String Sub main() ' 连接SolidWorks会话 Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc ' 检查是否有激活文档 If swModel Is Nothing Then MsgBox "请先打开一个SolidWorks零件文件", vbOKOnly, "错误" Exit Sub End If ' 检查是否为零件文档 If swModel.GetType <> swDocPART Then MsgBox "仅支持零件文档,请打开零件后重试", vbOKOnly, "错误" Exit Sub End If ' 获取配置数量 Dim configCount As Long configCount = swModel.GetConfigurationCount ' 检查是否有多个配置 If configCount <= 1 Then MsgBox "零件需要至少两个配置才能执行此宏", vbOKOnly, "错误" Exit Sub End If ' 获取原文件路径和名称 partPath = swModel.GetPathName partName = Left(swModel.GetTitle, Len(swModel.GetTitle) - 6) ' 移除.sldprt后缀 ' 初始化顶视图导出参数 dataAlignment(0) = 0# dataAlignment(1) = 0# dataAlignment(2) = 0# dataAlignment(3) = 1# dataAlignment(4) = 0# dataAlignment(5) = 0# dataAlignment(6) = 0# dataAlignment(7) = 0# dataAlignment(8) = -1# dataAlignment(9) = 0# dataAlignment(10) = 1# dataAlignment(11) = 0# varAlignment = dataAlignment dataViews(0) = "*Top" varViews = dataViews ' 获取所有配置名称 configNamesArray = swModel.GetConfigurationNames ' 记录初始配置 origConfigName = swModel.GetConfigurationName ' 遍历所有配置 Dim i As Long For i = 0 To UBound(configNamesArray) configName = configNamesArray(i) ' 切换到当前配置 swModel.ShowConfiguration2 configName ' 清理配置名称中的特殊标识(如<As Machined>、<As Welded>) cleanConfigName = Replace(Replace(configName, "<As Machined>", ""), "<As Welded>", "") cleanConfigName = Trim(cleanConfigName) ' 移除首尾空格 ' 生成DXF保存路径:原目录\原零件名_配置名.dxf dxfPath = Left(partPath, Len(partPath) - 6) & "_" & cleanConfigName & ".dxf" ' 导出顶视图DXF Set swPart = swModel swPart.ExportToDWG2 dxfPath, partPath, swExportToDWG_e.swExportToDWG_ExportAnnotationViews, _ True, varAlignment, False, False, 0, varViews Next i ' 恢复初始配置 swModel.ShowConfiguration2 origConfigName ' 提示完成 MsgBox "所有配置的DXF文件已导出至:" & vbCrLf & Left(partPath, InStrRev(partPath, "\")), vbInformation, "导出完成" End Sub
关键修改说明
- 移除了原第一个宏中保存单独零件文件的冗余步骤,直接切换配置后导出DXF,大幅提升效率并节省磁盘空间
- 自动使用原零件所在目录作为DXF保存路径,无需手动选择文件夹
- 每个DXF文件以「原零件名_配置名.dxf」命名,避免文件名冲突,同时便于识别对应配置
- 保留了第二个宏的顶视图导出参数,确保导出的DXF符合CNC加工的视图要求
- 增加了配置名称清理逻辑,自动去除焊接件配置的特殊标识(
、 )
内容的提问来源于stack exchange,提问作者user20177006
相关产品推荐
相关产品推荐

