Спасибо. Суть алгоритма если я правильно понял в исключении множественной итерации по всем элементам чертежа, буду пробовать.
Я себе представляю примерно так:
1. Получаем границы чертежа, например прямоугольные.
2. Разбиваем на некоторое кол-во малых прямоугольников. Одного вложения дерева думаю мне хватит
3. Дальше уже можно для каждого малого прямоугольника считывать нужные данные, в том числе метку объекта например Handle.
4. Дальше по точке получаем нужный прямоугольник и обрабатываем объекты которые содержатся в этом прямоугольнике, а не все.