Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Alexx от 31-07-2015, 13:04:22

Название: Получение размеров атрибута
Отправлено: Alexx от 31-07-2015, 13:04:22
Продолжая мучительное переписывание кода с VBA на .NET, столкнулся с новой проблемой. В коде на VBA, я получал BlockReference, вызывал у него метод GetAttributes и получал коллекцию AttributeReference, для которых можно было получить BoundingBox.

Сейчас же я получаю BlockReference, получаю у него AttributeCollection а там AttributeDefinition, у которых, соответственно нет размеров  :(

Что я опять делаю не так?

Спасибо!
Название: Re: Получение размеров атрибута
Отправлено: Alexx от 31-07-2015, 13:18:51
Дико извиняюсь, AttributeDefinition я оказывается получаю не из BlockReference, а из BlockDefinition (BlockTableRecord), что логично...
Проблема оказалась в том, что проходя по блоку листа, я почему-то не встречаю ни одного BlockReference, хотя блоки на листе есть... А встречаю BlockDefinition... (((

Задача в целом такая: обойти все листы и все объекты на них. Получить границы объектов относительно листа.
на VBA я для каждого листа в блоке листа перебирал нужные мне объекты ссылки на блоки, получал при помощи GetAttributes()  ссылки на атрибуты и читал их координаты, затем получал блок, на который указывает ссылка, обходил в нем все объекты и транслировал координаты этих объектов относительно листа.

Видимо, на .NET нужен другой подход. Тут я для каждого листа получаю его блок и перебираю на нем нужные мне объекты, при этом вместо ссылок на блоки я получаю сами блоки... и атрибуты, вместо ссылок на атрибуты.... Просто праздник какой-то )))
Название: Re: Получение размеров атрибута
Отправлено: Александр Ривилис от 31-07-2015, 13:42:19
Проблема оказалась в том, что проходя по блоку листа, я почему-то не встречаю ни одного BlockReference, хотя блоки на листе есть... А встречаю BlockDefinition... (((
Этого не может быть, потому что не может быть никогда. В блоке (BlockDefinition) не могут содержаться другие BlockDefinition.
Название: Re: Получение размеров атрибута
Отправлено: Alexx от 31-07-2015, 14:25:18
Все, нашел где я лоханулся! Я после проверки на BlockReference тут же получал для него него BlockTableRecord и уже с ним работал  ::)

Сроки поджимают, внимание рассеивается...