Макрос Solidworks для отключения “Автоматического обновления списков деталей”

Вопрос или проблема

Я использую 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.

Шаги создания макроса

  1. Инициализация SolidWorks: Вы уже инициализировали приложение SolidWorks, что является необходимым для работы с документами.

  2. Перебор файлов в указанной директории: Мы добавим возможность выбора папки и перебора всех файлов с расширением .sldprt (или других, в зависимости от ваших нужд) в этой директории.

  3. Отключение обновления списков резки для каждого файла: Мы будем открывать каждый файл, отключать нужные параметры и сохранять изменения.

  4. Обработка ошибок: Важно добавить обработку ошибок, чтобы макрос мог корректно завершаться в случае возникновения проблемы (например, если файл закрыт или недоступен).

Пример кода

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

Подробное объяснение кода

  1. Объект FileSystemObject: Используется для работы с файлами и папками, что позволяет удобно перебирать файлы в указанной директории.

  2. Условие для обработки файлов: Проверяем расширение файла, чтобы убедиться, что обрабатываются только файлы SolidWorks.

  3. Открытие и изменение каждого файла: Для каждого подходящего файла мы открываем его, отключаем автоматическое обновление списков резки и сохраняем.

  4. Сообщение о завершении: После обработки всех файлов показывается сообщение о завершении работы макроса.

Заключение

Данный макрос предоставляет вам функциональность для отключения опции "Автоматически обновлять списки резки" для всех файлов в выбранной папке. Просто замените путь к папке на тот, который вам необходим, и запускайте его через планировщик задач SolidWorks. Обязательно протестируйте его на небольшой группе файлов перед массовым применением, чтобы избежать неожиданных ситуаций.

Если у вас остались вопросы, или требуется дополнительная помощь, не стесняйтесь обращаться.

Оцените материал
Добавить комментарий

Капча загружается...