Имя родительского Part для Reaction

Программирование для CATIA.

Имя родительского Part для Reaction

Сообщение Zaratustra V » 30 окт 2018 23:40

Здравствуйте!
Имеется Reaction со следующим кодом:
Код: Выделить всё
Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part
Set product1 = partDocument1.GetItem(partDocument1.Name)
Dim parameters1 As Parameters
Set parameters1 = part1.Parameters
Dim zagotovka1 As Parameter
Set zagotovka1 = parameters1.Item("Заготовка")
Dim win1 As String
win1 = zagotovka1.Value
MsgBox win1
product1.DescriptionRef  = win1
product1.Definition  = win1
End sub


Когда она срабатывает в Парте, который открыт в отдельном окне - всё нормально, но из окна надсборки, т.к. ActiveDocument это открытое окно, ничего не работает.
Пробовал через Selection, но во-первых не смог найти родительский парт от выделенного элемента, во-вторых, при срабатывании реакции выделен может быть и другой Парт.
В связи с этим вопрос, как найти родительский парт для реакции?
Аватара пользователя
Zaratustra V
Активный участник
Активный участник
 
Сообщения: 283
Зарегистрирован: 20 сен 2007 11:40
Откуда: Москва

Re: Имя родительского Part для Reaction

Сообщение Zaratustra V » 31 окт 2018 15:19

Написал следующий код по созданию формулы, которая будет записывать в Description:
Код: Выделить всё
Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part
Set relations1 = part1.Relations
Set parameters1 = part1.Parameters

formulaname = "Запись в Description"
formulaenable = 0
For i=1 to relations1.Count
if relations1.Item(i).Name is formulaname Then Set formulaenable = 1
End if
Next

if formulaenable = 0 Then
Set parameter1 = parameters1.Item( part1.Name  +"\Product Description")
Set formula1 = relations1.CreateFormula(formulaname, "", parameter1, "`PartBody\Заготовка листовая\Параметры заготовки\Заготовка` ")
part1.Update
End if

End Sub


не пойму, почему ругается на строчку:
Код: Выделить всё
if relations1.Item(i).Name is formulaname Then Set formulaenable = 1
End if
Аватара пользователя
Zaratustra V
Активный участник
Активный участник
 
Сообщения: 283
Зарегистрирован: 20 сен 2007 11:40
Откуда: Москва

Re: Имя родительского Part для Reaction

Сообщение Artem » 02 ноя 2018 17:22

Есть два варианта - Исходить из имени файла или из входного объекта (если реакция на изменение примитива/параметра):

animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 385
Зарегистрирован: 14 сен 2007 07:14

Re: Имя родительского Part для Reaction

Сообщение Artem » 02 ноя 2018 17:41

Код: Выделить всё
Sub main
Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part
Set relations1 = part1.Relations
Set parameters1 = part1.Parameters
formulaname = "Запись в Description"
formulaenable = 0
For i=1 to relations1.Count
if relations1.Item(i).Name = formulaname Then formulaenable = 1
Next
if formulaenable = 0 Then
Set parameter1 = parameters1.Item( part1.Name  +"\Product Description")
Set formula1 = relations1.CreateFormula(formulaname, "ttttt", parameter1, "" & """" & "iiiiiii" & """" & "")
part1.Update
End if
End Sub

1)set для не объектов не надо 2)Если if в одну строчку то end if тоже не надо.

добавление третьего варианта к предыдущему посту : проходить все дерево(или список загруженных документов) и искать парт, например, с входящим параметром(или примитивом) по имени(или значению) ....."Findmeplease" например.
animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 385
Зарегистрирован: 14 сен 2007 07:14

Re: Имя родительского Part для Reaction

Сообщение Zaratustra V » 07 ноя 2018 10:19

Artem, большое спасибо за ответ!!! Сейчас попробую разобраться.
Аватара пользователя
Zaratustra V
Активный участник
Активный участник
 
Сообщения: 283
Зарегистрирован: 20 сен 2007 11:40
Откуда: Москва

Re: Имя родительского Part для Reaction

Сообщение Artem » 07 ноя 2018 12:04

http://www.plm-forum.ru/forum/viewtopic.php%3Ff%3D8%26t%3D1512 Не этот файлик искали?

Вообще список источников инфы по значимости:
1)Запись макросов в первую очередь;
2)F1 в VBA редакторе. Синтаксис одинаков с VBScript (ну в основном - касательно свойств и методов катькиных обьектов точно);
3)Гугл - гуглить на английском ...типа: "How change text color" CATIA VBA

По теме - не забудьте про нолидж ветку со своим вопросом.
animae scrinium servitus
Аватара пользователя
Artem
Активный участник
Активный участник
 
Сообщения: 385
Зарегистрирован: 14 сен 2007 07:14

Re: Имя родительского Part для Reaction

Сообщение Zaratustra V » 07 ноя 2018 12:32

Ура!!! Все получилось через параметр. Еще раз спасибо.
Аватара пользователя
Zaratustra V
Активный участник
Активный участник
 
Сообщения: 283
Зарегистрирован: 20 сен 2007 11:40
Откуда: Москва


Вернуться в CAA-RADE

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1