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

ADN Club => Civil 3D API => Тема начата: Doublefish от 11-09-2014, 12:02:39

Название: Как получить все пикеты у трассы с координатами?
Отправлено: Doublefish от 11-09-2014, 12:02:39
Подскажите пожалуйста
Как получить все пикеты у трассы с координатами для определения углов поворотов трассы?

или можно как то по другому получить углы поворотов трассы?
Название: Re: Как получить все пикеты у трассы с координатами?
Отправлено: Дмитрий Загорулькин от 11-09-2014, 12:59:31
Если я правильно понял вопрос, то Вам нужно смотреть метод Alignment.GetStationSet.
Название: Re: Как получить все пикеты у трассы с координатами?
Отправлено: Doublefish от 11-09-2014, 13:58:40
Код - C# [Выбрать]
  1. Station[] myStations = oAlignment.GetStationSet(StationTypes.All);
  2. foreach (Station myStation in myStations)
  3. {
  4.     ed.WriteMessage("Station {0} is type {1} and at {2}\n", myStation.RawStation, myStation.StationType.ToString(), myStation.Location.ToString());
  5. }

Спасибо, а случайно чтобы получить углы нету никакого метода?
Название: Re: Как получить все пикеты у трассы с координатами?
Отправлено: Дмитрий Загорулькин от 11-09-2014, 14:07:30
Насколько я знаю, напрямую из трассы углы не получить.
Но это не должно быть проблемой, если известны 2D координаты точек геометрии трассы ;)
Как один из вариантов:
Код - C# [Выбрать]
  1.         /// <summary>
  2.         /// Вычисление угла по трем точкам
  3.         /// </summary>
  4.         /// <param name="pt1">Первая точка</param>
  5.         /// <param name="pt2">Вторая точка (вершина угла)</param>
  6.         /// <param name="pt3">Третья точка</param>
  7.         /// <returns></returns>
  8.         public static double GetAngle(Point2d pt1, Point2d pt2, Point2d pt3)
  9.         {
  10.             Vector2d vect1 = GetVector(pt1, pt2), vect2 = GetVector(pt2, pt3);
  11.             return vect1.GetAngleTo(vect2);
  12.         }