[Revit API] - Как получить линии из условного обозначения отверстия

Автор Тема: [Revit API] - Как получить линии из условного обозначения отверстия  (Прочитано 5110 раз)

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

Оффлайн Андрей ФазлеевАвтор темы

  • ADN Club
  • Сообщений: 24
  • Карма: 8
    • Andrey Stroitel
На прошлой неделе Хасан Мамаев задал вопрос:
Цитировать
Я пытаюсь получить геометрию нескольких экземпляров одного плоского семейства таким кодом:
i.GetInstanceGeometry()
но выдаёт ошибку: AttributeError: 'FamilyInstance' object has no attribute 'GetInstanceGeometry'
Объекты, из которых нужно вытянуть линии - условное отображение отверстий:


Сегодня появилось время, пытаюсь разобраться.

Первым делом обращаюсь к документации.
Есть пример с извлечением геометрии из стены, но применить один в один не удалось.

После изысканий разработал такой код:

Код - C# [Выбрать]
  1. private List<Line> GetLines(Element element)
  2. {
  3.  
  4.     List<Line> lines = new List<Line>();
  5.  
  6.     Autodesk.Revit.DB.Options geomOption = element.Document.Application.Create.NewGeometryOptions();
  7.  
  8.             if (null != geomOption)
  9.             {
  10.                 geomOption.View = element.Document.ActiveView;              
  11.             }
  12.  
  13.     GeometryElement geometryElement = element.get_Geometry(geomOption);
  14.  
  15.     foreach (GeometryInstance gi in geometryElement)
  16.     {
  17.         foreach (GeometryObject go in gi.GetInstanceGeometry())
  18.         {
  19.             Line l = go as Line;
  20.  
  21.             if (l != null)
  22.             {
  23.                 lines.Add(l);
  24.             }
  25.         }
  26.     }
  27.  
  28.     return lines;
  29.  
  30. }

Этот код заработал для элементов типа Элементы узлов.
Для Типовых аннотаций не работает. Если найду решение, то сделаю продолжение.

Удачи!