Поиск пересечения существующей геометрии и аналитической.

Автор Тема: Поиск пересечения существующей геометрии и аналитической.  (Прочитано 2883 раз)

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

Оффлайн ВильдарАвтор темы

  • ADN Club
  • ****
  • Сообщений: 395
  • Карма: 69
  • Skype: vildar82
Добрый день,
Интересуют способы поиска пересечений существующей геометрии и аналитической.
На картинке красный объект существует в чертеже (полилиния), белые - окружность и отрезое - аналитические (их нигде нет ;D).
Нужно найти пересечение белого отрезка и красной полилинии. Как это можно решить?

Можно добавить отрезок в чертеж и найти пересечение через IntersectWith.
Или можно обойтись без этого. Например, классы в Geometry - темный лес. Может там есть что-то подходящее?

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

  • Administrator
  • *****
  • Сообщений: 13077
  • Карма: 1687
  • Рыцарь ObjectARX
  • Skype: rivilis
Можно добавить отрезок в чертеж и найти пересечение через IntersectWith.
Зачем добавлять в чертеж? Достаточно такой конструкции:
Код - C# [Выбрать]
  1. using (Line line = new Line(point1, point2))
  2. {
  3.    line.IntersectWith(...)
  4. }
Ну это как бы простейший вариант...
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13077
  • Карма: 1687
  • Рыцарь ObjectARX
  • Skype: rivilis
Или можно обойтись без этого. Например, классы в Geometry - темный лес. Может там есть что-то подходящее?
И там есть подходящее. Но в этом случае тебе придётся преобразовать Curve (из DatabaseServices) в Curve3d (из Geometry) и пользоваться пересечениями уже из Geometry.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн ВильдарАвтор темы

  • ADN Club
  • ****
  • Сообщений: 395
  • Карма: 69
  • Skype: vildar82
Про using new Line не знал, спасибо, работает.
А с Geometry пока не понятно.
Получить Curve3d из Polyline так:
Код - C# [Выбрать]
  1. Curve3d curve = polyline.GetGeCurve();
А как проверить пересечение?
У Line3d есть метод IntersectWith, но он не принимает Curve3d  :-[
Заранее спасибо!

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

  • Administrator
  • *****
  • Сообщений: 13077
  • Карма: 1687
  • Рыцарь ObjectARX
  • Skype: rivilis
Про using new Line не знал, спасибо, работает.
Рекомендую его и оставить.
А с Geometry пока не понятно.
Получить Curve3d из Polyline так:
Код - C# [Выбрать]

    Curve3d curve = polyline.GetGeCurve();

А как проверить пересечение?
У Line3d есть метод IntersectWith, но он не принимает Curve3d  :-[
Смотри в сторону класса CurveCurveIntersector3d
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение