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

Статьи => Тестирование статей => Тема начата: Андрей Фазлеев от 04-12-2015, 18:55:48

Название: [Revit API] - Как получить линии из условного обозначения отверстия
Отправлено: Андрей Фазлеев от 04-12-2015, 18:55:48
На прошлой неделе Хасан Мамаев задал вопрос:
Цитировать
Я пытаюсь получить геометрию нескольких экземпляров одного плоского семейства таким кодом:
i.GetInstanceGeometry()
но выдаёт ошибку: AttributeError: 'FamilyInstance' object has no attribute 'GetInstanceGeometry'
Объекты, из которых нужно вытянуть линии - условное отображение отверстий:
(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fs14.postimg.org%2Fest050ywt%2FD0_A1_D0_BD_D0_B8_D0_BC_D0_BE_D0_BA.jpg&hash=85025a1df85c546168364e87cadb4148) (http://postimg.org/image/est050ywt/)

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

Первым делом обращаюсь к документации (http://help.autodesk.com/view/RVT/2014/RUS/?guid=GUID-F429AAEC-551C-4E0D-9CE0-6F92A5A68CC3).
Есть пример с извлечением геометрии из стены, но применить один в один не удалось.

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

Код - 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. }

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

Удачи!