Сообщество программистов Autodesk в СНГ
ADN Club => Revit API => Тема начата: Ksarrik от 31-01-2022, 11:38:00
-
Добрый день. Есть ли эффективный способ узнать соединены ли два элемента (FamilyInstance) в трубопроводной системе (PipingSystem) средствами Revit API?? Интересует сам факт соединения между двумя элементами посредство труб и соединителей (либо соединены либо нет). Или же нужно проверять коннекторы элементов и строить граф и его анализировать, если система сложная с множеством ответвлений? Просто нужно сделать проверку соединен ли список элементов между собой в системе, но при этом информация об изменении соединений должна обновляться при каждом изменении документа (событие DocumentChanged), и я опасаюсь, что обновление и проверка графа, сильно скажется на производительности и Revit будет тормозить.
-
Я бы попробовал начать с проверки свойства IsWellConnected:
Indicates if the system is well connected or not.
Если вернулось true, значит соединены. Альтернативно проверить, что GetPhysicalNetworksNumber() вернёт 1.
Если false - то нужно проверять сеть. Я бы начал с проверки графа, т.к. легко пишется как самостоятельно, так и ищется в гугле и посмотрел бы на реальную производительность. С большой вероятностью будет вполне приемлемая.
Если всё-таки нет, то можно попробовать работать с секциями (MEPSection). У MEPSystem есть свойство SectionsCount и GetSectionByIndex -> получаем список секций. Дальше у каждой секции можно запросить элементы, по ним построить граф секций. При правильно выбранных структурах данных теоретически можно получить прирост производительности, но это всё нужно проверять на практике