Cechą dobrego projektu jest jego skoordynowanie pomiędzy poszczególnymi branżami. Idea ta odgrywa znaczącą rolę w czasie pracy nad tematami w środowisku BIM. Możliwość współbieżnego projektowania, pozwala na bieżącą kontrolę poziomu spójności modeli pod względem kolizji czy też wzajemnych zależności między branżami. Elektrycy potrzebne informacje widzą w postaci parametrów w modelu, architekci wiedzą, gdzie w suficie będą nawiewniki, a konstruktorzy gdzie wykonać podkonstrukcje pod centrale wentylacyjne. Każdy dokłada fragment swojej pracy nad kompletnym, cyfrowym modelem budynku.

aerial-photography-of-cars-on-the-road-1123972

Przygotowanie otworów w ścianach dla instalacji to zadanie na styku trzech branż: instalatorów, architektów oraz konstruktorów. Klasycznym podejściem jest przygotowanie planu otworów, a następnie przekazanie ich do pozostałych branż. W przypadku dużych obiektów, punktów przejść przewodów instalacyjnych przez ściany może być sporo, dlatego też warto zrobić następny krok i znaleźć lepszy, bardziej efektywny sposób ich lokalizacji.

Na szczęście dysponujemy środowiskiem Dynamo, gdzie możemy przygotować skrypt, który wykona większość pracy za nas. Jego zadaniem będzie wycięcie otworów w ścianach w miejscach, gdzie przechodzą kanały wentylacyjne. Proces będzie realizowany w modelu architektonicznym, do którego został podłączony model instalacyjny.

Dynamo w akcji

Celem skryptu będzie przygotowanie w modelu architektury otworów w miejscach przejść kanałów wentylacyjnych przez ściany. Pierwszym zadaniem jest wybranie z modelu wszystkich elementów Ściana oraz wszystkich elementów Kanał wentylacyjny z podłączonego modelu wentylacji.

1

Kolejnym krokiem jest wychwycenie punktów, gdzie następuje skrzyżowanie ścian z kanałami.

2

Następnie wywoływane są grupy węzłów odpowiedzialnych za określenie punktów geometrii kolizji kanałów ze ścianą – względem kanału oraz względem ściany.

3

4

Po ustaleniu punktów przecięcia ścian z kanałami, dane przekazywane są do grup węzłów, gdzie pierwsza sprawdza kierunek w jakim przecinają się ściany z kanałem. Ustalenie tej zmiennej jest niezbędne, żeby wycinany otwór powstał równolegle do ściany. 🙂 Druga grupa określa wielkość otworu względem wielkości kanału.

5

6

Finalną częścią skryptu jest kod Python’a który wywołuje polecenie tworzenia otworu z Revit API.

import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
import Autodesk

clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager


doc = DocumentManager.Instance.CurrentDBDocument
openings = []

walls = IN[0]
wallsCount = len(walls)
points = IN[1]
direction = IN[2]
width = IN[3]
height = IN[4]


for idx in range(wallsCount):
    if direction[idx] == "x":
        ULX=(points[idx]).X  - width[idx]/2
        ULY=(points[idx]).Y
        ULZ=(points[idx]).Z + height[idx]/2
            
        UL = XYZ(ULX/304.8,ULY/304.8,ULZ/304.8)
        
        DRX=(points[idx]).X + width[idx]/2
        DRY=(points[idx]).Y
        DRZ=(points[idx]).Z - height[idx]/2
        
        DR = XYZ(DRX/304.8,DRY/304.8,DRZ/304.8)
    else:
        ULX=(points[idx]).X
        ULY=(points[idx]).Y - width[idx]/2
        ULZ=(points[idx]).Z + height[idx]/2
            
        UL = XYZ(ULX/304.8,ULY/304.8,ULZ/304.8)
        
        DRX=(points[idx]).X
        DRY=(points[idx]).Y + width[idx]/2
        DRZ=(points[idx]).Z - height[idx]/2
        
        DR = XYZ(DRX/304.8,DRY/304.8,DRZ/304.8)
    
    TransactionManager.Instance.EnsureInTransaction(doc)
    opening = doc.Create.NewOpening(UnwrapElement(walls[idx]),UL,DR)
    TransactionManager.Instance.TransactionTaskDone()
    openings.append(opening)
    continue
    
OUT = openings

Efekt pracy skryptu przedstawia poniższa wizualizacja.

7

Podsumowanie

Rynek pracy inżynierów zdecydowanie zmienia się w kierunku większej integracji z nowymi technologiami. Możliwości wykorzystania Dynamo w codziennej pracy są bardzo szerokie, wiele rzeczy można zautomatyzować i uprościć. Dokładając do tego skrypty Pythona i Revit API uzyskujemy potężne narzędzie inżynierskie, wykraczające daleko poza modelowanie 3D. Połączenie praktycznej wiedzy technicznej oraz umiejętność wykorzystania narzędzi jakie oferuje branża IT stanowią przyszłość pracy na rynku budownictwa w Polsce.

Credits:

Zdjęcie autorstwa Deva Darshan z Pexels