Прям сегодня натыкался )Посмотрел утилиту. Там нет исх. кода. Мне нужно этот код вставить в свой код, написанный на с#.
https://bushman-andrey.blogspot.com/2014/12/explodeallproxy-removeallproxy.html
Это утилита от Андрея Бушмана, написанная на .NET. Повторяет функционал ARX утилиты от Александра Ривилиса, ну и позволяет перед действиями с ними увидеть их количество.
А зачем их считать?
Считать эти элементы мне нужно для того, чтобы получить тексты, входящие в ProxyEntity. А дальше я анализирую эти тексты и ищу в них ссылки на документы.Напрямую из ProxyEntity информацию не считать, т.к. это не предусмотрено API. Нужно либо разбивать на примитивы автокада и анализировать результат после разбивки или как-то анализировать через dxf.
Все элементы - это те элементы, из которых состоит ProxyEntity. Если я правильно понимаю, ProxyEntity включает в себя те же элементы, что и автокад, или я не прав?Не прав. Поясняю. ProxyEntity ничего не включает. Он возникает только в случае, когда в AutoCAD не загружен его Enabler (это может быть dbx/arx/dll-файл). В лучшем случае, и только если это предусмотрено создателем ProxyEntity можно расчленить на примитивы AutoCAD, используя метод Explode. Но во-первых, это не обязательно. Во-вторых, даже если метод Explode сработает, это не значит, что полученные примитивы будут в точности соответствовать изображению ProxyEntity (например, не будет некоторых линий или они будут не на том месте).
Как преобразовать элементы массива Db.DBObjectCollection так, чтобы воспользоваться методами процедуры FindItems?Не нужно ничего преобразовывать. Нужно с каждым из элементов newDBObjects проделать то же, что ты проделываешь с en.
Для элемента ProxyEntity нужно использовать тот же BlockTableRecord или другой?Нет. Тебе вообще не понадобится acTrans.GetObject(...), так как newDBObjects уже содержит коллекцию Entity.
Я правильно понимаю, что могут быть только DBText или MText ?Из текстовых примитивов только они. Но если будешь обрабатывать и другие, то хуже не будет.
Можно найти ObjectId для элементов, из которых состоит ProxyEntity, для того,У них нет ObjectId, так как они не добавлены в чертеж - они только в памяти.
чтобы потом позиционироваться на эти элементы?
Правильно я понимаю, что позиционироваться на эти элементы нельзя?Что такое "позиционироваться"? Получить по ObjectId объект? Тогда ответ нет. Нет у них ObjectId.
Позиционироваться - это выделить нужный элемент и отобразить его на экране в нужном размере.Для этой цели необходимо, чтобы этот элемент был в базе данных, а это не так.
Значит, я все правильно понимаю. Позиционироваться на элемент ProxyEntity нельзяПозиционироваться на ProxyEntity можно. Пока ты его не разбил на примитивы автокада и не удалил.
Позиционироваться на элемент ProxyEntity нельзя.Нельзя до того момента, как ты не вставишь его в базу.