Właśnie utworzyliśmy węzeł niestandardowy i zastosowaliśmy go do określonego procesu na wykresie Dynamo. Ten węzeł podoba nam się tak bardzo, że chcemy pozostawić go w naszej bibliotece dodatku Dynamo, aby odwoływać się do niego na innych wykresach. Aby to zrobić, opublikujemy ten węzeł lokalnie. Jest to proces podobny do publikowania pakietu, który bardziej szczegółowo omówimy w następnym rozdziale.
Węzeł opublikowany lokalnie będzie dostępny w bibliotece dodatku Dynamo po otwarciu nowej sesji. Jeśli nie opublikujemy węzła, w folderze wykresu Dynamo, który odwołuje się do węzła niestandardowego, musi również znajdować się ten węzeł niestandardowy (lub węzeł niestandardowy musi zostać zaimportowany do dodatku Dynamo za pomocą polecenia Plik > Importuj bibliotekę).
Pakiety i węzły niestandardowe można publikować w środowisku Dynamo Sandbox w wersji 2.17 lub nowszej, o ile nie mają one zależności od nadrzędnego interfejsu API. W starszych wersjach publikowanie pakietów i węzłów niestandardowych jest włączone tylko w dodatku Dynamo dla programu Revit i dodatku Dynamo dla programu Civil 3D.
Pobierz plik przykładowy, klikając poniższe łącze.
Pełna lista plików przykładowych znajduje się w załączniku.
Kontynuujmy pracę z węzłem niestandardowym, który utworzyliśmy w poprzedniej sekcji. Po otwarciu węzła niestandardowego PointsToSurface widać wykres w Edytorze węzłów niestandardowych dodatku Dynamo. Węzeł niestandardowy można również otworzyć, klikając go dwukrotnie w Edytorze wykresu Dynamo.
Aby opublikować węzeł niestandardowy lokalnie, wystarczy kliknąć prawym przyciskiem myszy obszar rysunku i wybrać opcję „Opublikuj ten węzeł niestandardowy...”
Podaj odpowiednie informacje (podobnie, jak to zrobiono na ilustracji powyżej) i wybierz opcję „Opublikuj lokalnie”. Należy zwrócić uwagę, że pole Grupa definiuje element główny dostępny w menu dodatku Dynamo.
Wybierz folder, w którym będą przechowywane wszystkie węzły niestandardowe publikowane lokalnie. Ten folder będzie sprawdzany przy każdym wczytywaniu dodatku Dynamo, dlatego upewnij się, że jest to folder trwały. Przejdź do tego folderu i wybierz opcję „Wybierz folder”. Węzeł Dynamo jest teraz opublikowany lokalnie i będzie dostępny w bibliotece dodatku Dynamo po każdym wczytaniu programu.
Aby sprawdzić położenie folderu węzłów niestandardowych, przejdź do obszaru Dynamo > Preferencje > Ustawienia pakietów > Ścieżki do węzłów i pakietów
W tym oknie jest widoczna lista ścieżek.
Ścieżka Documents\DynamoCustomNodes... odnosi się do położenia węzłów niestandardowych, które zostały opublikowane lokalnie.
Ścieżka AppData\Roaming\Dynamo... odnosi się do domyślnego położenia pakietów dodatku Dynamo instalowanych online.
Można przenieść ścieżkę folderu lokalnego w dół listy, klikając strzałkę skierowaną w dół po lewej stronie nazwy ścieżki. Folder na początku listy stanowi domyślną ścieżkę do instalacji pakietów. Dlatego jeśli domyślna ścieżka instalacji pakietów Dynamo zostanie zachowana jako folder domyślny, pakiety online będą oddzielone od węzłów opublikowanych lokalnie.
Zmieniliśmy kolejność nazw ścieżek, aby lokalizacją instalacji pakietu była domyślna ścieżka dodatku Dynamo.
Po przejściu do tego folderu lokalnego oryginalny węzeł niestandardowy znajdziemy w folderze „.dyf” — ta nazwa stanowi rozszerzenie pliku węzła niestandardowego dodatku Dynamo (Dynamo Custom Node). Możemy edytować plik w tym folderze, a węzeł zostanie zaktualizowany w interfejsie użytkownika. Możemy także dodać więcej węzłów do głównego folderu DynamoCustomNode, a dodatek Dynamo doda je do biblioteki po ponownym uruchomieniu.
Dodatek Dynamo będzie teraz za każdym razem wczytywany z elementem „PointsToSurface” w grupie „DynamoPrimer” w bibliotece dodatku Dynamo.
Węzły niestandardowe są tworzone przez zagnieżdżanie innych węzłów i węzłów niestandardowych wewnątrz „węzła niestandardowego Dynamo”, który można traktować koncepcyjnie jako kontener. Gdy ten węzeł kontenera zostaje wykonany na wykresie, wykonywana jest cała jego zawartość, co umożliwia ponowne używanie i udostępnianie przydatnego połączenia węzłów.
Jeśli na wykresie znajduje się wiele kopii węzła niestandardowego, można zaktualizować je wszystkie, edytując podstawowy węzeł niestandardowy. Umożliwia to płynną aktualizację wykresu przez dostosowanie rozwiązania do zmian, które mogą wystąpić w procesie roboczym lub w projekcie.
Prawdopodobnie największą zaletą węzłów niestandardowych jest możliwość ich udostępniania. Jeśli „użytkownik zaawansowany” utworzy złożony wykres Dynamo i przekaże go projektantowi, który jest nowym użytkownikiem dodatku Dynamo, może on uprościć ten wykres do elementów najistotniejszych dla interakcji projektowych. Węzeł niestandardowy można otworzyć w celu edycji wewnętrznego wykresu, zachowując przy tym prostotę „kontenera”. Dzięki tej procedurze węzły niestandardowe umożliwiają użytkownikom dodatku Dynamo projektowanie wykresów, które będą przejrzyste i intuicyjne.
W dodatku Dynamo można tworzyć węzły niestandardowe na wiele sposobów. W przykładach w tym rozdziale utworzymy węzły niestandardowe bezpośrednio za pomocą interfejsu użytkownika dodatku Dynamo. Programista interesujący się formatowaniem C# lub Zero-Touch może skorzystać z tej strony na stronie wiki dodatku Dynamo, aby zapoznać się z bardziej szczegółowym omówieniem.
Przejdźmy do środowiska węzłów niestandardowych i utwórzmy prosty węzeł, aby obliczyć wartość procentową. Środowisko węzłów niestandardowych różni się od środowiska wykresu Dynamo, ale obsługuje się je zasadniczo tak samo. Utwórzmy więc pierwszy węzeł niestandardowy.
Aby utworzyć węzeł niestandardowy od podstaw, uruchom dodatek Dynamo i wybierz opcję Węzeł niestandardowy lub naciśnij kombinację klawiszy Ctrl+Shift+N w obszarze rysunku.
W oknie dialogowym Właściwości węzła niestandardowego przypisz nazwę, opis i kategorię.
Nazwa: Percentage
Opis: oblicza procent (ang. percentage) jednej wartości względem innej.
Kategoria: Math.Functions
Spowoduje to otwarcie obszaru rysunku z żółtym tłem, co oznacza, że użytkownik pracuje w węźle niestandardowym. W tym obszarze rysunku użytkownik ma dostęp do wszystkich podstawowych węzłów Dynamo oraz do węzłów Input i Output, które opisują dane wpływające do węzła niestandardowego i wypływające z niego. Można je znaleźć w obszarze Input (Dane wejściowe)>Basic (Podstawowe).
Węzły Input: węzły wejściowe tworzą porty wejściowe w węźle niestandardowym. Składnia węzła wejściowego to: nazwa_węzła_wejściowego : datatype = wartość_domyślna (opcjonalnie).
Węzły Output: podobnie jak w przypadku węzłów wejściowych te węzły tworzą porty wyjściowe w węźle niestandardowym. Rozważ dodanie komentarza niestandardowego (Custom Comment) do portów wejściowych i wyjściowych, aby poinformować o typach danych wejściowych i wyjściowych. Więcej szczegółów znajduje się w sekcji Tworzenie węzłów niestandardowych.
Ten węzeł niestandardowy można zapisać jako plik .dyf (w przeciwieństwie do standardowego pliku .dyn), który zostanie automatycznie dodany do bieżącej sesji i przyszłych sesji. Ten węzeł niestandardowy można znaleźć w bibliotece w sekcji dodatków.
Teraz po utworzeniu pierwszego węzła niestandardowego w kolejnych sekcjach dokładniej omówimy funkcje węzłów niestandardowych i to, jak publikuje się ogólne procesy robocze. W kolejnej sekcji przyjrzymy się opracowywaniu węzła niestandardowego, który przenosi geometrię z jednej powierzchni do drugiej.
Dodatek Dynamo oferuje kilka różnych metod tworzenia węzłów niestandardowych. Węzły niestandardowe można tworzyć od podstaw, z istniejącego wykresu lub bezpośrednio w języku C#. W tej części omówimy tworzenie węzła niestandardowego w interfejsie użytkownika dodatku Dynamo z istniejącego wykresu. Ta metoda jest idealna do czyszczenia obszaru roboczego, jak również do pakowania sekwencji węzłów do ponownego użycia w innym miejscu.
Na poniższej ilustracji odwzorowujemy punkt z jednej powierzchni na drugą za pomocą współrzędnych UV. Użyjemy tej koncepcji do utworzenia panelowanej powierzchni, która odwołuje się do krzywych na płaszczyźnie XY. Utworzymy tu panele czworokątne dla naszego panelowania, ale stosując tę samą logikę, możemy utworzyć szeroką gamę paneli z odwzorowaniem UV. Jest to świetna okazja do tworzenia węzłów niestandardowych, ponieważ w ten sposób łatwiej będzie powtórzyć podobny proces na tym wykresie lub w innych procesach roboczych Dynamo.
Pobierz plik przykładowy, klikając poniższe łącze.
Pełna lista plików przykładowych znajduje się w załączniku.
Zacznijmy od utworzenia wykresu, który zagnieździmy w węźle niestandardowym. W tym przykładzie utworzymy wykres, który będzie odwzorowywać wieloboki z powierzchni bazowej na powierzchnię docelową, za pomocą współrzędnych UV. Ten proces odwzorowywania UV jest często używany, przez co jest to dobra opcja dla węzła niestandardowego. Aby uzyskać więcej informacji na temat powierzchni i przestrzeni UV, zobacz stronę Powierzchnia. Pełny wykres: UVmapping_Custom-Node.dyn z pliku .zip pobranego powyżej.
Code Block: użyj tego wiersza, aby utworzyć zakres 10 liczb od -45 do 45
45..45..#10;
Point.ByCoordinates: połącz wyjście węzła Code Block z wejściami „x” i „y” oraz ustaw skratowanie na odniesienie krzyżowe. Powinna teraz istnieć siatka punktów.
Plane.ByOriginNormal: połącz wyjście „Point” z wejściem „origin”, aby utworzyć płaszczyznę w każdym z punktów. Zostanie użyty domyślny wektor normalny (0,0,1).
Rectangle.ByWidthLength: połącz płaszczyzny z poprzedniego kroku z wejściem „plane” i użyj węzła Code Block z wartością 10 w celu określenia szerokości i długości.
Powinna teraz istnieć siatka prostokątów. Odwzorujmy te prostokąty na powierzchnię docelową za pomocą współrzędnych UV.
Polygon.Points: połącz wyjście Rectangle.ByWidthLength z poprzedniego kroku z wejściem „polygon”, aby wyodrębnić punkty narożne każdego prostokąta. Są to punkty, które odwzorujemy na powierzchnię docelową.
Rectangle.ByWidthLength: użyj węzła Code Block z wartością 100, aby określić szerokość i długość prostokąta. Będzie to obwiednia powierzchni bazowej.
Surface.ByPatch: połącz węzeł Rectangle.ByWidthLength z poprzedniego kroku z wejściem „closedCurve”, aby utworzyć powierzchnię bazową.
Surface.UVParameterAtPoint: połącz wyjście „Point” węzła Polygon.Points i wyjście „Surface” węzła Surface.ByPatch, aby zwrócić parametr UV w każdym punkcie.
Teraz gdy mamy powierzchnię bazową i zbiór współrzędnych UV, możemy zaimportować powierzchnię docelową i odwzorować punkty między powierzchniami.
File Path: wybierz ścieżkę pliku dla powierzchni, którą chcesz zaimportować. Powinien to być plik typu .SAT. Kliknij przycisk „Przeglądaj” i przejdź do pliku UVmapping_srf.sat z pliku .zip pobranego powyżej.
Geometry.ImportFromSAT: połącz ścieżkę pliku, aby zaimportować powierzchnię. W podglądzie geometrii powinna być widoczna zaimportowana powierzchnia.
UV: połącz wyjście parametru UV z węzłami UV.U i UV.V.
Surface.PointAtParameter: połącz zaimportowaną powierzchnię oraz współrzędne u i v. Na powierzchni docelowej powinna być teraz widoczna siatka punktów 3D.
Ostatnią czynnością jest użycie punktów 3D do utworzenia prostokątnych płatów powierzchni.
PolyCurve.ByPoints: połącz punkty na powierzchni, aby skonstruować krzywą PolyCurve przez punkty.
Boolean: dodaj węzeł Boolean do obszaru roboczego i połącz go z wejściem „connectLastToFirst” oraz przełącz na wartość True, aby zamknąć krzywe PolyCurve. Powinny być teraz widoczne prostokąty odwzorowane na powierzchnię.
Surface.ByPatch: połącz krzywe PolyCurve z wejściem „closedCurve”, aby skonstruować płaty powierzchni.
Teraz wybierzmy węzły do zagnieżdżenia w węźle niestandardowym, uwzględniając to, jakie powinny być wejścia i wyjścia węzła. Chcemy, aby węzeł niestandardowy był możliwie najbardziej elastyczny, by umożliwiał odwzorowanie dowolnych wieloboków, a nie tylko prostokątów.
Wybierz następujące węzły (począwszy od węzła Polygon.Points), kliknij prawym przyciskiem myszy obszar roboczy i wybierz opcję „Utwórz węzeł niestandardowy”.
W oknie dialogowym Właściwości węzła niestandardowego przypisz nazwę, opis i kategorię do węzła niestandardowego.
Nazwa: MapPolygonsToSurface
Opis: odwzoruj wielokąty z powierzchni bazowej na powierzchnię docelową
Kategoria dodatków: Geometry.Curve
Węzeł niestandardowy znacznie wyczyścił obszar roboczy. Warto zauważyć, że wejścia i wyjścia zostały nazwane na podstawie oryginalnych węzłów. Zmodyfikujmy węzeł niestandardowy, zmieniając te nazwy na bardziej opisowe.
Kliknij dwukrotnie węzeł niestandardowy, aby go edytować. Spowoduje to otwarcie obszaru roboczego z żółtym tłem reprezentującym wnętrze węzła.
Węzły Input: zmień nazwy wejść na baseSurface i targetSurface.
Węzły Output: dodaj kolejne wyjście dla odwzorowanych wieloboków.
Zapisz węzeł niestandardowy i wróć do głównego obszaru roboczego. Uwaga: węzeł MapPolygonsToSurface odzwierciedla wprowadzone zmiany.
Można również zwiększyć niezawodność węzła niestandardowego przez dodanie treści w sekcji Komentarze niestandardowe. Komentarze mogą pomóc w ustaleniu typów wejść i wyjść lub objaśnieniu funkcjonalności węzła. Komentarze pojawią się, gdy użytkownik ustawi kursor na wejściu lub wyjściu węzła niestandardowego.
Kliknij dwukrotnie węzeł niestandardowy, aby go edytować. Spowoduje to ponowne otwarcie żółtego obszaru roboczego.
Rozpocznij edycję wejściowego węzła Code Block. Aby rozpocząć komentarz, wpisz „//”, a następnie wpisz tekst komentarza. Wpisz wszelkie informacje, które mogą pomóc w objaśnieniu węzła — w tym miejscu opiszemy węzeł targetSurface.
Ustawmy również domyślną wartość dla węzła inputSurface przez ustawienie typu wejścia równego wartości. W tym miejscu ustawimy wartość domyślną na oryginalny zestaw Surface.ByPatch.
Komentarze można również stosować do wyjścia.
Edytuj tekst w wyjściowym węźle węzła Code Block. Wpisz „//”, a następnie wpisz tekst komentarza. W tym miejscu objaśnimy wyjścia Polygons i surfacePatches poprzez dodanie bardziej szczegółowego opisu.
Ustaw kursor na wejściach węzła niestandardowego, aby wyświetlić komentarze.
Po ustawieniu wartości domyślnej na inputSurface można również uruchomić definicję bez wejścia powierzchni.
Dodatek Dynamo oferuje wiele węzłów podstawowych, które umożliwiają wykonywanie szerokiej gamy zadań programowania wizualnego. Czasami szybszym, bardziej eleganckim lub łatwiejszym do udostępnienia rozwiązaniem jest utworzenie własnych węzłów. Można ich ponownie używać w różnych projektach, dzięki czemu wykresy stają się czytelniejsze. Można je też przekazywać do Menedżera pakietów i udostępniać globalnej społeczności dodatku Dynamo.