ADN Club => AutoCAD .NET API => Тема начата: i00lii от 19-03-2015, 17:27:47
Название: Не выбирается блок
Отправлено: i00lii от 19-03-2015, 17:27:47
Добрый день! К сожалению, в данный момент нет возможности выложить исходные файлы для полного описания проблемы, поэтому постараюсь как можно более подробно здесь ее описать.
Я делаю свою маленькую программку для AutoCAD, используя AutoCAD .NET Api из C#. Столкнулся с совершенно непонятной мне штукой.
Есть динамический блок по имени "i00lii_point", состоящий из точки, атрибута и точечного параметра за который этот атрибут можно перемещать. Все это прекрасно работает.
Возникла необходимость из кода запрашивать у пользователя вхождения таких блоков.
PromptSelectionResult result = _aDocumentEditor.GetSelection(new SelectionFilter(filter));
Тут все тоже прекрасно работает до того момента, как только я пытаюсь выбрать блок с перемещенным параметром. Данный код, хоть убей, не дает мне выделить нужный мне блок. А самое ужасное, что я понятия не имею, почему.
На картинке у P2 не смещен параметр, у P1 параметр смещен.
Спасибо за внимание.
Название: Re: Не выбирается блок
Отправлено: Александр Ривилис от 19-03-2015, 18:40:08
i00lii Приветствую на форуме! Сразу несколько поучений. 1. В большинстве случаев нужен сам dwg-файл (в данном случае обойдемся) 2. Код следует форматировать. Читай мою подпись. Теперь по существу. У тебя динамический блок. Поэтому при изменении вхождения (BlockReference) этого блока меняется его имя - он становится анонимным. При помощи фильтра ты не можешь получить все вхождения этого блока. Почитай: http://adn-cis.org/kak-najti-vse-vstavki-dinamicheskogo-bloka.html
Название: Re: Не выбирается блок
Отправлено: i00lii от 19-03-2015, 22:55:22
Спасибо за ответ.
Если вдруг у кого-то возникнет похожая проблема, то вот статья (http://through-the-interface.typepad.com/through_the_interface/2012/09/creating-a-selection-filter-that-finds-dynamic-blocks-in-autocad-using-net.html) с вариантом ее решения.