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

ADN Club => Revit API => Тема начата: shss от 16-04-2018, 15:56:33

Название: Получение поверхностей все элементов витража
Отправлено: shss от 16-04-2018, 15:56:33
Добрый день!

Хочу получить все 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.
Название: Re: Получение поверхностей все элементов витража
Отправлено: Александр Игнатович от 16-04-2018, 16:09:29
День добрый!

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

Mullion - это импосты витража
Название: Re: Получение поверхностей все элементов витража
Отправлено: shss от 16-04-2018, 16:26:18
Спасибо за подсказку.
Все получилось.