Autodesk Revit – Automatyczne odnalezienie na rzucie najdłuższej drogi ewakuacji
W dzisiejszym blogu chciałabym nawiązać do narzędzia Analiza trasy. Pozwala ono wskazać dwa punkty na rzucie, między którymi program wyznacza najkrótszą trasę przejścia, przy uwzględnieniu przeszkód na drodze.
Jeśli ktoś z Was obejrzał mój webinar „Autodesk Revit – Analiza trasy i People Flow Toolkit”, wyjaśniający działanie narzędzia Analiza trasy (Route Analysis) oraz People Flow Toolkit, na pewno zwrócił uwagę na metodę ręcznego szukania najdłuższej ścieżki ewakuacji do punktu wyjścia. Na filmie dla każdego rzutu dodaję kilka ścieżek, które intuicyjnie wydają mi się najdłuższe, a następnie w zestawieniu odnajduję najdłuższą trasę dla widoku.
Takie „ręczne” szukanie najdłuższej trasy dla budynku jest działaniem „po omacku”.
Pytanie brzmi – jak automatycznie znaleźć najdłuższądrogę ewakuacji spośród wszystkich takich tras do punktu wyjścia? Innymi słowy, jak sprawić aby pierwszy punkt trasy został automatycznie wyznaczony przez program?
Otóż w niezwykle prosty sposób można sprawić, aby to Revit przeanalizował bieżący rzut i sam znalazł najdłuższą trasę spośród wszystkich najkrótszych ścieżek. Należy wykorzystać do tego Dynamo. Jest to możliwe dzięki temu, że jedną z nowości uaktualnienia Autodesk Revit 2021.1 są węzły Dynamo dla RouteAnalysis > PathOfTravel.
W dalszej części wyjaśnię krok po kroku, jak utworzyć prosty skrypt, którego zbudowanie nie przerosło nawet moich absolutnie podstawowych umiejętności. Sądzę, że z jego utworzeniem poradzi sobie nawet osoba, dla której będzie to pierwszy skrypt Dynamo w życiu. Jeśli ktoś nie zna jeszcze narzędzia Analiza trasy, zachęcam, przed przejściem do dalszej części, do obejrzenia zapisu wspomnianego wyżej webinaru.
Przygotowanie
Na początek otwieram w programie Autodesk Revit przykładowy projekt i uaktywniam widok rzutu tego projektu, który posłuży do testów działania skryptu. W rzucie są już rozmieszczone pomieszczenia. W okienku Ustawienia dla Analizy trasy upewniam się, że jedyną kategorią, wykluczoną z listy przeszkód, są Drzwi.
Uruchamiam z menu Zarządzaj aplikację Dynamo. Klikam polecenie Nowy, aby utworzyć nowy skrypt.
Skrypt, wyznaczający ścieżkę do wskazanego pomieszczenia wyjścia
Po lewej stronie okna Dynamo, na liście węzłów, rozwijam strukturę drzewka: Revit > Analyze > RouteAnalysis > PathOfTravel. Klikam węzeł LongestOfShortestExitPath, który wykona za nas robotę poszukiwania najdłuższej trasy. Blok okienka węzła pojawia się w oknie zawartości skryptu, jak niżej.
Wyszukuję i dodaję jeszcze dwa węzły: Revit > Application > Document > Current (Document.Current), określający jako źródło informacji bieżący dokument w Revit oraz Revit > Application > Document > ActiveView (Document.ActiveView), określający jako źródło informacji aktywny widok tego dokumentu (projektu).
Musimy jeszcze jakoś zdefiniować punkt wyjścia. Załóżmy, że w tej wersji skryptu będziemy wskazywać pomieszczenie wyjścia.
Dodaję jeszcze dwa węzły: Revit > Elements > Room > Location (Room.Location) oraz Revit > Selection > Select Model Element (Select Model Element).
Zanim połączę wszystkie węzły, na dole okna Dynamo klikam opcję Automatycznie, zmieniając ją na Ręcznie. Pozwala to na uruchamianie skryptu wtedy, gdy wszystko jest gotowe, a nie cały czas na bieżąco.
Łączę węzły, klikając kolejno na pary przycisków wejścia/wyjścia. Między wskazanymi parami pojawiają się elastyczne nitki połączeń.
Pora na test skryptu. Ustawiam okno Dynamo i okno Revit z rzutem obok siebie. Klikam przycisk Wybierz dla Select Model Element. Ponieważ program oczekuje na wybór pomieszczenia, wskazuję pomieszczenie hallu wejściowego (łącznik między skrzydłem a dużą salą. Blok węzła nie jest już pomarańczowy, tylko szary i pokazuje ID wybranego elementu.
Na koniec, na dole okna Dynamo, klikam Uruchom. Program generuje ścieżkę od najdalej wysuniętego punktu w skrzydle po lewej, do punktu umieszczenia wskazanego dla skryptu pomieszczenia, jak niżej.
Skrypt, wyznaczający ścieżkę do wskazanego punktu wyjścia.
Gdyby chcieć zmienić nasz skrypt tak, aby program pozwalał wskazać punkt docelowy, a nie pomieszczenie, należałoby usunąć ze skryptu dwa węzły: Room.Location oraz Select Model Element i w ich miejsce dodać węzeł Revit > Selection > Select Point on Face (Select Point on Face). Zgodnie z nazwą, pozwala on na wskazanie punktu na powierzchni – musimy mieć zatem jakiś obiekt do wybrania punktu docelowego ścieżki ewakuacji – jak np. punkt na powierzchni stropu.
Aby skrypt Dynamo był czytelniejszy, można zgrupować węzły i nadać im bardziej przyjazne nazwy (Rename z menu prawego klawisza), co nie jest konieczne, ale praktyczne i przydatne, jeśli wrócimy za jakiś czas do skryptu w celu jego zmiany czy udoskonalenia. Oryginalną nazwę węzła zawsze zobaczymy w dymku nad danym węzłem.
Dla wykorzystania skryptów w Dynamo Player bloki wyboru muszą mieć włączoną opcję Obecne dane wejściowe (Is Input).
Do dyspozycji w Dynamo jest więcej węzłów dla narzędzia Analiza trasy – można przykładowo dodawać punkty na trasie. Dla obu powyższych wariantów skryptu stworzyłam ich rozszerzone wersje, pozwalające wskazać na trasie do wyznaczenia dwa dodatkowe punkty – np. gdy możliwych tras jest wiele, a my chcemy zmusić program do uwzględnienia dodatkowego wskazania, jak niżej.
Z pewnością jest znacznie więcej możliwości rozszerzania funkcjonalności skryptów.
Uwagi
Wszystkie cztery skrypty działają bez problemu z poziomu otwartego okna Dynamo, natomiast z poziomu Dynamo Player odnotowałam pewien problem ze skryptami, pozwalającymi wskazać punkt. Zrzucam to na karb mojej nieznajomości niuansów, związanych z poszczególnymi węzłami wyboru.
Ponadto, czasami automat wyznacza jednocześnie dwie równoważne trasy, nie jedną. W skryptach z dodatkowymi punktami pośrednimi automat dodaje punkty tylko do jednej z tych dróg. Wystarczy usunąć zbędą ścieżkę.
Należy też pamiętać, że ponowne uruchomienie skryptu w Dynamo w tej samej sesji usuwa poprzednią trasę i tworzy nową. Póki punkt wyjścia się nie zmienia, a my chcemy sprawdzamy inne opcje, to jest OK. Jeśli natomiast po wyznaczeniu jednej trasy chcemy wyznaczyć kolejną, do innego wyjścia z budynku, tę zaakceptowaną można przykładowo skopiować do schowka i wkleić w to samo miejsce, po czym przystąpić do szukania alternatywnej trasy dla drugiego wyjścia z budynku. Do utworzenia skryptów nie zostały użyte żadne węzły z dodatkowych pakietów Dynamo od innych dostawców, zatem wystarczy posiadać najnowszą wersję Autodesk Revit,
Nazwa skryptu | Opis skryptu |
01 Wygeneruj najdluzsza sciezke Path of travel do wskazanego pomieszczenia.dyn | Skrypt wyznacza najdłuższą trasę do wskazanego pomieszczenia. |
02 Wygeneruj najdłuższą ścieżkę Path of travel do wskazanego punktu.dyn | Skrypt wyznacza najdłuższą trasę do wskazanego punktu. |
03 Wygeneruj najdluzsza sciezke Path of travel do wskazanego pomieszczenia dwa punkty posrednie.dyn | Skrypt wyznacza najdłuższą trasę do wskazanego pomieszczenia, pozwala na dodanie dwóch dodatkowych punkty pośrednich. |
04 Wygeneruj najdluzsza sciezke Path of travel do wskazanego punktu dwa punkty posrednie.dyn | Skrypt wyznacza najdłuższą trasę do wskazanego punktu, pozwala na dodanie dwóch dodatkowych punkty pośrednich. |