Получить контур колонны в нужных координатах

Автор Тема: Получить контур колонны в нужных координатах  (Прочитано 3673 раз)

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

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

  • ADN OPEN
  • **
  • Сообщений: 87
  • Карма: 0
Здравствуйте, столкнулся со следующей проблемой. Мне необходимо получить геометрию колонн (их сечение) с нужными координатами. Сами профили вроде как удается находить, но они все в точке 0. Как можно получить список Curve в нужных координатах?
Вот метод, который вытаскивает профили из колонн
Код - C# [Выбрать]
  1.         private List<CurveArrayDTO> GetColumnProfile(Element element, Options opt)
  2.         {
  3.             List<CurveArrayDTO> result = new List<CurveArrayDTO>();          
  4.             if (element is FamilyInstance familyInstance)
  5.             {
  6.                 if (familyInstance.HasSweptProfile())
  7.                 {
  8.                     SweptProfile swept = familyInstance.GetSweptProfile();
  9.                     var profile = swept.GetSweptProfile();
  10.                     CurveArray profileCurves = profile.Curves;
  11.                     var curveEnum = profileCurves.Cast<Curve>();
  12.                     CurveArrayDTO curveArray = new CurveArrayDTO();
  13.                     curveArray.Curves.AddRange(curveEnum);
  14.                     result.Add(curveArray);
  15.                 }
  16.  
  17.                 else
  18.                 {
  19.                     GeometryElement geometryElement = element.get_Geometry(opt);
  20.                     foreach (GeometryObject geometryObject in geometryElement)
  21.                     {
  22.                         if (geometryObject is GeometryInstance geometryInstance)
  23.                         {
  24.                             var geoElem = geometryInstance.SymbolGeometry;
  25.                             var solid = geoElem.Where(s => s.IsElementGeometry).Cast<Solid>().First(s => s.SurfaceArea > 0);
  26.                             result = GetBoundaries(solid).OrderBy(a => a.Area).ToList();
  27.                         }
  28.  
  29.                     }
  30.  
  31.                 }
  32.  
  33.             }
  34.             return result;
  35.         }
  36.  
  37.  

Отмечено как Решение user32 28-10-2020, 10:57:22

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Воспользоваться
Код - C# [Выбрать]
  1. FamilyInstance.GetTotalTransform()