Źródło dodatku Dynamo jest hostowane w serwisie Github, w którym każdy może je klonować i współtworzyć. W tym rozdziale omówimy sposób klonowania repozytorium za pomocą narzędzia git, kompilowania plików źródłowych za pomocą programu Visual Studio, uruchamiania i debugowania kompilacji lokalnej oraz ściągania (pull) nowych zmian z serwisu Github.
Github to usługa hostingu oparta na narzędziu git, systemie kontroli wersji umożliwiającym śledzenie zmian i koordynowanie pracy wielu osób. Git to narzędzie, za pomocą którego można pobierać pliki źródłowe dodatku Dynamo i aktualizować je przy użyciu kilku poleceń. Stosowanie tej metody pozwala uniknąć niepotrzebnego i nieuporządkowanego pobierania i ręcznego zastępowania plików źródłowych przy każdej aktualizacji. System kontroli wersji git śledzi wszelkie różnice między lokalnym i zdalnym repozytorium kodu.
Źródło dodatku Dynamo jest hostowane w witrynie DynamoDS w serwisie GitHub w tym repozytorium: https://github.com/DynamoDS/Dynamo
Pliki źródłowe dodatku Dynamo.
Klonowanie lub pobieranie całego repozytorium
Wyświetlanie innych repozytoriów DynamoDS
Pliki źródłowe dodatku Dynamo
Pliki charakterystyczne narzędzia git
Zanim będzie można sklonować repozytorium, należy zainstalować narzędzie git. Postępuj zgodnie z tym krótkim przewodnikiem, aby zapoznać się z krokami instalacji oraz konfigurowania nazwy użytkownika i adresu e-mail w serwisie GitHub. W tym przykładzie użyjemy narzędzia git w wierszu polecenia. W tym podręczniku przyjęto, że jest używany system Windows, ale narzędzia git można też używać w systemie Mac lub Linux, aby sklonować źródło dodatku Dynamo.
Do sklonowania potrzebny jest adres URL repozytorium dodatku Dynamo. Można go znaleźć za pomocą przycisku „Clone or download” (Klonuj lub pobierz) na stronie repozytorium. Skopiuj adres URL, aby wkleić go do wiersza polecenia.
Wybierz przycisk „Clone or download” (Klonuj lub pobierz)
Skopiuj adres URL
Po zainstalowaniu narzędzia git można sklonować repozytorium dodatku Dynamo. Rozpocznij od otwarcia wiersza polecenia. Następnie za pomocą polecenia do zmiany katalogu, cd
, przejdź do folderu, do którego mają zostać sklonowane pliki źródłowe. W tym przypadku utworzyliśmy folder o nazwie Github
w folderze Documents
.
cd C:\Users\username\Documents\GitHub
Zastąp ciąg „username” swoją nazwą użytkownika
W następnym kroku uruchomimy polecenie git, aby sklonować repozytorium dodatku Dynamo do określonego położenia. Adres URL do użycia w tym poleceniu można uzyskać, klikając przycisk „Clone or download” (Klonuj lub pobierz) w serwisie GitHub. Uruchom to polecenie w terminalu poleceń. Uwaga: spowoduje to sklonowanie gałęzi głównej repozytorium dodatku Dynamo, która jest najczęściej aktualizowanym kodem dodatku Dynamo i zawiera najnowszą wersję kodu dodatku Dynamo. Ta gałąź zmienia się codziennie.
git clone https://github.com/DynamoDS/Dynamo.git
Jeśli operacja klonowania zakończyła się pomyślnie, oznacza to, że narzędzie git działa. W eksploratorze plików przejdź do katalogu, do którego sklonowano pliki źródłowe. Struktura katalogu powinna wyglądać tak samo jak gałąź główna repozytorium dodatku Dynamo w serwisie Github.
Pliki źródłowe dodatku Dynamo
Pliki git
Po sklonowaniu plików źródłowych na komputer lokalny można utworzyć plik wykonywalny dla dodatku Dynamo. W tym celu należy skonfigurować środowisko IDE programu Visual Studio oraz upewnić się, że zainstalowano programy .NET Framework i DirectX.
Pobierz i zainstaluj oprogramowanie Microsoft Visual Studio Community 2015 — bezpłatne i w pełni funkcjonalne środowisko IDE (czyli zintegrowane środowisko programistyczne — mogą się również sprawdzić nowsze wersje)
Pobierz i zainstaluj program Microsoft .NET Framework 4.5 lub nowszy
Zainstaluj program Microsoft DirectX z lokalnego repozytorium dodatku Dynamo (Dynamo\tools\install\Extra\DirectX\DXSETUP.exe
)
Programy .NET i DirectX mogą być już zainstalowane.
Po zakończeniu instalacji można uruchomić program Visual Studio i otworzyć rozwiązanie Dynamo.All.sln
znajdujące się w folderze Dynamo\src
.
Wybierz opcję
File > Open > Project/Solution
Przejdź do repozytorium dodatku Dynamo i otwórz folder
src
Wybierz plik rozwiązania
Dynamo.All.sln
Wybierz opcję
Open
Przed skompilowaniem rozwiązania należy określić kilka ustawień. Najpierw należy skompilować wersję dodatku Dynamo do debugowania, aby zebrać w programie Visual Studio więcej informacji w ramach debugowania na potrzeby programowania. Jako platformy docelowej należy użyć AnyCPU.
Staną się one folderami w folderze
bin
W tym przykładzie jako konfigurację rozwiązania wybraliśmy opcję
Debug
Jako platformę rozwiązania ustaw
Any CPU
Przy otwartym projekcie możemy skompilować rozwiązanie. W tym procesie zostanie utworzony plik DynamoSandbox.exe, który można uruchomić.
Skompilowanie projektu spowoduje przywrócenie zależności NuGet.
Wybierz opcję
Build > Build Solution
Sprawdź, czy kompilacja została zakończona pomyślnie w oknie danych wyjściowych. Komunikat powinien przypominać następujący:
==== Build: 69 succeeded, 0 failed, 0 up-to-date, 0 skipped ====
Jeśli dodatek Dynamo zostanie skompilowany pomyślnie, w repozytorium dodatku Dynamo zostanie utworzony folder bin
z plikiem DynamoSandbox.exe. W tym przypadku tworzymy plik wykonywalny za pomocą opcji Debug, dlatego znajduje się on w folderze bin\AnyCPU\Debug
. Uruchomienie tego pliku spowoduje otwarcie kompilacji lokalnej dodatku Dynamo.
Nowo skompilowany plik wykonywalny DynamoSandbox. Uruchom ten plik, aby uruchomić dodatek Dynamo.
Wszystko jest już prawie gotowe do rozpoczęcia pracy nad dodatkiem Dynamo.
Instrukcje dotyczące kompilowania dodatku Dynamo dla innych platform (np. Linux lub OS X) można znaleźć na tej stronie wiki.
Debugowanie to proces identyfikowania, izolowania i usuwania błędów lub problemów. Po pomyślnym skompilowaniu dodatku Dynamo ze źródła można za pomocą kilku narzędzi w programie Visual Studio debugować uruchomioną aplikację, na przykład dodatek DynamoRevit. Można przeanalizować kod źródłowy aplikacji, aby znaleźć źródło problemu, lub obserwować wykonywanie kodu na bieżąco. Aby uzyskać bardziej szczegółowe wyjaśnienia dotyczące debugowania i nawigowania po kodzie w programie Visual Studio, zapoznaj się z dokumentacją programu Visual Studio w witrynie Docs.
W przypadku autonomicznej aplikacji Dynamo, DynamoSandbox, omówimy dwie opcje debugowania:
Kompilowanie i uruchamianie dodatku Dynamo bezpośrednio z programu Visual Studio
Dołączanie programu Visual Studio do uruchomionego procesu dodatku Dynamo
W przypadku uruchamiania dodatku Dynamo z programu Visual Studio rozwiązanie jest ponownie kompilowane dla każdej sesji debugowania, jeśli jest to wymagane. Jeśli więc wprowadzono zmiany w źródle, zostają one uwzględnione podczas debugowania. Przy otwartym rozwiązaniu Dynamo.All.sln
wybierz z menu rozwijanego opcje Debug
, AnyCPU
i DynamoSandbox
, a następnie kliknij opcję Start
. Spowoduje to skompilowanie dodatku Dynamo i uruchomienie nowego procesu (DynamoSandbox.exe), a następnie dołączenie do niego debugera programu Visual Studio.
Kompilowanie i uruchamianie aplikacji bezpośrednio z programu Visual Studio
Ustaw konfigurację na
Debug
Ustaw platformę na
Any CPU
Ustaw projekt startowy na
DynamoSandbox
Kliknij opcję
Start
, aby rozpocząć proces debugowania
Można również debugować proces dodatku Dynamo, który jest już uruchomiony, aby rozwiązać problem z określonym otwartym wykresem lub pakietem. W tym celu należy otworzyć pliki źródłowe projektu w programie Visual Studio i dołączyć program do uruchomionego procesu dodatku Dynamo za pomocą elementu menu debugowania Attach to Process
.
Dołączanie uruchomionego procesu do programu Visual Studio
Wybierz opcję
Debug > Attach to Process...
Wybierz opcję
DynamoSandbox.exe
Wybierz opcję
Attach
W obu sytuacjach dołączamy debuger do procesu, który chcemy debugować. Przed lub po uruchomieniu debugera możemy ustawić punkty przerwania w kodzie, co spowoduje wstrzymanie procesu bezpośrednio przed wykonaniem danego wiersza kodu. Jeśli podczas debugowania zostanie zgłoszony nieprzechwycony wyjątek, program Visual Studio przeskoczy do miejsca, w którym ten wyjątek wystąpił w kodzie źródłowym. Jest to efektywna metoda wyszukiwania prostych awarii oraz nieobsługiwanych wyjątków i analizowania procesu wykonywania aplikacji.
Podczas debugowania aplikacji DynamoSandbox ustawiamy punkt przerwania w konstruktorze węzła Colour.ByARGB, który powoduje wstrzymanie procesu dodatku Dynamo po utworzeniu wystąpienia węzła. Jeśli ten węzeł zgłaszał wyjątek lub powodował awarię dodatku Dynamo, można krokowo wykonywać poszczególne wiersze w konstruktorze, aby sprawdzić, gdzie wystąpił problem.
Punkt przerwania
Stos wywołań ze wskazaniem obecnie wykonywanej funkcji i poprzednimi wywołaniami funkcji.
W następnej sekcji Kompilowanie dodatku DynamoRevit ze źródła omówimy konkretny przykład debugowania i wyjaśnimy, jak ustawiać punkty przerwania, krokowo wykonywać kod i odczytywać stos wywołań.
Ponieważ źródło dodatku Dynamo znajduje się w serwisie Github, najprostszym sposobem zaktualizowania lokalnych plików źródłowych jest ściągnięcie (pull) zmian za pomocą poleceń git.
Za pomocą tego wiersza polecenia ustaw repozytorium dodatku Dynamo jako katalog bieżący:
cd C:\Users\username\Documents\GitHub\Dynamo
Zastąp ciąg
"username"
swoją nazwą użytkownika
Za pomocą następującego polecenia ściągnij najnowsze zmiany:
git pull origin master
Widać tutaj, że repozytorium lokalne zostało zaktualizowane o zmiany wprowadzone zdalnie.
Oprócz ściągania (pull) aktualizacji dostępne są cztery inne ważne procesy robocze, które warto znać.
Rozwidlanie (fork) repozytorium dodatku Dynamo umożliwiające utworzenie kopii oddzielnej od oryginału. Żadne zmiany wprowadzone w tym miejscu nie wpływają na repozytorium oryginalne, a aktualizacje można pobierać (fetch) lub przesyłać za pomocą próśb o ściągnięcie (pull). Rozwidlenie (fork) nie jest poleceniem narzędzia git, lecz procesem roboczym dodanym w serwisie GitHub — model używania rozwidlenia (fork) i prośby o ściągnięcie (pull) jest jednym z najpopularniejszych procesów roboczych wykorzystywanych przy współtworzeniu projektów open source w trybie online. Osoby chcące współtworzyć dodatek Dynamo powinny się z nim zapoznać.
Gałąź (branch) — pracuj nad eksperymentami lub nowymi elementami odizolowanymi od innych prac w gałęziach. Ułatwia to wysyłanie próśb o ściągnięcie (pull).
Często wykonuj zatwierdzenia (commit), szczególnie po ukończeniu jednostek pracy i po wprowadzeniu zmian mogących wymagać cofnięcia. Zatwierdzenie (commit) powoduje zarejestrowanie zmian w repozytorium i będzie widoczne podczas wysyłania prośby o ściągnięcie (pull) do repozytorium głównego dodatku Dynamo.
Twórz prośby o ściągnięcie (pull), gdy zmiany są gotowe do oficjalnego zaproponowania ich w repozytorium głównym dodatku Dynamo.
Zespół dodatku Dynamo utworzył szczegółowe instrukcje dotyczące tworzenia próśb o ściągnięcie (pull). Szczegółowe informacje na temat tego, co należy uwzględnić, można znaleźć w sekcji „Prośby o ściągnięcie (pull)” w tej dokumentacji.
Na tej stronie dokumentacji podano listę referencyjną poleceń narzędzia git.
Pliki źródłowe dodatku DynamoRevit są również przechowywane w witrynie DynamoDS w serwisie GitHub dla programistów, którzy mogą współtworzyć dodatek i kompilować wersje beta. Kompilowanie dodatku DynamoRevit ze źródła zazwyczaj przebiega tak samo jak w przypadku dodatku Dynamo, z wyjątkiem kilku ważnych szczegółów:
Dodatek DynamoRevit odwołuje się do zespołów dodatku Dynamo, dlatego należy go utworzyć za pomocą zgodnych pakietów NuGet. Na przykład dodatek DynamoRevit 2.x nie zostanie wczytany do dodatku Dynamo 1.3.
Dodatek DynamoRevit jest powiązany z konkretną wersją programu Revit, na przykład: gałąź dodatku DynamoRevit 2018 powinna być uruchamiana w programie Revit 2018.
W tym podręczniku używamy następujących składników:
Revit 2023
Najnowsza kompilacja dodatku DynamoRevit w gałęzi Revit2023
Najnowsza kompilacja dodatku Dynamo
Aby zapewnić pomyślną kompilację, sklonujemy i skompilujemy repozytoria dodatku Dynamo i dodatku DynamoRevit, które będą używane w tym przewodniku.
Uwaga: ręczne skompilowanie dodatku Dynamo przed rozpoczęciem kompilowania dodatku DynamoRevit jest wymagane tylko w przypadku kompilowania dodatków Dynamo 1.x i DynamoRevit 1.x — nowsze wersje repozytorium DynamoRevit używają Menedżera pakietów NuGet do obsługi zależności dodatku Dynamo wymaganych do skompilowania. Mimo że skompilowanie dodatku DynamoRevit 2.x nie wymaga ręcznego ściągnięcia (pull) dodatku Dynamo, nadal są potrzebne podstawowe biblioteki (dlls
) w innym miejscu, aby faktycznie uruchomić składnik addin
dodatku DynamoRevit — warto więc jednak ściągnąć i skompilować dodatek Dynamo. Zobacz więcej poniżej: Kompilowanie repozytorium za pomocą programu Visual Studio
Kod projektu DynamoRevit znajduje się w serwisie Github w repozytorium oddzielnym od podstawowego kodu źródłowego dodatku Dynamo. To repozytorium zawiera pliki źródłowe dla węzłów charakterystycznych dla programu Revit i dodatek programu Revit, który wczytuje dodatek Dynamo. Kompilacje dodatku DynamoRevit dla różnych wersji programu Revit (na przykład 2016, 2017 lub 2018) są zorganizowane jako gałęzie w repozytorium.
Źródło dodatku DynamoRevit znajduje się tutaj: https://github.com/DynamoDS/DynamoRevit
Klonowanie lub pobieranie repozytorium
Gałęzie dodatku DynamoRevit odnoszą się do wersji programu Revit
W procesie podobnym do ściągania (pull) repozytorium dodatku Dynamo użyjemy polecenia git clone, aby sklonować dodatek DynamoRevit i określić gałąź, która odpowiada używanej wersji programu Revit. Aby rozpocząć, otworzymy interfejs wiersza polecenia i ustawimy jako bieżący katalog, do którego mają zostać sklonowane pliki.
Polecenie cd C:\Users\username\Documents\GitHub
zmienia katalog bieżący
Zastąp ciąg
username
swoją nazwą użytkownika
Teraz możemy sklonować repozytorium do tego katalogu. Mimo że musimy określić gałąź repozytorium, po sklonowaniu możemy przejść do tej gałęzi.
Polecenie git clone https://github.com/DynamoDS/DynamoRevit.git
klonuje repozytorium ze zdalnego adresu URL i domyślnie przełącza do głównej gałęzi.
Po zakończeniu klonowania repozytorium zmień katalog bieżący na folder repozytorium i przełącz na gałąź odpowiadającą zainstalowanej wersji programu Revit. W tym przykładzie używamy programu Revit RC2.13.1_Revit2023. Wszystkie gałęzie zdalne można wyświetlić na stronie serwisu Github w menu rozwijanym Branch (Gałąź).
Polecenie cd C:\Users\username\Documents\GitHub\DynamoRevit
zmienia katalog na DynamoRevit.
Polecenie git checkout RC2.13.1_Revit2023
ustawia bieżącą gałąź RC2.13.1_Revit2023
.
Polecenie git branch
sprawdza, w której gałęzi pracujemy, i wyświetla inne istniejące lokalnie.
Gałąź z gwiazdką jest obecnie wyrejestrowana. Wyświetlana jest gałąź
Revit2018
, ponieważ wcześniej ją wyrejestrowano, więc istnieje ona lokalnie.
Ważne jest wybranie właściwej gałęzi repozytorium, aby zapewnić, że podczas kompilowania projektu w programie Visual Studio będzie on odwoływał się do zespołów we właściwej wersji katalogu instalacyjnego programu Revit, w szczególności do plików RevitAPI.dll
i RevitAPIUI.dll
.
Przed skompilowaniem repozytorium musimy przywrócić pakiety NuGet za pomocą pliku restorepackages.bat
znajdującego się w folderze src
. Ten plik bat wykorzystuje Menedżera pakietów nuget do ściągnięcia (pull) skompilowanych plików binarnych podstawowych elementów dodatku Dynamo wymaganych przez dodatek DynamoRevit. Można również zdecydować się na skompilowanie ich ręcznie, ale tylko w przypadku wprowadzania zmian w dodatku DynamoRevit, a nie w elementach podstawowych dodatku Dynamo. Dzięki temu można szybciej rozpocząć pracę. Ten plik należy uruchomić z uprawnieniami administratora.
Kliknij prawym przyciskiem myszy plik
restorepackages.bat
i wybierz polecenieRun as administrator
Jeśli pakiety zostaną pomyślnie przywrócone, do folderu src
zostanie dodany folder packages
z najnowszymi pakietami beta NuGet.
Najnowsze pakiety NuGet dodatku Dynamo w wersji beta
Po przywróceniu pakietów otwórz plik rozwiązania programu Visual Studio DynamoRevit.All.sln
w folderze src
i skompiluj rozwiązanie. Kompilacja może początkowo mieć problemy ze znalezieniem pliku AssemblySharedInfo.cs
. W takim przypadku ponowne uruchomienie kompilacji rozwiąże ten problem.
Wybierz opcję
Build > Build Solution
Sprawdź, czy kompilacja została zakończona pomyślnie w oknie danych wyjściowych. Komunikat powinien wyglądać tak:
===== Build: 13 succeeded, 0 failed, 0 up-to-date, 0 skipped =====
.
Program Revit wymaga pliku dodatku w celu rozpoznania dodatku DynamoRevit. Instalator tworzy go automatycznie. W trakcie opracowywania musimy ręcznie utworzyć plik dodatku, który wskazuje kompilację dodatku DynamoRevit, której chcemy użyć, a konkretnie zespół DynamoRevitDS.dll
. Musimy również wskazać dodatkowi DynamoRevit kompilację dodatku Dynamo.
Utwórz plik Dynamo.addin
w folderze dodatku programu Revit znajdującym się w katalogu C:\ProgramData\Autodesk\Revit\Addins\2023
. Zainstalowano już wersję dodatku DynamoRevit, dlatego wystarczy edytować istniejący plik, aby wskazać nową kompilację.
Określ ścieżkę pliku DynamoRevitDS.dll
wewnątrz tagu <Assembly>...</Assembly>
.
Ewentualnie można skonfigurować w dodatku wczytywanie selektora wersji zamiast określonego zespołu.
Ustaw ścieżkę pliku w tagu <Assembly>...</Assembly>
na DynamoRevitVersionSelector.dll
Tag <FullClassName>...</FullClassName>
określa klasę, której wystąpienie należy utworzyć na podstawie zespołu wskazanego za pomocą powyższej ścieżki elementu Assembly. Ta klasa będzie punktem wejścia dla dodatku.
Ponadto musimy usunąć istniejący dodatek Dynamo dostarczany z programem Revit. Aby to zrobić, przejdź do folderu C:\\Program Files\Autodesk\Revit 2023\AddIns
i usuń dwa foldery zawierające dodatek Dynamo — DynamoForRevit
i DynamoPlayerForRevit
. Można je usunąć lub utworzyć ich kopię zapasową w oddzielnym folderze na wypadek późniejszej potrzeby odzyskania oryginalnego dodatku Dynamo dla programu Revit.
Drugim krokiem jest dodanie ścieżki pliku dla zespołów podstawowych dodatku Dynamo do pliku Dynamo.config
w folderze bin
dodatku DynamoRevit. Dodatek DynamoRevit wczyta je po otwarciu go w programie Revit. Ten plik konfiguracji umożliwia wskazanie dodatkowi DynamoRevit różnych wersji dodatku Dynamo na potrzeby opracowywania i testowania zmian zarówno w dodatku podstawowym, jak i w dodatku DynamoRevit.
Kod powinien wyglądać następująco:
Dodaj ścieżkę katalogu folderu bin
do części <add key/>
Tuż przed przystąpieniem do tego przewodnika sklonowaliśmy i skompilowaliśmy dodatek Dynamo, aby zapewnić jego sprawne współdziałanie z dodatkiem DynamoRevit. Ta ścieżka katalogu wskazuje tę kompilację.
Teraz po otwarciu programu Revit na karcie Zarządzaj powinien istnieć dodatek Dynamo.
Wybierz opcję
Manage
Kliknij ikonę dodatku Dynamo
Wystąpienie dodatku DynamoRevit
Jeśli pojawia się okno dialogowe błędu brakujących zespołów, prawdopodobnie występuje niezgodność między wersjami dodatku DynamoCore, przy których wykonywano kompilację, a tymi, które są wczytywane w środowisku wykonywania. Na przykład dodatek DynamoRevit z najnowszymi pakietami beta w wersji 2.0 dodatku DynamoCore nie będzie działać w przypadku uruchomienia go za pomocą dodatku bibliotek dll dodatku Dynamo 1.3. Upewnij się, że oba repozytoria są w tej samej wersji, a dodatek DynamoRevit ściąga (pull) zgodną wersję zależności nuget. Są one zdefiniowane w pliku package.json
repozytorium DynamoRevit.
W poprzedniej sekcji, Kompilowanie dodatku Dynamo ze źródła, krótko omówiono debugowanie w programie Visual Studio i sposób dołączania programu Visual Studio do procesu. Używając wyjątku w węźle Wall.ByCurveAndHeight jako przykładu, omówimy sposób dołączania do procesu, ustawiania punktów przerwania, krokowe wykonywanie kodu i używania stosu wywołań w celu określenia źródła wyjątku. Te narzędzia debugowania mają ogólne zastosowanie do procesów roboczych opracowywania rozwiązań .net i warto zapoznać się z nimi w zakresie wykraczającym poza ten podręcznik.
Dołączenie do procesu umożliwia połączenie uruchomionej aplikacji z programem Visual Studio w celu debugowania. Aby debugować zachowanie występujące w kompilacji dodatku DynamoRevit, można otworzyć pliki źródłowe dodatku DynamoRevit w programie Visual Studio i dołączyć proces Revit.exe
, który jest procesem nadrzędnym dodatku DynamoRevit. Program Visual Studio używa pliku symboli (.pbd
), aby utworzyć połączenie między zespołami wykonywanymi w dodatku DynamoRevit a kodem źródłowym.
Punkty przerwania określają wiersze w kodzie źródłowym, w których działanie aplikacji zostanie wstrzymane przed dalszym wykonywaniem. Jeśli węzeł powoduje awarię dodatku DynamoRevit lub zwracanie przez niego nieoczekiwanego wyniku, można dodać do źródła węzła punkt przerwania, aby wstrzymać proces, przejść do kodu i sprawdzić wartości zmiennych na żywo aż do znalezienia źródła problemu.
Krokowe wykonywanie kodu to przechodzenie przez źródło wiersz po wierszu. Możemy uruchamiać funkcje pojedynczo, wchodzić krokowo do wywołania funkcji lub wyskakiwać z aktualnie wykonywanej funkcji.
Stos wywołań pokazuje funkcję obecnie uruchomioną w procesie w odniesieniu do poprzednich wywołań funkcji, które wywołały tę funkcję. W programie Visual Studio jest to wyświetlane w oknie stosu wywołań. Jeśli na przykład dojdziemy do wyjątku poza kodem źródłowym, pojawi się ścieżka do kodu wywołującego w stosie wywołań.
„2,000 Things You Should Know About C#” (2000 rzeczy, które należy wiedzieć o języku C#): tu znajdziesz bardziej szczegółowe wyjaśnienie stosów wywołań
Węzeł Wall.ByCurveAndHeight zgłasza wyjątek po przekazaniu mu krzywej PolyCurve jako krzywej wejściowej (curve) i zwraca komunikat: „To BSPlineCurve Not Implemented” (Nie zaimplementowano do BSPlineCurve). Podczas debugowania możemy ustalić, dlaczego dokładnie węzeł nie akceptuje tego typu geometrii jako danych wejściowych dla parametru krzywej (curve). W tym przykładzie założono, że dodatek DynamoRevit pomyślnie skompilowano i można go uruchomić jako dodatek dla programu Revit.
Węzeł Wall.ByCurveAndHeight zgłasza wyjątek
Rozpocznij od otwarcia pliku rozwiązania DynamoRevit.All.sln
, uruchom program Revit i uruchom dodatek DynamoRevit. Następnie dołącz program Visual Studio do procesu programu Revit za pomocą okna Attach to Process
.
Program Revit i dodatek DynamoRevit muszą być uruchomione, aby były widoczne jako dostępne procesy
Otwórz okno
Attach to Process
, wybierając opcjęDebug > Attach to Process...
Ustaw opcję
Transport
na wartośćDefault
Wybierz opcję
Revit.exe
Wybierz opcję
Attach
Po dołączeniu programu Visual Studio do programu Revit otwórz kod źródłowy węzła Wall.ByCurveAndHeight w pliku Wall.cs
. Tę zawartość można znaleźć w Eksploratorze rozwiązań w części Libraries > RevitNodes > Elements
w obszarze Public static constructors
pliku. Ustaw punkt przerwania w konstruktorze typu wall, tak aby po uruchomieniu węzła w dodatku Dynamo proces został przerwany i można było krokowo wykonać poszczególne wiersze kodu. Nazwy konstruktorów typów Zero-Touch dodatku Dynamo zazwyczaj zaczynają się od By<parameters>
.
Plik klasy z konstruktorem dla węzła Wall.ByCurveAndHeight
Ustaw punkt przerwania, klikając po lewej stronie numeru wiersza lub klikając prawym przyciskiem myszy wiersz kodu i wybierając polecenie
Breakpoint > Insert Breakpoint
.
Po ustawieniu punktu przerwania należy zadbać o to, aby proces przebiegł przez funkcję Wall.ByCurveAndHeight. Funkcję można ponownie wykonać w dodatku Dynamo, ponownie łącząc przewód do jednego z portów węzła, co spowoduje ponowne uruchomienie tego węzła. W programie Visual Studio zostanie wyzwolony punkt przerwania.
Ikona punktu przerwania zmienia się po jego wyzwoleniu
Okno stosu wywołań z następną metodą
Teraz krokowo wykonuj poszczególne wiersze w konstruktorze, aż zostanie zwrócony wyjątek. Kod wyróżniony na żółto to następna instrukcja do uruchomienia.
Narzędzia do debugowania do nawigowania po kodzie
Naciśnij opcję
Step Over
, aby uruchomić wyróżniony kod, a następnie wstrzymać wykonywanie po zwróceniu przez funkcję wynikuNastępna instrukcja do uruchomienia oznaczona żółtym wyróżnieniem i strzałką
Jeśli będziemy kontynuować wykonywanie krokowe, w końcu zostanie zwrócony wyjątek, który pojawił się wcześniej w oknie dodatku DynamoRevit. W oknie stosu wywołań widać, że wyjątek został pierwotnie zwrócony z metody o nazwie Autodesk.Revit.CurveAPIUtils.CreateNurbsCurve
. Na szczęście wyjątek jest tutaj obsługiwany, więc dodatek Dynamo nie uległ awarii. Proces debugowania zapewnił kontekst dla problemu, przenosząc nas do innej metody w kodzie źródłowym.
Ponieważ nie jest to biblioteka open source, nie możemy tam wprowadzać zmian. Mamy teraz więcej informacji, więc możemy zgłosić problem z szerszym kontekstem, zgłaszając problem w serwisie GitHub, lub zaproponować obejście tego problemu, wysyłając prośbę o ściągnięcie (pull).
Po dotarciu do instrukcji powodującej wyjątek w pliku
Walls.cs
proces debugowania maksymalnie przybliża nas do problemu źródłowego w kodzie użytkownika w plikuProtoToRevitCurve.cs
.Instrukcja powodująca wyjątek w pliku
ProtoToRevitCurve.cs
W oknie stosu wywołań widać, że wyjątek pochodzi z kodu innego niż kod użytkownika
Okno podręczne z informacjami o wyjątku
Ten proces można zastosować do wszystkich plików źródłowych, z którymi pracujemy. W przypadku tworzenia biblioteki węzłów Zero-Touch dla programu Dynamo Studio można otworzyć źródło biblioteki i dołączyć proces dodatku Dynamo w celu debugowania tej biblioteki węzłów. Nawet jeśli wszystko działa doskonale, debugowanie to doskonały sposób na przeglądanie kodu i analizowanie jego działania.
Proces ten jest niemal identyczny jak w przypadku ściągania (pull) zmian dla dodatku Dynamo, ale należy upewnić się, że jest używana właściwa gałąź. Użyj polecenia git branch
w repozytorium DynamoRevit, aby sprawdzić, które gałęzie są dostępne lokalnie i które są obecnie wyrejestrowane.
Polecenie cd C:\Users\username\Documents\GitHub\DynamoRevit
ustawia repozytorium DynamoRevit jako katalog bieżący.
Polecenie git branch
sprawdza, czy używana jest właściwa gałąź, czyli RC2.13.1_Revit2023
.
Polecenie git pull origin RC2.13.1_Revit2023
ściąga zmiany z gałęzi RC2.13.1_Revit2023
zdalnej wersji oryginalnej.
Wersja oryginalna wskazuje po prostu adres URL sklonowanej wersji oryginalnej.
Najlepiej jest pilnować tego, która gałąź jest używana i z której jest ściągana (pull) zawartość, aby na przykład uniknąć ściągnięcia zmian z gałęzi
RC2.13.1_Revit2023
do wersjiRevit2018
.
Jak wspomniano w temacie Kompilowanie dodatku Dynamo ze źródła, gdy wszystko będzie gotowe do przesłania zmiany do repozytorium DynamoRevit, można utworzyć prośbę o ściągnięcie zgodnie z wytycznymi zespołu dodatku Dynamo podanymi w sekcji „Prośby o ściągnięcie (pull)”.