ADN Club => AutoCAD .NET API => Тема начата: Volody1983 от 07-02-2016, 22:45:32
Название: Аналог SelectCrossingPolygon
Отправлено: Volody1983 от 07-02-2016, 22:45:32
Добрый день! Может кто подскажет есть какой-либо API для получения перечня объектов проходящих через указанную точку или область (polygon). Например нужно отловить все полилинии проходящие через заданную область или точку. В настоящий момент использую SelectCrossingPolygon для решения этой задачи, но для использования нужно, чтоб было все видно на мониторе, а также если вызывать SelectCrossingPolygon например более 1000 раз в разных областях то получается очень медленно.
Название: Re: Аналог SelectCrossingPolygon
Отправлено: Дима_ от 07-02-2016, 23:17:43
Автокадных Api нет. Чтоб было быстро можно "руками", ищите на этом сайте по слову R-Tree.
Название: Re: Аналог SelectCrossingPolygon
Отправлено: trir от 08-02-2016, 09:12:49
Загружаем все интересные объекты в дерево, а потом ищем в дереве
Название: Re: Аналог SelectCrossingPolygon
Отправлено: Volody1983 от 08-02-2016, 11:18:10
Спасибо. Суть алгоритма если я правильно понял в исключении множественной итерации по всем элементам чертежа, буду пробовать. Я себе представляю примерно так: 1. Получаем границы чертежа, например прямоугольные. 2. Разбиваем на некоторое кол-во малых прямоугольников. Одного вложения дерева думаю мне хватит 3. Дальше уже можно для каждого малого прямоугольника считывать нужные данные, в том числе метку объекта например Handle. 4. Дальше по точке получаем нужный прямоугольник и обрабатываем объекты которые содержатся в этом прямоугольнике, а не все.
Название: Re: Аналог SelectCrossingPolygon
Отправлено: trir от 08-02-2016, 11:29:04
RTree (http://sourceforge.net/projects/cspatialindexrt/) 1. Загружаем исходный набор в дерево