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

如何通过SolidWorks API(宏编辑器)导入含3D实体的DWG文件到零件/装配体

批量导入带3D实体的DWG至SolidWorks零件文档

手动操作流程(已验证可行)

  • 点击「打开」选项,选择包含3D实体的.dwg文件并打开
  • 自动进入DXF/DWG导入向导,选择「导入到新零件为:3D曲线或模型」后点击完成
  • 几何图形可正常加载至零件或装配体文档中

手动处理上千个文件效率极低,尝试多种SolidWorks API实现方式均未成功,以下是目前最接近预期的解决方案代码:

Private Sub ImportarDWGComLoadFile4SalvarComoPeca( _
    ByVal caminhoDWG As String, _
    ByVal caminhoSalvarPeca As String)

    Dim swModel As SldWorks.ModelDoc2
    Dim swExt As SldWorks.ModelDocExtension

    Dim argString As String
    Dim importData As Variant
    Dim errorsImport As Long

    Dim longErrors As Long
    Dim longWarnings As Long
    Dim statusSave As Boolean

    ' 启用3D Interconnect
    swApp.SetUserPreferenceToggle _
        swUserPreferenceToggle_e.swMultiCAD_Enable3DInterconnect, True

    ' 针对Pro/E文件:
    ' R = 尝试导入特征
    ' 注意:
    ' 大写"R"用于Pro/E特征
    ' 小写"r"是文档中提到的其他格式的参数
    argString = "R"

    ' 按要求:ImportData留空
    importData = ""

    errorsImport = 0

    ' 函数签名:
    ' value = instance.LoadFile4(FileName, ArgString, ImportData, Errors)
    Set swModel = swApp.LoadFile4( _
        caminhoDWG, _
        argString, _
        importData, _
        errorsImport)

    If swModel Is Nothing Or errorsImport <> 0 Then
        MsgBox "使用LoadFile4导入文件失败。" & vbCrLf & _
               "文件:" & caminhoDWG & vbCrLf & _
               "ArgString:" & argString & vbCrLf & _
               "ImportData:空" & vbCrLf & _
               "返回错误:" & CStr(errorsImport) & vbCrLf & vbCrLf & _
               "请检查:" & vbCrLf & _
               "1. 3D Interconnect是否已启用;" & vbCrLf & _
               "2. SolidWorks是否识别该文件;" & vbCrLf & _
               "3. 该DWG能否通过相同手动流程打开;" & vbCrLf & _
               "4. ArgString = R是否适用于当前测试的文件类型。", vbCritical
        Exit Sub
    End If

    ' 确保导入的文档处于激活状态
    Set swModel = swApp.ActiveDoc

    If swModel Is Nothing Then
        MsgBox "文件已加载,但无法获取激活文档。", vbCritical
        Exit Sub
    End If

    If swModel.GetType <> swDocumentTypes_e.swDocPART Then
        MsgBox "文件已导入,但生成的文档不是零件。" & vbCrLf & _
               "返回类型:" & CStr(swModel.GetType) & vbCrLf & vbCrLf & _
               "本宏仅用于保存为.SLDPRT格式。", vbCritical
        Exit Sub
    End If

    Set swExt = swModel.Extension

    swModel.ForceRebuild3 False

    ' 将导入的文档保存为SolidWorks零件
    statusSave = swExt.SaveAs( _
        caminhoSalvarPeca, _
        swSaveAsVersion_e.swSaveAsCurrentVersion, _
        swSaveAsOptions_e.swSaveAsOptions_Silent, _
        Nothing, _
        longErrors, _
        longWarnings)

    If statusSave = False Then
        MsgBox "文件已导入,但保存为零件时失败。" & vbCrLf & _
               "目标文件:" & caminhoSalvarPeca & vbCrLf & _
               "SaveAs错误:" & CStr(longErrors) & vbCrLf & _
               "SaveAs警告:" & CStr(longWarnings), vbCritical
        Exit Sub
    End If

    MsgBox "使用LoadFile4导入文件并成功保存为零件。" & vbCrLf & vbCrLf & _
           "来源:" & vbCrLf & caminhoDWG & vbCrLf & vbCrLf & _
           "已保存零件:" & vbCrLf & caminhoSalvarPeca, vbInformation

End Sub

内容的提问来源于stack exchange,提问作者Artur Vilas Boas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.02 04:24:52