Частая проблема при создании больших моделей –это быстрое соединение геометрии.
Например, соединить все стены отделки с несущими стенами для вставки окон или отверстий. В пределах 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