Добрый день!
Можно ли найти объекты (например, сформировав набор с фильтрами) внутри зоны (многоугольник секущий или нет) на открытом неактивном чертеже?
Пробовал делать так:
(setq current_actdoc (vla-Item (vla-get-Documents (vlax-get-acad-object)) "123.dwg"))
(setq current_modspace (vla-get-modelspace current_actdoc))
(setq obj (vla-get-ActiveSelectionSet current_actdoc))
(setq ss (vla-SelectByPolygon obj acSelectionSetWindowPolygon
(vlax-safearray-fill (vlax-make-safearray vlax-vbDouble '(0 . 14))
(append (list 0 0 0) (list 0 3000 0) (list 3000 3000 0) (list 3000 0 0) (list 0 0 0)))
(vlax-safearray-fill (vlax-make-safearray vlax-vbInteger '(0 . 0)) '(0))
(vlax-safearray-fill (vlax-make-safearray vlax-vbVariant '(0 . 0)) '("INSERT"))))
Предварительно в неактивном чертеже 123.dwg была нарисована рамка со сторонами 3000 от нулевой точки, в которую были помещены вхождения блоков.
Переменная ss имеет значение nil.
Вторым вариантом я думал перебрать все объекты неактивного чертежа и сопоставить точку вставки вхождения блока с точками контура, но не знаю математического алгоритма принадлежности точки сложному контуру.
Может, есть какие-то протоптанные пути для этой задачи?