Сообщество программистов Autodesk в СНГ
ADN Club => AutoCAD .NET API => Тема начата: Alexx от 31-07-2015, 13:04:22
-
Продолжая мучительное переписывание кода с VBA на .NET, столкнулся с новой проблемой. В коде на VBA, я получал BlockReference, вызывал у него метод GetAttributes и получал коллекцию AttributeReference, для которых можно было получить BoundingBox.
Сейчас же я получаю BlockReference, получаю у него AttributeCollection а там AttributeDefinition, у которых, соответственно нет размеров :(
Что я опять делаю не так?
Спасибо!
-
Дико извиняюсь, AttributeDefinition я оказывается получаю не из BlockReference, а из BlockDefinition (BlockTableRecord), что логично...
Проблема оказалась в том, что проходя по блоку листа, я почему-то не встречаю ни одного BlockReference, хотя блоки на листе есть... А встречаю BlockDefinition... (((
Задача в целом такая: обойти все листы и все объекты на них. Получить границы объектов относительно листа.
на VBA я для каждого листа в блоке листа перебирал нужные мне объекты ссылки на блоки, получал при помощи GetAttributes() ссылки на атрибуты и читал их координаты, затем получал блок, на который указывает ссылка, обходил в нем все объекты и транслировал координаты этих объектов относительно листа.
Видимо, на .NET нужен другой подход. Тут я для каждого листа получаю его блок и перебираю на нем нужные мне объекты, при этом вместо ссылок на блоки я получаю сами блоки... и атрибуты, вместо ссылок на атрибуты.... Просто праздник какой-то )))
-
Проблема оказалась в том, что проходя по блоку листа, я почему-то не встречаю ни одного BlockReference, хотя блоки на листе есть... А встречаю BlockDefinition... (((
Этого не может быть, потому что не может быть никогда. В блоке (BlockDefinition) не могут содержаться другие BlockDefinition.
-
Все, нашел где я лоханулся! Я после проверки на BlockReference тут же получал для него него BlockTableRecord и уже с ним работал ::)
Сроки поджимают, внимание рассеивается...