Как средствами AutoCAD определить расположение точки относительно контура.

Автор Тема: Как средствами AutoCAD определить расположение точки относительно контура.  (Прочитано 4783 раз)

0 Пользователей и 1 Гость просматривают эту тему.


Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
ИХМО эти методы разумно использовать только для существующих примитивов (либо "сложнозадаваемых" областей - например с дуговыми сегментами, "вырезами" и пр.), а т.к. данная задача нередко появляется при "аналитических вычислениях" - например если необходимо проверить принадлежность точки контуру до его построения - то тут пожалуй лучше обратиться к математике (разбор методов был например здесь http://forum.dwg.ru/showthread.php?t=60792) - ибо строить контур в виде полилинии или области (даже просто виртуально - без добавления в БД) только для определения входит-ли в него точка - это как-то накладно по ресурсам.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Дима_, могу согласится, но лишь отчасти.
1) В самом названии статьи подразумевается, что определить нужно средствами AutoCAD, т.е. используя только API AutoCAD.
2) Создание полилинии налету без добавления её в БД - операция достаточно быстрая.
3) Можно не создавать вообще полилинию, т.к. у MPolygon есть еще и метод построения Loop на основе геометрических данных (MPolygonLoop), которые можно формировать на лету.
Евгений Елпанов может подтвердить, что метод достаточно эффективный - мы с ним вместе его использовали (в ObjectARX)
Единственная проблема в использовании этого метода - это возможность внесения программистами Autodesk ошибок в очередной версии, что и было сделано в AutoCAD 2007. Но с тех пор метод работает стабильно. Во всяком случае я не находил проблем в его использовании.
4) Класс MPolygon обладает еще рядом интересных свойств, о которых я упомяну в следующих статьях.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение