Точки пересечения Polyline2d и Polyline3d

Автор Тема: Точки пересечения Polyline2d и Polyline3d  (Прочитано 4515 раз)

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

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

  • ADN OPEN
  • Сообщений: 24
  • Карма: 0
Необходимо искать точки пересечения 3d полилинии с 2d полилинией и заносить точки в список List_Points3d. Точки пересечения должны быть без учета координаты z. Polyline3D следует превращать в 2D, либо как-то по-другому, так как они находятся на разной высоте? Как можно это осуществить? Единственное, до чего я дошел - ниже, но ругается на сам поиск точки пересечения.

Код - C# [Выбрать]
  1. List<Polyline2d> List2d = new List<Polyline2d>();
  2. List<Polyline3d> List3d = new List<Polyline3d>();
  3. List<Point3d> List_Points3d = new List<Point3d>();
  4. ...
  5. foreach (Polyline3d line3d in List3d)
  6.                     {
  7.                        foreach (Polyline2d line2d in List2d)
  8.                        {
  9.                         Curve curve3D = line3d as Curve; //кривая из 3d
  10.                         Curve curve2D = line2d as Curve; //кривая из 2d
  11.  
  12.                         Point3dCollection points = new Point3dCollection(); //Поиск точек пересечения
  13.                                 curve3D.IntersectWith(
  14.                                     curve2D,
  15.                                     Intersect.OnBothOperands,
  16.                                     points,
  17.                                     IntPtr.Zero,
  18.                                     IntPtr.Zero);
  19.  
  20.                                   foreach (Point3d pt in points) //Добавление найденных точек в список
  21.                                     {
  22.                                         List_Points3d.Add(pt);
  23.                                     }
  24.                        }
  25.                      }
  26.  
« Последнее редактирование: 28-11-2014, 20:49:19 от Александр Ривилис »

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

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
Re: Точки пересечения Polyline2d и Polyline3d
« Ответ #1 : 27-11-2014, 21:13:01 »
Наверное разумней вначале "расплющить" трехмерную, а потом искать точки.

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

  • Administrator
  • *****
  • Сообщений: 13877
  • Карма: 1785
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Точки пересечения Polyline2d и Polyline3d
« Ответ #2 : 28-11-2014, 23:56:19 »
Polyline3D следует превращать в 2D, либо как-то по-другому, так как они находятся на разной высоте?
Саму полилинию можешь не превращать, а воспользоваться методом GetOrthoProjectedCurve для получения плоской кривой (если это конечно возможно) в плоскости, которая совпадает с плоскостью Polyline2d.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение