如何通过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
相关产品推荐
相关产品推荐

