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

ADN Club => AutoCAD .NET API => Тема начата: flaojke от 27-11-2014, 18:18:10

Название: Точки пересечения Polyline2d и Polyline3d
Отправлено: flaojke от 27-11-2014, 18:18:10
Необходимо искать точки пересечения 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.  
Название: Re: Точки пересечения Polyline2d и Polyline3d
Отправлено: Дима_ от 27-11-2014, 21:13:01
Наверное разумней вначале "расплющить" трехмерную, а потом искать точки.
Название: Re: Точки пересечения Polyline2d и Polyline3d
Отправлено: Александр Ривилис от 28-11-2014, 23:56:19
Polyline3D следует превращать в 2D, либо как-то по-другому, так как они находятся на разной высоте?
Саму полилинию можешь не превращать, а воспользоваться методом GetOrthoProjectedCurve для получения плоской кривой (если это конечно возможно) в плоскости, которая совпадает с плоскостью Polyline2d.