Загрузка данных
Порядок работы:
Пользователь открывает главную сборку SOLIDWORKS.
В главной сборке пользователь выбирает управляющий размер. Например, этот размер сейчас равен:
text
4400 mm
Не снимая выделения, с зажатым Ctrl пользователь выбирает в дереве именно ту подсборку, длину которой необходимо изменить.
То есть перед запуском макроса выделены два объекта:
text
Размер = 4400 mm
+
Нужная подсборка
Пользователь запускает макрос.
Макрос проверяет, что активный документ является сборкой, и считывает выделенные объекты.
Из выбранного размера он получает:
text
L = 4400 mm
Из второго выделенного объекта получает конкретный экземпляр подсборки, который нужно изменить.
Из полученной длины макрос формирует имя конфигурации:
text
L_4400
Если размер будет 3500 мм:
text
L_3500
Если 1250 мм:
text
L_1250
Макрос получает файл выбранной подсборки .SLDASM.
При этом обрабатывается именно выбранная пользователем подсборка. Остальные подсборки верхней сборки не должны переключаться на новую конфигурацию.
В выбранной подсборке макрос ищет конфигурацию:
text
L_4400
Если такой конфигурации ещё нет — создаёт её.
Если она уже существует — новую конфигурацию с таким же именем не создаёт, а использует существующую.
Макрос активирует в подсборке:
text
L_4400
В подсборке макрос находит управляющий размер:
text
D1@LENGHT
Макрос устанавливает этому размеру:
text
4400 mm
То есть результат внутри подсборки должен быть:
text
Configuration: L_4400
D1@LENGHT: 4400 mm
Очень важно: изменение должно относиться только к нужной конфигурации.
Например, если в этом же файле существуют:
text
L_1000
L_3333
L_4400
после работы макроса должно остаться:
text
L_1000 -> D1@LENGHT = 1000
L_3333 -> D1@LENGHT = 3333
L_4400 -> D1@LENGHT = 4400
Макрос не должен превращать все существующие конфигурации в 4400.
После изменения размера макрос перестраивает подсборку.
Макрос проверяет, что фактический D1@LENGHT в L_4400 действительно стал 4400 мм.
Макрос сохраняет файл подсборки.
Далее макрос возвращается к главной сборке и говорит именно выбранному экземпляру подсборки использовать:
text
L_4400
То есть:
text
SelectedSubassembly.ReferencedConfiguration = L_4400
Если в главной сборке есть другие экземпляры этой же подсборки, например:
text
Подсборка-1 -> L_1000
Подсборка-2 -> L_3333
Подсборка-3 -> L_4400
и пользователь выбрал только Подсборка-3, первые две должны остаться без изменений.
Макрос перестраивает главную сборку и сохраняет её.
После этого начинается обработка деталей внутри выбранной подсборки.
Макрос получает непосредственные компоненты:
text
Деталь 1
Деталь 2
Деталь 3
...
Названия деталей значения не имеют.
Макрос не должен быть привязан к названиям вроде «Профиль», «Прижим» или «Крышка».
Для первой детали макрос получает её файл .SLDPRT.
В детали макрос ищет конфигурацию с тем же именем:
text
L_4400
Если её нет — создаёт.
Если она уже существует — использует существующую.
Макрос активирует:
text
L_4400
именно в этой детали.
В детали макрос находит:
text
D1@LENGHT
Макрос устанавливает:
text
D1@LENGHT = 4400 mm
То есть новая конфигурация первой детали становится:
text
Configuration: L_4400
D1@LENGHT: 4400 mm
Макрос перестраивает эту деталь.
Все операции детали, которые зависят от эскиза LENGHT, должны пересчитаться уже от новой оси длиной 4400 мм.
Например:
text
D1@LENGHT = 4400
|
v
перестроение эскиза
|
v
перестроение зависимых операций
|
v
готовая деталь длиной 4400
Макрос проверяет фактическое значение D1@LENGHT.
Если всё правильно:
text
Expected = 4400
Actual = 4400
деталь считается успешно обработанной.
Макрос сохраняет файл детали .SLDPRT.
Затем макрос переключает экземпляр этой детали внутри подсборки на:
text
L_4400
То есть теперь подсборка использует новую конфигурацию детали.
После этого макрос переходит ко второй детали и выполняет точно те же действия:
text
найти/создать L_4400
->
активировать L_4400
->
найти D1@LENGHT
->
установить 4400
->
перестроить
->
проверить
->
сохранить
->
назначить компоненту L_4400
То же самое выполняется для третьей, четвёртой и всех остальных непосредственных деталей подсборки.
Если внутри выбранной подсборки встречается ещё одна вложенная подсборка, текущая версия её не обрабатывает. Она пропускается с записью в отчёт.
После обработки всех деталей выбранная подсборка должна выглядеть примерно так:
text
SUB -> L_4400
|
+-- Profile -> L_4400
| D1@LENGHT = 4400
|
+-- Clamp -> L_4400
| D1@LENGHT = 4400
|
+-- Cover -> L_4400
D1@LENGHT = 4400
Теперь макрос ещё раз активирует в подсборке:
text
L_4400
и выполняет её перестроение.
Это нужно потому, что внутри неё уже изменились конфигурации деталей.
Макрос сохраняет подсборку со всеми назначенными конфигурациями деталей.
После этого макрос возвращается к главной сборке.
Выбранная подсборка должна по-прежнему использовать:
text
L_4400
Макрос выполняет финальное перестроение главной сборки.
Макрос сохраняет главную сборку.
В результате должно получиться:
text
MAIN ASSEMBLY
Selected subassembly
|
+-- L_4400
|
+-- D1@LENGHT = 4400
|
+-- Part 1 -> L_4400
| D1@LENGHT = 4400
|
+-- Part 2 -> L_4400
| D1@LENGHT = 4400
|
+-- Part 3 -> L_4400
D1@LENGHT = 4400
Остальные подсборки главной сборки не должны измениться.
Например, до запуска было:
text
Sub-1 -> L_1000
Sub-2 -> L_3333
Sub-3 -> L_2500
Пользователь выбрал Sub-2 и размер 4400.
После макроса должно быть:
text
Sub-1 -> L_1000
Sub-2 -> L_4400
Sub-3 -> L_2500
То есть макрос работает с конкретным выбранным экземпляром, а не переключает все одинаковые подсборки одновременно.
Аналогичное правило действует для существующих конфигураций самих файлов. Создание L_4400 не должно уничтожать или изменять размеры в:
text
L_1000
L_2000
L_3333
Каждая конфигурация должна хранить собственное значение D1@LENGHT.
В самом конце макрос показывает отчёт:
text
DONE L_4400
SUB : 4400 mm -> L_4400
Profile-3 : 4400 mm -> L_4400
Clamp-4 : 4400 mm -> L_4400
Cover-2 : 4400 mm -> L_4400
Значения в отчёте должны читаться уже после установки размера и перестроения. То есть отчёт показывает не просто то, что макрос пытался записать, а фактическое значение D1@LENGHT.
Если какая-то деталь не обработана, вместо ложного успешного результата должна быть показана причина, например: