Lemieux,А как быть?
OwnerId для AttributeRefence должно указывать на BlockReference, которому он принадлежит. Но дальше ты найти не сможешь, т.к. этот BlockReference может входить сразу в несколько BlockTableRecord. Поэтому эмуляция GetContainers не получится.
А как быть?Никак. Это тупиковый путь. Ты можешь получить массу таких контейнеров, но какой именно тот, который тебе нужен, ты узнать не сможешь. Разве что это единственная вставка блока в чертеже.
Вот это я попал. Интересно, как же тогда GetContainers работает.А как быть?Никак. Это тупиковый путь. Ты можешь получить массу таких контейнеров, но какой именно тот, который тебе нужен, ты узнать не сможешь. Разве что это единственная вставка блока в чертеже.
Интересно, как же тогда GetContainers работает.Этот метод знает, что именно выбрано на чертеже (т.е. всю цепочку), а не только последний в цепочке объект.
То есть если у меня BlockReference из трёх уровней и на самом нижнем уровне AttributeReference, и я просто кликаю по этому AttributeReference, то этот клик проходит через все уровни, а не напрямую обращается к этому AttributeReference?Интересно, как же тогда GetContainers работает.Этот метод знает, что именно выбрано на чертеже (т.е. всю цепочку), а не только последний в цепочке объект.
То есть если у меня BlockReference из трёх уровней и на самом нижнем уровне AttributeReference, и я просто кликаю по этому AttributeReference, то этот клик проходит через все уровни, а не напрямую обращается к этому AttributeReference?Именно так.
Интересно. Значит нужно написать аналог NestedResult. Эта проблема тянется из моего прошлого вопроса. Я разом выбираю много вложенных атрибутов и пытаюсь узнать все уровни вложенности до самого верхнего BlockReference который находится в ModelSpace.То есть если у меня BlockReference из трёх уровней и на самом нижнем уровне AttributeReference, и я просто кликаю по этому AttributeReference, то этот клик проходит через все уровни, а не напрямую обращается к этому AttributeReference?Именно так.
Если ты имеешь просто AttributeReference, то ты даже не знаешь где именно в чертеже он расположен. Зная место расположения и AttributeReference ты теоретически можешь собрать всю цепочку. Ну конечно если нет наложения. Но если есть наложение, то и выбор вручную будет "неуверенный".Да если я не могу ходить по уровням, то я не могу выяснить глобальные координаты атрибута.
Lemieux,Вот отсюда
А откуда ты берёшь сам AttributeReference?
Я так и подозревал. :-) Отсюда если ты проанализируешь полностью список managedResultBuffer, ты сможешь найти координаты выбранного AttributeReference. Более того в нём есть всё, чтобы получить всю цепочку объектов. Распечатай managedResultBuffer и ты увидишь это сам. Заодно почитай описание acedSSNameX и поищи примеры её использования.Значит буду дальше копать :)