Найти тему
hh-soft.ru

RevitAPI.Соединение геометрии элементов.

Частая проблема при создании больших моделей –это быстрое соединение геометрии.

Например, соединить все стены отделки с несущими стенами для вставки окон или отверстий. В пределах 30-этажного здания это простая операция может занять много времени.

Решить эту задачу можно с помощью Dynamo или Csharp. Рассмотрим пример кода на Csharp.
Первое, нам нужно отсеять стены с уже соединенной геометрией. Делаем это методом:
AreElementsJoined(Document document, Element firstElement, Element secondElement)

Второе, это непосредственно соединить геометрию.Делаем это методом:
JoinGeometry(Document document, Element firstElement, Element secondElement)

Рассмотрим пример:
Соединим стену отделки и несущие стены:

А теперь разберем сам код:
Получаем и сортируем стены. Эти методы занимают большой объем кода. В данном примере мы их не рассматриваем.

IList allWals = GetWalls(doc);

List sortedWalls = SortedWalls(allWals);

Далее запускаем транзакции. Без нее код не сработает.

using (Transaction tr = new Transaction(doc, "Join walls" ))

Получаем границы стен:

BoundingBoxXYZ = w.get_BoundingBox( null );

И проверяем их на пересечение:

if (fBB != null ) if (bbIntersect(wBB , fBB))

И соединяем геометрию:

#revit api , joinGeometry , соединение

#соединение геометрии , joinwall revit