Кремень КД Реклама
Кремень КМ Реклама

Макрос для сохранения всех конфигураций детали Solidworks в 3MF STEP STL

nyptus
Идет загрузка
Загрузка
23.12.2024
94
0
Личные дневники

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

0

В продолжение заметки о сохранении детали Solidworks в трех разных форматах, решил дополнить макрос сохранением всех конфигураций детали.

Полный код макроса тут - https://pastebin.com/raw/V6Bpbntd и ниже.

Детали Solidworks сохраняются с именами по шаблонам:

НазваниеДетали_НазваниеКонфигурации.3MFНазваниеДетали_НазваниеКонфигурации.STLНазваниеДетали_НазваниеКонфигурации.STEP

Изменения по сравнению с прошлой версией:

Получение списка конфигураций и перебор их в цикле:

    ConfNameArr = swModel.GetConfigurationNamesFor i = 0 To UBound(ConfNameArr)    ConfigName = ConfNameArr(i)    swModel.ShowConfiguration2 (ConfigName)    MfFilePath = MfFolderPath & FileName & "_" & ConfigName & ".3mf"    StlFilePath = StlFolderPath & FileName & "_" & ConfigName & ".stl"    StepFilePath = StepFolderPath & FileName & "_" & ConfigName & ".step"    boolstatus = swModel.SaveAs3(MfFilePath, 0, 2)    boolstatus = swModel.SaveAs3(StlFilePath, 0, 2)    boolstatus = swModel.SaveAs3(StepFilePath, 0, 2)Next i

    Закоментировал уведомление об отсутсвии папок:

    'MsgBox "[ERROR] Folders '3mf', 'step', 'stl' not found!"

    Закоментировал закрыте детали после сохранения:

    'close the document'swApp.CloseDoc FileTitle

    Полный код макроса:

    Dim swApp As SldWorks.SldWorksDim swModel As SldWorks.ModelDoc2Dim boolstatus As BooleanDim IErrors As LongDim IWarnings As LongDim folderFullPath As StringDim ConfNameArr As VariantDim ConfigName As StringSub main()Set swApp = Application.SldWorksSet swModel = swApp.ActiveDoc' check is .SLDPRT is openedIf swModel Is Nothing Then    MsgBox "[ERROR] No active files found!"    Exit SubEnd If' check is active document is .SLDPRT fileIf swModel.GetType <> swDocPART Then    MsgBox "[ERROR] Open .SLDPRT first!"    Exit SubEnd If' zooms to fit the model in the graphics area.swModel.ViewZoomtofit2' saves the model.boolstatus = swModel.Save3(swSaveAsOptions_Silent, IErrors, IWarnings)FilePath = swModel.GetPathName ' Get the full path of the part/assembly fileFileTitle = swModel.GetTitle   ' Get the full part namePathSize = Strings.Len(FilePath)    ' Get the length of the full pathTitleSize = Strings.Len(FileTitle)  ' Get the length of the part nameFolderSize = Strings.Len(FilePath) - Strings.Len(FileTitle) ' Get the length of the folderRootFolderName = Strings.Left(FilePath, FolderSize)     ' Truncate to folder nameMfFolderPath = RootFolderName & "3mf\"StlFolderPath = RootFolderName & "stl\"StepFolderPath = RootFolderName & "step\"'checking existing of 3mf, step, stl foldersIf Dir(MfFolderPath) = "" Then    'MsgBox "[ERROR] Folders '3mf', 'step', 'stl' not found!"    MfFolderPath = RootFolderName    StlFolderPath = RootFolderName    StepFolderPath = RootFolderName    'Exit SubEnd IfFileName = Strings.Left(FileTitle, Len(FileTitle) - 7)ConfNameArr = swModel.GetConfigurationNamesFor i = 0 To UBound(ConfNameArr)    ConfigName = ConfNameArr(i)    swModel.ShowConfiguration2 (ConfigName)    MfFilePath = MfFolderPath & FileName & "_" & ConfigName & ".3mf"    StlFilePath = StlFolderPath & FileName & "_" & ConfigName & ".stl"    StepFilePath = StepFolderPath & FileName & "_" & ConfigName & ".step"    boolstatus = swModel.SaveAs3(MfFilePath, 0, 2)    boolstatus = swModel.SaveAs3(StlFilePath, 0, 2)    boolstatus = swModel.SaveAs3(StepFilePath, 0, 2)Next iMsgBox ("3MF, STEP and STL saved!")'close the document'swApp.CloseDoc FileTitle' errorsDebug.Print ("Errors as defined in swFileSaveError_e: " & IErrors)' warningsDebug.Print ("Warnings as defined in swFileSaveWarning_e: " & IWarnings)End Sub

    Подпишитесь на автора

    Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

    Отписаться от уведомлений вы всегда сможете в профиле автора.

    0
    Комментарии к статье