Проверка соединения двух элементов системы

Автор Тема: Проверка соединения двух элементов системы  (Прочитано 3590 раз)

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

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

  • ADN OPEN
  • Сообщений: 39
  • Карма: 2
Добрый день. Есть ли эффективный способ узнать соединены ли два элемента (FamilyInstance) в трубопроводной системе (PipingSystem) средствами Revit API?? Интересует сам факт соединения между двумя элементами посредство труб и соединителей (либо соединены либо нет). Или же нужно проверять коннекторы элементов и строить граф и его анализировать, если система сложная с множеством ответвлений? Просто нужно сделать проверку соединен ли список элементов между собой в системе, но при этом информация об изменении соединений должна обновляться при каждом изменении документа (событие DocumentChanged), и я опасаюсь, что обновление и проверка графа, сильно скажется на производительности и Revit будет тормозить.

Отмечено как Решение Ksarrik 01-02-2022, 13:46:17

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

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Я бы попробовал начать с проверки свойства IsWellConnected:
Цитировать
Indicates if the system is well connected or not.

Если вернулось true, значит соединены. Альтернативно проверить, что GetPhysicalNetworksNumber() вернёт 1.

Если false - то нужно проверять сеть. Я бы начал с проверки графа, т.к. легко пишется как самостоятельно, так и ищется в гугле и посмотрел бы на реальную производительность. С большой вероятностью будет вполне приемлемая.

Если всё-таки нет, то можно попробовать работать с секциями (MEPSection). У MEPSystem есть свойство SectionsCount и GetSectionByIndex -> получаем список секций. Дальше у каждой секции можно запросить элементы, по ним построить граф секций. При правильно выбранных структурах данных теоретически можно получить прирост производительности, но это всё нужно проверять на практике