Публикации и линки через VBA

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

Публикации и линки через VBA

Сообщение likemilk » 11 апр 2012 12:15

Как через VBA:
1) создавать публикации (Toos > Publication)
2) копировать публикации с сохранением ссылки на исходный объект (Paste Special > As Result With Link)
3) подменять публикации (Edit > Links > Change Publication)
4) де активировать / активировать линки (Edit > Links > Activate/Deactivate)
likemilk
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 02 дек 2008 15:23

Re: Публикации и линки через VBA

Сообщение Wireless_Fidelity » 11 апр 2012 14:09

Здравствуйте.
На краткий вопрос краткий ответ :)

1) Product.Publications.Add()
2) Selection.Add <объект>
Selection.Copy
Selection.Clear

Selection.Add <объект, куда вставить скопированное>
Selection.PasteSpecial "CATPrtResult"
3) Product.Publications.SetRelay()
4) Есть три предположения: либо через StartCommand "Deactivate", либо через параметры (параметр Activity у нужной публикации), или же через KW правило, поискать соответствующий параметр.

Если очень будет нужно, поищу свой старый код, там всё это было.
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Публикации и линки через VBA

Сообщение likemilk » 11 апр 2012 15:49

Спасибо огромное :)
Как проверю, отпишусь
likemilk
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 02 дек 2008 15:23

Re: Публикации и линки через VBA

Сообщение likemilk » 13 апр 2012 00:11

Создание и копирование публикаций успешно реализовал.

Создание:
Код: Выделить всё
   
Set IN_DOCUMENT(I_counter) = CAT_DOCUMENTS.Open(IN_Ful_Name_File(I_counter))      ' Открытие исходного файла и Объектная ссылка на открытый документ CATIA по полному имени исходного файла
Set IN_WINDOW(I_counter) = CAT_WINDOWS.Item(IN_Name_File(I_counter))      ' Объектная ссылка на окно документа CATIA по имени исходного файла
Set IN_REFERENCE(I_counter) = IN_PRODUCT(I_counter).CreateReferenceFromName(IN_Name_Doc(I_counter) & "/!" & IN_Title_Object(I_counter))
Set IN_PUBLICATIONS(I_counter) = IN_PRODUCT(I_counter).Publications
Set IN_PUBLICATION(I_counter) = IN_PUBLICATIONS(I_counter).Add(IN_Title_Object(I_counter))
IN_PUBLICATIONS(I_counter).SetDirect IN_Title_Object(I_counter), IN_REFERENCE(I_counter)
Set IN_SETTINGCONTROLLERS(I_counter) = CATIA.SettingControllers
Set IN_VISUALIZATIONSETTINGATT(I_counter) = IN_SETTINGCONTROLLERS(I_counter).Item("CATVizVisualizationSettingCtrl")
IN_VISUALIZATIONSETTINGATT(I_counter).SaveRepository


Копирование:
Код: Выделить всё
            
Set IN_DOCUMENT(I_counter) = CAT_DOCUMENTS.Open(IN_Ful_Name_File(I_counter))      ' Открытие исходного файла и Объектная ссылка на открытый документ CATIA по полному имени исходного файла
Set IN_WINDOW(I_counter) = CAT_WINDOWS.Item(IN_Name_File(I_counter))      ' Объектная ссылка на окно документа CATIA по имени исходного файла
IN_WINDOW(I_counter).Activate
Set IN_PRODUCT(I_counter) = .Product      ' Объектная ссылка на Product исходного файла модели изделия или детали
Set IN_PART(I_counter) = IN_DOCUMENT(I_counter).Part
Set IN_BODIES(I_counter) = IN_PART(I_counter).Bodies
Set IN_BODY(I_counter) = IN_BODIES(I_counter).Item(IN_Title_Object(I_counter))
Set IN_SELECTION(I_counter) = IN_DOCUMENT(I_counter).Selection
IN_SELECTION(I_counter).Clear
IN_SELECTION(I_counter).Add (IN_BODY(I_counter))
IN_SELECTION(I_counter).Copy

