Вопрос или проблема
Я использую PDM Pro и хочу создать макрос, который можно запускать через планировщик задач, чтобы отключить опцию “Автоматическое обновление списков резки”.
Я записал макрос, который работает, но хочу иметь возможность запускать его на заданной группе файлов или в папке.
Я знаю, что у планировщика есть таблица параметров, но еще не совсем понимаю, как это сделать.
Это работает с текущей открытой деталью:
Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Sub main()
Set swApp = Application.SldWorks
' Получить активный документ (текущую открытую деталь)
Set Part = swApp.ActiveDoc
' Проверка, открыт ли документ
If Part Is Nothing Then
MsgBox "Активный документ не найден. Пожалуйста, откройте файл детали и попробуйте снова."
Exit Sub
End If
Set Part = swApp.ActiveDoc
boolstatus = Part.Extension.SetUserPreferenceToggle(swUserPreferenceToggle_e.swWeldmentEnableAutomaticUpdate, 0, False)
boolstatus = Part.Extension.SetUserPreferenceToggle(swUserPreferenceToggle_e.swWeldmentCollectIdenticalBodies, 0, False)
boolstatus = Part.Extension.ForceRebuildAll()
' Сохранить
Dim swErrors As Long
Dim swWarnings As Long
boolstatus = Part.Save3(1, swErrors, swWarnings)
Part.ClearSelection2 True
MsgBox "Автообновление списка резки отключено, и деталь успешно сохранена."
End Sub
Ответ или решение
Макрос SolidWorks для отключения "Автоматического обновления списков резки"
Учитывая вашу задачу по созданию макроса, который будет отключать опцию "Автоматически обновлять списки резки" для определенной группы файлов или папки в PDM Pro, ниже представлен подробный ответ с разъяснением ключевых аспектов. Мы доработаем ваш предыдущий макрос, чтобы он мог обрабатывать несколько файлов, а также внедрим использование планировщика задач SolidWorks.
Шаги создания макроса
-
Инициализация SolidWorks: Вы уже инициализировали приложение SolidWorks, что является необходимым для работы с документами.
-
Перебор файлов в указанной директории: Мы добавим возможность выбора папки и перебора всех файлов с расширением .sldprt (или других, в зависимости от ваших нужд) в этой директории.
-
Отключение обновления списков резки для каждого файла: Мы будем открывать каждый файл, отключать нужные параметры и сохранять изменения.
-
Обработка ошибок: Важно добавить обработку ошибок, чтобы макрос мог корректно завершаться в случае возникновения проблемы (например, если файл закрыт или недоступен).
Пример кода
Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Sub main()
Dim folderPath As String
Dim fileName As String
Dim fullFileName As String
Dim fileSystem As Object
Dim folder As Object
Dim file As Object
' Инициализация SolidWorks
Set swApp = Application.SldWorks
' Укажите путь к папке, содержащей файлы
folderPath = "C:\Path\To\Your\Folder\" ' Измените на ваш путь
' Создание объекта файловой системы
Set fileSystem = CreateObject("Scripting.FileSystemObject")
Set folder = fileSystem.GetFolder(folderPath)
' Перебор всех файлов в папке
For Each file In folder.Files
If LCase(fileSystem.GetExtensionName(file)) = "sldprt" Then
fullFileName = file.Path
' Открываем файл
Set Part = swApp.OpenDoc6(fullFileName, swDocPART, swOpenDocOptions_e.swOpenDocOptions_Silent, "", longstatus, longwarnings)
If Not Part Is Nothing Then
' Отключаем автоматическое обновление списков резки
boolstatus = Part.Extension.SetUserPreferenceToggle(swUserPreferenceToggle_e.swWeldmentEnableAutomaticUpdate, 0, False)
boolstatus = Part.Extension.SetUserPreferenceToggle(swUserPreferenceToggle_e.swWeldmentCollectIdenticalBodies, 0, False)
boolstatus = Part.Extension.ForceRebuildAll()
' Сохраняем изменения
Dim swErrors As Long
Dim swWarnings As Long
boolstatus = Part.Save3(1, swErrors, swWarnings)
' Закрываем документ
swApp.CloseDoc Part.GetTitle
End If
End If
Next file
MsgBox "Автоматическое обновление списков резки отключено для всех файлов в папке."
End Sub
Подробное объяснение кода
-
Объект
FileSystemObject
: Используется для работы с файлами и папками, что позволяет удобно перебирать файлы в указанной директории. -
Условие для обработки файлов: Проверяем расширение файла, чтобы убедиться, что обрабатываются только файлы SolidWorks.
-
Открытие и изменение каждого файла: Для каждого подходящего файла мы открываем его, отключаем автоматическое обновление списков резки и сохраняем.
-
Сообщение о завершении: После обработки всех файлов показывается сообщение о завершении работы макроса.
Заключение
Данный макрос предоставляет вам функциональность для отключения опции "Автоматически обновлять списки резки" для всех файлов в выбранной папке. Просто замените путь к папке на тот, который вам необходим, и запускайте его через планировщик задач SolidWorks. Обязательно протестируйте его на небольшой группе файлов перед массовым применением, чтобы избежать неожиданных ситуаций.
Если у вас остались вопросы, или требуется дополнительная помощь, не стесняйтесь обращаться.