Umieszczanie słupa oświetleniowego
Last updated
Last updated
Jednym z wielu doskonałych przykładów zastosowań dodatku Dynamo jest dynamiczne umieszczanie odrębnych obiektów wzdłuż modelu korytarza. Często obiekty muszą być umieszczane w miejscach niezależnych od wstawionych zespołów wzdłuż korytarza, co jest bardzo żmudnym zadaniem w przypadku wykonywania ręcznego. Gdy zmienia się geometria pozioma lub pionowa korytarza, wprowadzana jest znaczna ilość poprawek.
🎯 Umieszczenie odniesień do bloków słupów oświetleniowych wzdłuż korytarza w wartościach pikiet określonych w pliku programu Excel.
Odczytywanie danych z pliku zewnętrznego (w tym przypadku programu Excel)
Organizowanie danych w słownikach
Sterowanie położeniem/skalą/obrotem za pomocą układów współrzędnych
Umieszczanie odniesień do bloków
Wizualizowanie geometrii w dodatku Dynamo
Ten wykres będzie działać w programie Civil 3D 2020 i w nowszych wersjach.
Najpierw pobierz pliki przykładów poniżej, a następnie otwórz plik DWG i wykres dodatku Dynamo.
Najlepiej jest, jeśli plik programu Excel jest zapisany w tym samym katalogu co wykres dodatku Dynamo.
Poniżej przedstawiono przegląd logiki na tym wykresie.
Odczytywanie pliku programu Excel i importowanie danych do dodatku Dynamo
Pobieranie linii charakterystycznych z określonej linii bazowej korytarza
Generowanie układów współrzędnych wzdłuż linii charakterystycznej korytarza w żądanych pikietach
Umieszczanie odniesień do bloków w obszarze modelu za pomocą układów współrzędnych
Zacznijmy!
W tym przykładowym wykresie użyjemy pliku programu Excel do przechowywania danych, za pomocą których dodatek Dynamo umieści odniesienia do bloków słupów oświetleniowych. Tabela wygląda tak.
Odczytanie danych z pliku zewnętrznego (np. pliku programu Excel) za pomocą dodatku Dynamo jest doskonałą strategią, zwłaszcza gdy dane muszą być współdzielone z innymi członkami zespołu.
Dane programu Excel są importowane do dodatku Dynamo w ten sposób.
Mamy już dane. Teraz musimy je podzielić według kolumn (Corridor, Baseline, PointCode itp.), aby móc wykorzystać je w pozostałej części wykresu. Typowym sposobem wykonania tej operacji jest użycie węzła List.GetItemAtIndex i określenie numeru indeksu każdej odpowiedniej kolumny. Na przykład kolumna Corridor ma indeks 0, kolumna Baseline ma indeks 1 itd.
Wygląda to dobrze, prawda? Jednak z tym podejściem wiąże się potencjalny problem. Co jeśli w przyszłości kolejność kolumn w pliku Excel ulegnie zmianie? Lub jeśli między dwiema kolumnami zostanie dodana nowa kolumna? Wykres nie będzie wtedy działał poprawnie i będzie wymagał aktualizacji. Wykres można zabezpieczyć przed przyszłymi zmianami, umieszczając dane w słowniku, Dictionary, z nagłówkami kolumn programu Excel jako kluczami, keys, i pozostałymi danymi jako wartościami, values.
Jeśli pierwszy raz masz do czynienia ze słownikami, skorzystaj z sekcji Słowniki w dodatku Dynamo.
Dzięki temu wykres jest bardziej niezawodny, ponieważ umożliwia elastyczne zmienianie kolejności kolumn w programie Excel. Dopóki nagłówki kolumn pozostają takie same, dane można po prostu pobrać ze słownika za pomocą jego klucza, key, czyli nagłówka kolumny, co jest naszym kolejnym krokiem.
Dane programu Excel są już zaimportowane i gotowe do użycia. Zacznijmy używać ich do pobierania informacji z programu Civil 3D na temat modeli korytarzy.
Wybierz model korytarza na podstawie jego nazwy.
Pobierz określoną linię bazową (Baseline) w korytarzu.
Pobierz linię charakterystyczną w linii bazowej na podstawie jej kodu punktu.
Teraz wygenerujemy układy współrzędnych wzdłuż linii charakterystycznych korytarza przy wartościach pikiet określonych w pliku programu Excel. Te układy współrzędnych posłużą do zdefiniowania położenia, obrotu i skali odniesień do bloków słupów oświetleniowych.
Jeśli pierwszy raz masz do czynienia z układami współrzędnych, skorzystaj z sekcji Wektor, płaszczyzna i układ współrzędnych.
Zwróć uwagę, że zastosowano tu węzeł Code Block do obracania układów współrzędnych w zależności od tego, po której stronie linii bazowej się one znajdują. Można to też zrealizować za pomocą sekwencji kilku węzłów, ale jest to dobry przykład sytuacji, w której łatwiej jest po prostu napisać kod.
Jeśli pierwszy raz masz do czynienia z węzłami Code Block, skorzystaj z sekcji Bloki kodu i język DesignScript.
Już prawie gotowe! Mamy wszystkie informacje, których potrzebujemy, aby móc umieścić odniesienia do bloków. Pierwszą czynnością jest pobranie definicji bloków, których użyjemy, za pomocą kolumny BlockName w pliku programu Excel.
Na tym etapie ostatnim krokiem jest utworzenie odniesień do bloków.
Po uruchomieniu wykresu powinny być widoczne nowe odniesienia do bloków w obszarze modelu wzdłuż korytarza. Oto najlepsza część — jeśli ustawiono automatyczny tryb wykonywania wykresu, to po edytowaniu pliku programu Excel odniesienia do bloków zostaną zaktualizowane automatycznie.
Więcej informacji na temat trybów wykonywania wykresów można znaleźć w sekcji Interfejs użytkownika.
Oto przykład uruchomienia wykresu za pomocą Odtwarzacza Dynamo.
Jeśli nie znasz jeszcze Odtwarzacza Dynamo Player, skorzystaj z sekcji Odtwarzacz Dynamo (Dynamo Player).
🎉 Misja wykonana!
Pomocne może być zwizualizowanie geometrii korytarza w dodatku Dynamo w celu zapewnienia kontekstu. Ten konkretny model zawiera już wyodrębnione bryły korytarza w obszarze modelu, więc przenieśmy je do dodatku Dynamo.
Jest jednak coś jeszcze, co musimy rozważyć. Bryły są stosunkowo „ciężkimi” typami geometrii, co oznacza, że ta operacja spowolni działanie wykresu. Przydałby się prosty sposób wyboru, czy chcemy wyświetlać bryły, czy nie. Oczywistym rozwiązaniem jest odłączenie węzła Corridor.GetSolids, ale spowoduje to wyświetlenie ostrzeżeń dla wszystkich węzłów znajdujących się za nim, co nie jest eleganckie. Jest to sytuacja, w której naprawdę przydaje się węzeł ScopeIf.
Zwróć uwagę, że węzeł Object.Geometry ma szary pasek na dole. Oznacza to, że podgląd węzła jest wyłączony (dostępny po kliknięciu węzła prawym przyciskiem myszy), co pozwala na uniknięcie „konkurowania” z inną geometrią o priorytet wyświetlania w podglądzie tła w węźle GeometryColor.ByGeometryColor.
Węzeł ScopeIf zasadniczo umożliwia selektywne uruchamianie całej gałęzi węzłów. Jeśli wartość wejściowa test ma wartość fałsz (false), nie zostanie uruchomiony żaden węzeł połączony z węzłem ScopeIf.
Oto wynik w podglądzie tła dodatku Dynamo.
Oto kilka pomysłów na rozszerzenie możliwości tego wykresu.
Dodaj do pliku programu Excel kolumnę obrotu, rotation, i za jej pomocą steruj obrotem układów współrzędnych.
Dodaj do pliku programu Excel odsunięcia poziome lub pionowe, tak aby słupy oświetleniowe mogły w razie potrzeby odbiegać od linii charakterystycznej korytarza.
Zamiast używać pliku programu Excel z wartościami pikiet, wygeneruj wartości pikiet bezpośrednio w dodatku Dynamo, używając pikiety początkowej i typowego odstępu.