Set OUT_DOCUMENT(I_counter) = CAT_DOCUMENTS.Open(OUT_Ful_Name_File(I_counter))      ' Открытие конечного файла и Объектная ссылка на открытый документ CATIA по полному имени конечного файла
Set OUT_WINDOW(I_counter) = CAT_WINDOWS.Item(OUT_Name_File(I_counter))      ' Объектная ссылка на окно документа CATIA по имени конечного файла
OUT_WINDOW(I_counter).Activate
Set OUT_PRODUCT(I_counter) = .Product      ' Объектная ссылка на Product конечного файла модели изделия или детали
Set OUT_PART(I_counter) = OUT_DOCUMENT(I_counter).Part
Set OUT_BODIES(I_counter) = OUT_PART(I_counter).Bodies
Set OUT_SELECTION(I_counter) = OUT_DOCUMENT(I_counter).Selection
OUT_SELECTION(I_counter).Add OUT_PART(I_counter)
OUT_SELECTION(I_counter).PasteSpecial "CATPrtResult"


До подмены и де активации пока не добрался.

Возник ещё вопросец: через какой метод можно переменовать объекты, будь то точка, кривая, поверхность или тело
и есть ли возможность при создании этих объекотов задавать им имя?

Как создаются бодики вроде разобрался.
Код: Выделить всё
Set IN_DOCUMENT(I_counter) = CATIA.ActiveDocument
Set IN_PART(I_counter) = IN_DOCUMENT(I_counter).Part
Set IN_BODIES(I_counter) = IN_PART(I_counter).Bodies
Set IN_BODY(I_counter) = IN_BODIES(I_counter).Add
likemilk
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 02 дек 2008 15:23

Re: Публикации и линки через VBA

Сообщение Wireless_Fidelity » 13 апр 2012 11:05

1. oFeature.Name = "NewName"
2. При создании - нет. Сразу после создания - пожалуйста.
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Публикации и линки через VBA

Сообщение likemilk » 14 апр 2012 15:58

C подменой публикации, де активацией линков и переименованием Body не разобрался.
Пож. дайте примеры кода.
likemilk
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 02 дек 2008 15:23

Re: Публикации и линки через VBA

Сообщение likemilk » 21 май 2012 22:48

Люди добрые, подскажите как можно адресоваться к "Линкам" (Меню: Edit > LINKs)?
CATIA.ActiveDocument... а дальше как будет? через какую коллекцию рыть?
likemilk
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 02 дек 2008 15:23

Re: Публикации и линки через VBA

Сообщение Wireless_Fidelity » 22 май 2012 10:00

Насколько я знаю, никак. Только через WinAPI (открыть окно и прочитать содержимое списка).
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Публикации и линки через VBA

Сообщение likemilk » 22 май 2012 22:03

Как это сделать?
likemilk
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 02 дек 2008 15:23

Re: Публикации и линки через VBA

Сообщение Wireless_Fidelity » 22 май 2012 22:40

Сначала вызывается команда Links... (что-то вроде CATIA.StartCommand "Links"), затем находится появившееся окно и считывается содержимое таблички (ListView). К программированию под Катю этот способ имеет мало отношения, примеры кода можно смотреть на MSDN.

Если будет совсем тяжело, пишите в личку. Но только, когда припрёт :stop:
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Публикации и линки через VBA

Сообщение likemilk » 23 май 2012 23:19

Wireless_Fidelity писал(а):Здравствуйте.
На краткий вопрос краткий ответ :)

1) Product.Publications.Add()
2) Selection.Add <объект>
Selection.Copy
Selection.Clear

Selection.Add <объект, куда вставить скопированное>
Selection.PasteSpecial "CATPrtResult"
3) Product.Publications.SetRelay()
4) Есть три предположения: либо через StartCommand "Deactivate", либо через параметры (параметр Activity у нужной публикации), или же через KW правило, поискать соответствующий параметр.

Если очень будет нужно, поищу свой старый код, там всё это было.


Пожалуйста, если не трудно, поищете пример по п.4, а то везде тупик по данному вопросу. Очень нужно.
likemilk
Новичок
Новичок
 
Сообщения: 26
Зарегистрирован: 02 дек 2008 15:23

Re: Публикации и линки через VBA

Сообщение Wireless_Fidelity » 24 май 2012 15:16

С линками ошибся, извиняюсь. Активации/деактивации у меня нет, сделать можно только на WinAPI.
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11


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

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

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