Вопрос по работе метода IntersectWith

Автор Тема: Вопрос по работе метода IntersectWith  (Прочитано 6070 раз)

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

Оффлайн Volody1983Автор темы

  • ADN OPEN
  • **
  • Сообщений: 52
  • Карма: 0
Добрый день!
Нахожу пересечение блока и выноски с помощью метода IntersectWith.
Почему-то если блок допустим круглой формы то метод находит точку пересечения, как буд-то блок описан квадратом.
Это нормально? Если так, то может есть варианты как это обойти. Задача программно выноску перенести к краю блока.
Картинка с визуализацией ниже:


Заранее спасибо!

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Вопрос по работе метода IntersectWith
« Ответ #1 : 09-04-2014, 17:46:13 »
Это нормально?
Да. Так задумано. Если один из примитивов блок, то пересечение ищется не с самим блоком, а с BoundingBox (или GeomExtents - окаймляющим параллелепипедом) для этого блока. Чтобы найти реальные точки пересечения необходимо или находить пересечения с примитивами расчлененного блока, или находить пересечения с элементами составляющими блок с учетом системы координат самого блока, точки вставки блока, углов поворота и масштабирования, что часто не очень просто. Особенно если есть вложенные блоки.
Есть статья, которую я еще не переводил: http://adndevblog.typepad.com/autocad/2012/12/intersecting-any-entity-with-a-blockreference-and-retrieving-the-intersection-points.html (это ObjectARX, но реализовать на .NET API можно аналогично)
« Последнее редактирование: 09-04-2014, 17:57:50 от Александр Ривилис »
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Volody1983Автор темы

  • ADN OPEN
  • **
  • Сообщений: 52
  • Карма: 0
Re: Вопрос по работе метода IntersectWith
« Ответ #2 : 09-04-2014, 18:26:56 »
Александр воспользовался методом explode. Это помогло найти правильную точку. Вложенных блоков у меня нет, но обратил внимание, что если в блоке есть HATCH то IntersectWith не отрабатывает и вываливается ошибка. Вообщем убрал из обработки HATCH помогло. Может у Вас в голову еще что приходит кроме HATCH?

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

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Вопрос по работе метода IntersectWith
« Ответ #3 : 09-04-2014, 20:23:55 »
Может у Вас в голову еще что приходит кроме HATCH?
В мою голову ( :D ) приходят еще тексты, мультитексты, атрибуты и определения атрибутов - для них тоже самое, что и для вставки блока. Если нужно получить точку пересечения со штриховкой, то можно найти её контуры(ы) и соотвественно точку пересечения с ними.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение