Страница 1 из 1

макрос для редактирования имен part'ов

СообщениеДобавлено: 26 май 2016 09:43
buster
Здравствуйте! Задача следующая: в дереве есть некоторое количество part'ов с именами XXXP1, XXXP2 и т.д. Идут они по порядку, но после XXXP2 может опять пойти серия XXXP1. Нужно сделать так, чтобы instance name у них были по порядку и в нужном мне виде (_1, _2 и т.д) Хочу написать макрос, который делал бы следующее:
1) Предлагал выбрать part'ы, которые нужно переименовать
2) Предлагал бы ввести неизменную часть instance name или брал ее из part number
3) Переименовывал instance name

Проблемы у меня в том, как сделать выбор файлов и сделать счетчик. Вообще я новичок в этом деле, на форуме находил похожие темы, но не очень в этом разбираюсь. Если подскажете нужное направление и посоветуете с чего начать буду очень благодарен

Re: макрос для редактирования имен part'ов

СообщениеДобавлено: 26 май 2016 13:06
VladimirK
Здравствуйте!
С чего начать можно посоветовать следующее:
Сначала Вам необходимо познакомиться с объектной моделью CATIA, посмотреть какие объекты, методы предоставляет API для программиста.
В папке с установленной CATIA в ..\code\bin есть файл V5Automation.chm. Там наглядно видно это дерево объектов, есть примеры.
Вообще, приложения для CATIA можно писать в виде:
1. Макросов *.catvba, cкриптов *.CATScript;
2. Автономных приложений, скомпилированных в *.exe-файл.
Можно использовать любой язык программирования, например VB6, C#, Delphi.
При этом взаимодействие с CATIA происходит как с COM-объектом;
3. В виде приложений, плагинов, используя CAA-RADE - на С++.

Для начала самый простой вариант - это приложения в виде макросов *.catvba.
Cоздать макрос в CATIA можно так: меню Tools / Macro / Macros...
Далее на кнопку Macro libraries... / выбрать Library type - VBA projects / Create new library.
Потом в этом макросе *.catvba можете добавлять модули - кнопкой Create в окне Macros, а также в редакторе Microsoft Visual Basic - модули, формы, классы.

Для Вашей текущей задачи можете начать с этого:
Код: Выделить всё
Sub CATMain()
    Dim sel As Selection
    Dim i As Long
    Dim iProd As Product
   
    Set sel = CATIA.ActiveDocument.Selection
   
    If sel.Count > 0 Then
        For i = 1 To sel.Count
            If sel.Item(i).Type = "Product" Then
                Set iProd = sel.Item(i).Value
                MsgBox iProd.Name
            End If
        Next
    End If
End Sub

Если в дереве сборки выделите нужные узлы, запустите макрос, то в коллекции Selection будут выделенные объекты.
Далее в цикле проверяете их тип и обрабатываете как Вам надо.
Примерно так.

Re: макрос для редактирования имен part'ов

СообщениеДобавлено: 26 май 2016 22:21
buster
Спасибо за подробный ответ. но у меня появляется ошибка

Re: макрос для редактирования имен part'ов

СообщениеДобавлено: 27 май 2016 19:48
Wireless_Fidelity
Дополню:
2. Для ввода неизменной части можно Воспользоваться стандартным окном ввода через функцию InputBox
3. Instance Name меняется через свойство Name.

Re: макрос для редактирования имен part'ов

СообщениеДобавлено: 29 май 2016 13:02
buster
Wireless_Fidelity писал(а):Дополню:
2. Для ввода неизменной части можно Воспользоваться стандартным окном ввода через функцию InputBox
3. Instance Name меняется через свойство Name.



Я так и хотел сделал. Отпишусь что получится)