Тема: Как для атрибута получить соответствующий AttributeDefinition

Хочу сделать свой диалог редактирования атрибутов блока (BlockReference'а).
Проблема в том, что в AttributeDefinition есть prompt, а в атрибуте его нет. А связь не могу найти :(

Re: Как для атрибута получить соответствующий AttributeDefinition

промт можно взять из AcDbAttributeDefinition вставленного блока(AcDbBlockTableRecord) которому соответствует данный AcDbAttribute

Re: Как для атрибута получить соответствующий AttributeDefinition

> Ведмедь
Связи прямой нет. Нужно:
1) Пробежаться итератором по всем неконстантным определяениям атрибута (AcDbAttributeDefinition) в блоке (AcDbBlockTableRecord) и создать из их id (AcDbObjectId) массив (AcDbObjectIdArray) ids1.
2) Пробежаться по всем аттрибутам (AcDbAttribute) в вставленном блоке (AcDbBlockReference) и создать из их id (AcDbObjectId) массив (AcDbObjectIdArray) ids2.
3) Каждому элементу из ids1 есть соответствие в ids2 (по номеру элемента). Так что найти prompt (и не только) не будет представлять проблемы.

Re: Как для атрибута получить соответствующий AttributeDefinition

> Александр Ривилис
То есть соответствие просто по порядковому номеру? Ок, попробую. Спасибо.

Re: Как для атрибута получить соответствующий AttributeDefinition

> Ведмедь
То есть соответствие просто по порядковому номеру?
Именно. Но не забудь пропустить константные определения атрибутов - иначе соответствия не будет.

Re: Как для атрибута получить соответствующий AttributeDefinition

А разве не проще соответствующее определение атрибута находить по тегу атрибута?

Re: Как для атрибута получить соответствующий AttributeDefinition

> Вячеслав
Проще, но неправильно. В блоке может быть несколько атрибутов с одинаковым тэгом. Т.е. если ты сам создаешь блок и все определения атрибутов имеют разные теги - то все будет в порядке. Но в общем случае это не так.