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

ADN Club => AutoCAD .NET API => Тема начата: Вильдар от 26-06-2016, 18:27:28

Название: Поиск пересечения существующей геометрии и аналитической.
Отправлено: Вильдар от 26-06-2016, 18:27:28
Добрый день,
Интересуют способы поиска пересечений существующей геометрии и аналитической.
На картинке красный объект существует в чертеже (полилиния), белые - окружность и отрезое - аналитические (их нигде нет ;D).
Нужно найти пересечение белого отрезка и красной полилинии. Как это можно решить?
(https://s32.postimg.org/43lwdautt/image.png) (https://postimg.org/image/43lwdautt/)
Можно добавить отрезок в чертеж и найти пересечение через IntersectWith.
Или можно обойтись без этого. Например, классы в Geometry - темный лес. Может там есть что-то подходящее?
Название: Re: Поиск пересечения существующей геометрии и аналитической.
Отправлено: Александр Ривилис от 26-06-2016, 20:03:27
Можно добавить отрезок в чертеж и найти пересечение через IntersectWith.
Зачем добавлять в чертеж? Достаточно такой конструкции:
Код - C# [Выбрать]
  1. using (Line line = new Line(point1, point2))
  2. {
  3.    line.IntersectWith(...)
  4. }
Ну это как бы простейший вариант...
Название: Re: Поиск пересечения существующей геометрии и аналитической.
Отправлено: Александр Ривилис от 26-06-2016, 20:21:31
Или можно обойтись без этого. Например, классы в Geometry - темный лес. Может там есть что-то подходящее?
И там есть подходящее. Но в этом случае тебе придётся преобразовать Curve (из DatabaseServices) в Curve3d (из Geometry) и пользоваться пересечениями уже из Geometry.
Название: Re: Поиск пересечения существующей геометрии и аналитической.
Отправлено: Вильдар от 27-06-2016, 11:00:11
Про using new Line не знал, спасибо, работает.
А с Geometry пока не понятно.
Получить Curve3d из Polyline так:
Код - C# [Выбрать]
  1. Curve3d curve = polyline.GetGeCurve();
А как проверить пересечение?
У Line3d есть метод IntersectWith, но он не принимает Curve3d  :-[
Заранее спасибо!
Название: Re: Поиск пересечения существующей геометрии и аналитической.
Отправлено: Александр Ривилис от 27-06-2016, 11:05:12
Про using new Line не знал, спасибо, работает.
Рекомендую его и оставить.
А с Geometry пока не понятно.
Получить Curve3d из Polyline так:
Код - C# [Выбрать]

    Curve3d curve = polyline.GetGeCurve();

А как проверить пересечение?
У Line3d есть метод IntersectWith, но он не принимает Curve3d  :-[
Смотри в сторону класса CurveCurveIntersector3d