Получение поверхностей все элементов витража

Автор Тема: Получение поверхностей все элементов витража  (Прочитано 1760 раз)

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

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

  • ADN Club
  • ***
  • Сообщений: 214
  • Карма: 5
  • Sergey
  • Skype: sergey.s.shevtsov
Добрый день!

Хочу получить все Face элемента Curtain Wall, но сталкнулся с несколькими проблемами:

1. Получение панелей витражей и и их трансформация.
Код - C# [Выбрать]
  1. foreach (ElementId id in curtainGrid.GetPanelIds())
  2.     {
  3.          if (document.GetElement(id) is Panel panel)
  4.              {
  5.                   GeometryElement geometryElement = panel.get_Geometry(new Options { ComputeReferences = true, IncludeNonVisibleObjects = true });
  6.                   if (null != geometryElement)
  7.                   {
  8.                        foreach (GeometryObject geometryObject in geometryElement.GetTransformed(panel.GetTransform()))
  9.                        {
  10.                             if (geometryObject is Solid solid)
  11.                             {
  12.                                  foreach (Face face in solid.Faces)
  13.                                  {
  14.                                        Mesh mesh = face.Triangulate();
  15.                                  }
  16.                              }
  17.                     }
  18.               }
  19.  

Получаю координаты точек поверхности, но они не верны.
Кстати с FamilyInstance это работает корректно.

2. Что такое Mullions и можно ли получить геометрию этого объекта - тут разобрался, пропустил метод GetMullionIds.

Отмечено как Решение shss 16-04-2018, 17:26:20

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

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
День добрый!

Panel это в принципе FamilyInstance, в списке его GeometryObject есть объект GeometryInstance. Можно получить его геометрию с помощью метода GetInstanceGeometry, а вызов GetTransfomed убрать совсем.

Mullion - это импосты витража

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

  • ADN Club
  • ***
  • Сообщений: 214
  • Карма: 5
  • Sergey
  • Skype: sergey.s.shevtsov
Спасибо за подсказку.
Все получилось.