Макрос для сохранения всех конфигураций детали Solidworks в 3MF STEP STL
В продолжение заметки о сохранении детали 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
Еще больше интересных статей
Еще немного французов. Зенитное...
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Фотополимерная смола POM-like
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Попробовал печать фотополимерной смолой POM-like от mia3dprint (он н...
Наблюда-Ski 04.6: Наращиваем в длину, или Фьюз и не только
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Недавно было несколько тем по сращиванию прутков,
и для начи...
Комментарии и вопросы
Наипоследний вопрос - а зачем....
Добавлю, что от замера зависит...
Этого друга я забыл бы в тот ж...
Приветствую многоуважаемые!Куп...
Я купил плату BTT PI v1.2 и ус...
Добрый вечер всем!Помогите пож...
Вылезла внезапно и просто испо...