Сообщество программистов Autodesk в СНГ

Статьи => Опубликованные статьи => Тема начата: ADSK от 24-09-2014, 21:30:07

Название: Как средствами AutoCAD определить расположение точки относительно контура.
Отправлено: ADSK от 24-09-2014, 21:30:07
Как средствами AutoCAD определить расположение точки относительно контура. (http://adn-cis.org/kak-sredstvami-opredelit-raspolozhenie-tochki-otnositelno-kontura.html)
Название: Re: Как средствами AutoCAD определить расположение точки относительно контура.
Отправлено: Дима_ от 25-09-2014, 10:47:20
ИХМО эти методы разумно использовать только для существующих примитивов (либо "сложнозадаваемых" областей - например с дуговыми сегментами, "вырезами" и пр.), а т.к. данная задача нередко появляется при "аналитических вычислениях" - например если необходимо проверить принадлежность точки контуру до его построения - то тут пожалуй лучше обратиться к математике (разбор методов был например здесь http://forum.dwg.ru/showthread.php?t=60792 (http://forum.dwg.ru/showthread.php?t=60792)) - ибо строить контур в виде полилинии или области (даже просто виртуально - без добавления в БД) только для определения входит-ли в него точка - это как-то накладно по ресурсам.
Название: Re: Как средствами AutoCAD определить расположение точки относительно контура.
Отправлено: Александр Ривилис от 25-09-2014, 12:26:34
Дима_, могу согласится, но лишь отчасти.
1) В самом названии статьи подразумевается, что определить нужно средствами AutoCAD, т.е. используя только API AutoCAD.
2) Создание полилинии налету без добавления её в БД - операция достаточно быстрая.
3) Можно не создавать вообще полилинию, т.к. у MPolygon есть еще и метод построения Loop на основе геометрических данных (MPolygonLoop), которые можно формировать на лету.
Евгений Елпанов может подтвердить, что метод достаточно эффективный - мы с ним вместе его использовали (в ObjectARX)
Единственная проблема в использовании этого метода - это возможность внесения программистами Autodesk ошибок в очередной версии, что и было сделано в AutoCAD 2007. Но с тех пор метод работает стабильно. Во всяком случае я не находил проблем в его использовании.
4) Класс MPolygon обладает еще рядом интересных свойств, о которых я упомяну в следующих статьях.