Доступ к пользовательским атрибутам сборок (VB или CAA/RADE)

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

Доступ к пользовательским атрибутам сборок (VB или CAA/RADE)

Сообщение Wireless_Fidelity » 17 янв 2011 16:07

Здравствуйте.

Что требуется:

На "сборки" (Assemblies) оборудования нужно иметь возможность добавлять новые атрибуты, читать/изменять их значения. Атрибутивный состав должен быть общим для всех сборок конкретного класса, в то время как значения атрибутов могут отличаться.

Что есть:

Имеется словарь (dictionary) по дисциплине Equipment, содержащийся в условном файле Equipment.CATfct. Этот словарь представляет собой дерево классов и содержит три стандартных раздела: "Feature View", "Classes View", "Reference View". В разделе "Classes View", помимо всего прочего, заданы два суперкласса, именуемые "Equipment" и "Equipment Assemblies" (если не ошибаюсь, CATEqtAssembly в оригинале). Первый суперкласс содержит подклассы, по которым классифицируется "простое" оборудование (то есть обычные детали с единственным Part'ом внутри, не сборки), а во втором суперклассе находятся классы, по которым классифицируются сборки. На суперкласс "Equipment Assemblies" навешаны различные пользовательские атрибуты, которые наследуются во все его подклассы. Таким образом, структура словаря выглядит примерно так:

Equipment.CATfct
| Referenced Dictionaries
| Feature View
| Classes View
____| Equipment
____ | Equipment Assemblies (к этому суперклассу добавлены атрибуты)
________| My Assembly1 (этот класс наследует атрибуты класса-родителя)
________|My Assembly2 (этот класс наследует атрибуты класса-родителя)
________| My Assembly3 (этот класс наследует атрибуты класса-родителя)
| Reference View

Такое объявление атрибутов позволяет у каждого экземпляра сборки, классифицированной по данному словарю, задавать им уникальные значения. К примеру, можно создать новую сборку, добавить в неё различных деталей и классифицировать её по классу "MyAssembly1" (например, с помощью команды "Build Part" из модуля "Equipment Arrangement"). После чего перейти в папку, определённую в Project Resource Management переменной AttributeDisplayList и создать в ней текстовый файл с именем класса, то есть MyAssembly1.txt. В этот файл внести имена добавленных в словарь атрибутов (по одному на строку) и сохранить его.
Тогда при вызове окна свойств этой сборки и нажатии кнопки "Ещё..." ("More...") в появившейся вкладке "Equipment" отобразятся добавленные атрибуты.

В чём проблема:

Не получается считать/изменить значения этих атрибутов. В случае с обычным оборудованием (не сборкой) каждому добавленному атрибуту соответствует определённый параметр из коллекции Parameters. Соответственно, значения этих атрибутов можно читать и менять, манипулируя либо с коллекцией параметров, либо через интерфейсы PlantShip (в частности, PspAttribute). Но вся закавыка в том, что у сборок данные атрибуты в коллекции параметров не представлены. А любая попытка доступа к сборке (в дереве выглядит как "продукт") через различные PspInterfaces приводит лишь к возникновению ошибок в процессе исполнения кода. Возможно, стоит отметить, что в как в случае с "простым" оборудованием, так и в случае со сборкой добавленные атрибуты доступны для использования в редакторах Knowledgeware (Advisor и Expert). То есть теоретически можно написать программу, которая создавала бы правило, которое, в свою очередь, меняло бы значения атрибутов. Однако, как оказалось, правила создавать получается не в каждом документе, да и программно созданные правила почему-то не всегда работают, хоть и не содержат в себе никаких ошибок.

Прошу помочь советом, как же достучаться до этих свойств. К сожалению, альтернативного способа назначить атрибуты экземплярам сборкок я не нашёл, но если кто-то подскажет иное решение, то также буду очень благодарен.
Для достижения цели имею возможность воспользоваться и VB, и CAA/RADE.
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11

Re: Доступ к пользовательским атрибутам сборок (VB или CAA/R

Сообщение [PTM] » 17 янв 2011 17:02

Если поможет:
Коллекции представлены в текстовом файле, на который идет ссылка в project.xml.
Стандартные хранятся в папке DiscreteValues.
Изображение
Аватара пользователя
[PTM]
Moderator
 
Сообщения: 2159
Images: 43
Зарегистрирован: 13 сен 2007 13:03
Откуда: Rzn
Blog: View Blog (15)

Re: Доступ к пользовательским атрибутам сборок (VB или CAA/R

Сообщение Wireless_Fidelity » 17 янв 2011 17:49

[PTM], спасибо за оперативный ответ.

Действительно, для атрибутов с дискретными значениями, списки этих значений берутся из соответствующих .txt файлов. Под это дело написана отдельная функция.
Однако, уже выбранные и заданные значения атрибутов конкретной сборки вытащить всё же не удаётся :(
Аватара пользователя
Wireless_Fidelity
Активный участник
Активный участник
 
Сообщения: 394
Зарегистрирован: 10 апр 2010 00:11


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

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

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