Найти все примыкающие стены

Автор Тема: Найти все примыкающие стены  (Прочитано 7051 раз)

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

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

  • ADN OPEN
  • ***
  • Сообщений: 223
  • Карма: 0
Давно не писал под Revit API и созрел такой вопрос.
Как без room или space быстро найти все примыкающие стены к стене?
Как я понял JoinGeometryUtils и GetJoinedElements не работает с семействами?
revit 2021
VS2019, VBA 7.1, VB.NET, C#, ACAD2019, Revit 2020

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

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Найти все примыкающие стены
« Ответ #1 : 18-08-2023, 10:19:40 »
Путаницу чую здесь я. При чем тут семейства?

Вообще соседние стены можно получить из Location-а стены, с помощью LocationCurve.get_ElementsAtJoin. Нужно только учитывать Т-образные соединения, например, поиском стен в чуть-чуть расширенном bounding box-е исходной стены.


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

  • ADN OPEN
  • ***
  • Сообщений: 223
  • Карма: 0
Re: Найти все примыкающие стены
« Ответ #2 : 24-08-2023, 09:31:30 »
о. спасибо за наводку...
VS2019, VBA 7.1, VB.NET, C#, ACAD2019, Revit 2020

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

  • ADN OPEN
  • ***
  • Сообщений: 223
  • Карма: 0
Re: Найти все примыкающие стены
« Ответ #3 : 30-08-2023, 20:35:16 »
да. на концах стены легко искать стены, а вот в T-образном соединении что-то не пойму, как...
VS2019, VBA 7.1, VB.NET, C#, ACAD2019, Revit 2020

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

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Найти все примыкающие стены
« Ответ #4 : 31-08-2023, 10:47:05 »
Собираем LogicalAndFilter из фильтра по классу и по bounding box-у (который берем из текущей стены и чуток увеличиваем), ищем по фильтру стены (fast enough :-)), из найденных стен исключаем ту, по которой искали изначально и те, что уже нашли ранее,  смотрим elements at join из location-а. Если есть стена, по которой искали, значит, нашли Т-образное соединение.

Наверное, всю эту схему еще следует чуток расширить, проверять, где находятся соседние стены, то есть, если у тебя угол, с одной стороны которого сплошная стена, а с другой несколько стен по уровням..