Надо сделать дополнительный функционал по вставке сгенерированного парта, который(функционал -либо макрос вынесенный на панельку, либо темплейт опять же с помощью васика поднимающийся наверх) на самый верхний уровень сборки будет вставлять еще переменную, в которую будет записываться последнее значение размера файла исходной сборки и экспертное правило, что-то типа:
- Код: Выделить всё
if CATIA.FileSystem.GetFile("C:\tt.CATProduct").size<>paramoldsize
paramoldsize=CATIA.FileSystem.GetFile("C:\tt.CATProduct").size
'regenerate part and reinserting part from C:\tt.CATProduct
end if
Путь лучше всего засунуть куда-нибудь в переменную вновь сгенерированного парта - благо генерить вы собираетесь через макрос...А потом в экспертном правиле не через абсолютный путь, как в моем примере обращаться к исходной сборке, а например, пройти всю сборку с отбором Allcatpart в названии - чтобы внутрь правила не лазить, хотя если у вас это получится, то лучше конечно абсолютный путь. Можно записать путь + имя парта в переменные главной сборки. А в правиле например по парентам до них добраться....
Я если честно не смотрел, но вроде через скрипт создать его нельзя - придется создать дополнительный парт/продукт с которого и будем его копировать(естественно предварительно открыв и закрыв по окончании)
Можно еще что-то подобное вместо экп. правила на реакцию повесить....но придется обдумать на что ее завязать для запуска....
Если не устраивет size по надежности, то можно из этого же правила запустить через ExecuteScript и catScriptLibraryTypeVBAProject CATVba, с использованием WinApi на получение даты модификации + аналогичная работа с переменной