You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 14:05:30