Dynamo의 소스는 누구나 복제하고 기여할 수 있도록 Github에 호스팅됩니다. 이 장에서는 git을 사용하여 리포지토리를 복제하고, Visual Studio에서 소스 파일을 컴파일하고, 로컬 빌드를 실행 및 디버깅하고, Github에서 새로운 변경 사항을 끌어오는 방법을 살펴봅니다.
Github는 변경 사항을 추적하고 작업자 간 작업을 조정하기 위한 버전 관리 시스템인 git을 기반으로 하는 호스팅 서비스입니다. git은 Dynamo의 소스 파일을 다운로드하고 몇 가지 명령으로 소스 파일을 지속적으로 업데이트하는 데 활용할 수 있는 도구입니다. 이 방법을 사용하면 업데이트할 때마다 소스 파일을 다운로드하고 수동으로 바꾸는 불필요하고 번거로운 작업을 피할 수 있습니다. git 버전 관리 시스템은 로컬 코드 리포지토리와 원격 코드 리포지토리 간의 차이를 추적합니다.
Dynamo의 소스는 https://github.com/DynamoDS/Dynamo 리포지토리의 DynamoDS Github에 호스팅됩니다.
Dynamo 소스 파일입니다.
전체 리포지토리 복제 또는 다운로드
다른 DynamoDS 리포지토리 보기
Dynamo의 소스 파일
Git 관련 파일
리포지토리를 복제하려면 먼저 git을 설치해야 합니다. 설치 단계 및 gihub 사용자 이름 및 이메일을 설정하는 방법에 대해서는 이 간략한 안내서를 따르십시오. 이 예에서는 명령행에서 git을 사용할 것입니다. 이 안내서에서는 Windows를 사용한다고 가정하지만, mac 또는 linux에서도 git을 사용하여 Dynamo 소스를 복제할 수 있습니다.
복제할 Dynamo 리포지토리의 URL을 파악해야 합니다. 이 기능은 리포지토리 페이지의 "복제 또는 다운로드" 버튼에서 찾을 수 있습니다. URL을 복사하여 명령 프롬프트에 붙여넣습니다.
"복제 또는 다운로드"를 선택합니다.
URL을 복사합니다.
git이 설치되어 있으면 Dynamo 리포지토리를 복제할 수 있습니다. 명령 프롬프트를 열어서 시작합니다. 그런 다음 디렉토리 변경 명령 cd
를 사용하여 소스 파일을 복제할 폴더를 탐색합니다. 여기에서는 Documents
에 Github
라는 폴더를 생성했습니다.
cd C:\Users\username\Documents\GitHub
"username"을 사용자 이름으로 바꿉니다.
다음 단계에서는 git 명령을 실행하여 Dynamo 리포지토리를 지정한 위치에 복제합니다. 명령의 URL은 Github에서 "복제 또는 다운로드" 버튼을 클릭하여 확인할 수 있습니다. 명령 터미널에서 이 명령을 실행합니다. 그러면 Dynamo의 가장 최신 업데이트 코드인 Dynamo 리포지토리 마스터 분기가 복제되고 최신 버전의 Dynamo 코드가 포함됩니다. 이 분기는 매일 변경됩니다.
git clone https://github.com/DynamoDS/Dynamo.git
복제 작업이 성공적으로 완료되면 git이 잘 작동하는 것입니다. 파일 탐색기에서 복제한 디렉토리로 이동하여 소스 파일을 확인합니다. 디렉토리 구조는 Github의 Dynamo 리포지토리의 마스터 분기와 동일할 것입니다.
Dynamo의 소스 파일
Git 파일
소스 파일이 로컬 컴퓨터에 복제되면, 이제 Dynamo용 실행 파일을 빌드할 수 있습니다. 이를 위해서는 Visual Studio IDE를 설정하고 .NET Framework 및 DirectX가 설치되어 있는지 확인해야 합니다.
완전한 기능을 갖춘 무료 IDE(통합 개발 환경)인 Microsoft Visual Studio Community 2015(이후 버전도 작동할 수 있음)를 다운로드한 후 설치합니다.
Microsoft .NET Framework 4.5 이상 버전을 다운로드한 후 설치합니다.
로컬 Dynamo 리포지토리에서 Microsoft DirectX(Dynamo\tools\install\Extra\DirectX\DXSETUP.exe
)를 설치합니다.
.NET 및 DirectX가 이미 설치되어 있을 수 있습니다.
설치가 모두 완료되면 Visual Studio를 시작하고 Dynamo\src
에 있는 Dynamo.All.sln
솔루션을 열 수 있습니다.
File > Open > Project/Solution
을 선택합니다.Dynamo 리포지토리로 이동하여
src
폴더를 엽니다.
Dynamo.All.sln
솔루션 파일을 선택합니다.
Open
을 선택합니다.
솔루션을 빌드하려면 먼저 몇 가지 설정을 지정해야 합니다. 먼저 Visual Studio가 디버깅하면서 개발하는 데 도움이 되는 더 많은 정보를 수집할 수 있도록 Dynamo의 디버그 버전을 빌드해야 합니다. 여기서는 AnyCPU를 대상 플랫폼으로 지정하겠습니다.
bin
폴더 안에 폴더가 생성됩니다.
이 예에서는 솔루션 구성으로
Debug
를 선택했습니다.솔루션 플랫폼을
Any CPU
로 설정합니다.
프로젝트가 열리면 솔루션을 빌드할 수 있습니다. 이 프로세스를 수행하면 실행할 수 있는 DynamoSandbox.exe 파일이 생성됩니다.
프로젝트를 빌드하면 NuGet 종속성이 복원됩니다.
Build > Build Solution
을 선택합니다.빌드가 성공적으로 수행되어 출력 창에
==== Build: 69 succeeded, 0 failed, 0 up-to-date, 0 skipped ====
와 유사하게 표시되는지 확인합니다.
Dynamo가 성공적으로 빌드되면 DynamoSandbox.exe 파일이 있는 bin
폴더가 Dynamo 리포지토리에 생성됩니다. 이 예에서는 디버그 옵션을 사용하여 빌드하고 있으므로 실행 파일은 bin\AnyCPU\Debug
에 있습니다. 이 파일을 실행하면 Dynamo의 로컬 빌드가 열립니다.
방금 빌드한 DynamoSandbox 실행 파일입니다. 이 실행 파일을 실행하여 Dynamo를 시작합니다.
이제 Dynamo를 위한 개발을 시작할 준비가 거의 완료되었습니다.
다른 플랫폼(예: Linux 또는 OS X)용 Dynamo를 빌드하는 방법에 대한 지침은 이 wiki 페이지를 참조하십시오.
디버깅은 버그 또는 이슈를 식별하고 가려내고 해결하는 프로세스입니다. Dynamo가 소스에서 성공적으로 빌드되면 Visual Studio의 여러 도구를 사용하여 실행 중인 응용프로그램(예: DynamoRevit 애드인)을 디버깅할 수 있습니다. 또한, 소스 코드를 분석하여 이슈의 근본 원인을 찾거나 현재 실행 중인 코드를 확인할 수 있습니다. Visual Studio에서 코드를 디버깅하고 탐색하는 방법에 대한 자세한 내용은 Visual Studio 문서를 참조하십시오.
독립 실행형 Dynamo 응용프로그램인 DynamoSandbox의 두 가지 디버깅 옵션을 살펴보겠습니다.
Visual Studio에서 직접 Dynamo 빌드 및 시작하기
Visual Studio를 실행 중인 Dynamo 프로세스에 연결하기
Visual Studio에서 Dynamo를 시작하면 필요한 경우 모든 디버깅 세션에 대해 솔루션이 다시 빌드되므로, 소스를 변경하면 디버깅할 때 변경 사항이 포함됩니다. Dynamo.All.sln
솔루션이 열려 있는 상태로 드롭다운 메뉴에서 Debug
, AnyCPU
및 DynamoSandbox
를 선택한 다음 Start
를 클릭합니다. 이렇게 하면 Dynamo가 빌드되고 새 프로세스(DynamoSandbox.exe)가 시작되고 Visual Studio의 디버거가 이 프로세스에 연결됩니다.
Visual Studio에서 직접 응용프로그램 빌드 및 시작하기
구성을
Debug
로 설정합니다.플랫폼을
Any CPU
로 설정합니다.시작 프로젝트를
DynamoSandbox
로 설정합니다.
Start
를 클릭하여 디버깅 프로세스를 시작합니다.
또는 특정 그래프가 열려 있거나 패키지에 대한 이슈를 해결하기 위해 이미 실행 중인 Dynamo 프로세스를 디버깅할 수도 있습니다. 이렇게 하려면 Visual Studio에서 프로젝트의 소스 파일을 열고 Attach to Process
디버그 메뉴 항목을 사용하여 실행 중인 Dynamo 프로세스에 연결합니다.
실행 중인 프로세스를 Visual Studio에 연결하기
Debug > Attach to Process...
를 선택합니다.
DynamoSandbox.exe
를 선택합니다.
Attach
를 선택합니다.
두 상황에서 모두 디버깅하려는 프로세스에 디버거를 연결하겠습니다. 디버거를 시작하기 전이나 후에 코드에서 중단점을 설정하여 해당 코드 줄을 실행하기 직전에 프로세스가 중지되도록 할 수 있습니다. 디버깅하는 동안 예기치 않은 예외가 발생하면 Visual Studio는 소스 코드에서 예외가 발생한 위치로 이동됩니다. 이 방법은 단순한 충돌과 처리되지 않은 예외를 찾고 응용프로그램의 실행 흐름을 파악하는 데 효율적입니다.
DynamoSandbox를 디버깅하는 동안, 노드가 인스턴스화될 때 Dynamo 프로세스가 일시 중지되도록 Color.ByARGB 노드의 생성자에 중단점을 설정했습니다. 이 노드로 인해 예외가 발생하거나 Dynamo가 충돌하는 경우 생성자의 각 줄을 단계별로 실행하여 이슈가 발생한 위치를 찾을 수 있습니다.
중단점
현재 실행 중인 함수와 이전 함수 호출을 보여 주는 호출 스택
다음 섹션인 소스에서 DynamoRevit 빌드하기에서는 디버깅 관련 예를 안내하고, 중단점을 설정하고 코드를 단계별로 실행하고 호출 스택을 읽는 방법에 대해 설명합니다.
Dynamo 소스는 Github에 호스팅되므로 로컬 소스 파일을 업데이트하는 가장 쉬운 방법은 git 명령을 사용하여 변경 사항을 끌어오는 것입니다.
명령행을 사용하여 현재 디렉토리를 Dynamo 리포지토리로 설정합니다.
cd C:\Users\username\Documents\GitHub\Dynamo
"username"
을 사용자 이름으로 바꿉니다.
다음 명령을 사용하여 최신 변경 사항을 끌어옵니다.
git pull origin master
로컬 리포지토리가 원격 변경 사항으로 업데이트된 것을 볼 수 있습니다.
업데이트 끌어오기 외에도 익숙해져야 할 네 가지 git 워크플로우가 더 있습니다.
Dynamo 리포지토리를 포크하여 원본과 별도로 사본을 생성합니다. 여기서 변경한 사항은 원래 리포지토리에는 영향을 주지 않으며, 끌어오기 요청에서 업데이트를 가져오거나 끌어오기 요청과 함께 업데이트를 제출할 수 있습니다. 포크는 git 명령이 아니라 github가 추가하는 워크플로우입니다. 포크, 끌어오기 요청 모델은 온라인에서 오픈 소스 프로젝트에 기여하는 가장 일반적인 워크플로우 중 하나입니다. Dynamo에 기여하고 싶은 경우 알아 두면 좋습니다.
분기 - 실험 또는 새 기능을 분기의 다른 작업에서 분리하여 작업할 수 있습니다. 이렇게 하면 끌어오기 요청을 더 쉽게 보낼 수 있습니다.
작업 단위를 완료한 후, 그리고 실행 취소하고 싶을 수 있는 변경 사항이 있을 때 자주 커밋합니다. 커밋은 리포지토리에 대한 변경 사항을 기록하며 주 Dynamo 리포지토리에 대해 끌어오기 요청을 수행할 때 표시됩니다.
변경 사항을 주 Dynamo 리포지토리에 공식적으로 제안할 준비가 되면 끌어오기 요청을 생성합니다.
Dynamo 팀은 끌어오기 요청 생성과 관련된 지침을 구체적으로 마련해 두었습니다. 자세한 내용은 이 문서의 끌어오기 요청 섹션을 참조하십시오.
git 명령의 참조 목록은 이 문서 페이지를 참조하십시오.
개발자가 기여하고 베타 버전을 빌드할 수 있도록 DynamoRevit 소스 파일도 DynamoDS Github에 호스팅됩니다. 소스에서 DynamoRevit을 빌드하는 작업은 몇 가지 중요한 세부 사항을 제외하고는 일반적으로 Dynamo와 동일한 프로세스를 따릅니다.
DynamoRevit은 Dynamo 어셈블리를 참조하므로 일치하는 NuGet 패키지를 사용하여 빌드해야 합니다. 예를 들어, DynamoRevit 2.x는 Dynamo 1.3에 로드되지 않습니다.
DynamoRevit은 Revit 버전에 따라 따릅니다. 예를 들어, DynamoRevit 2018 분기는 Revit 2018에서 실행되어야 합니다.
이 안내서에서는 다음을 사용합니다.
Revit 2023
분기 Revit2023
의 최신 DynamoRevit 빌드
최신 Dynamo 빌드
성공적으로 빌드할 수 있도록 이 연습에서 사용할 Dynamo 및 DynamoRevit 리포지토리를 모두 복제하고 빌드할 것입니다.
참고: Dynamo 1.x 및 DynamoRevit 1.x를 빌드하는 경우에만 Dynamo를 수동으로 빌드해야 합니다. 최신 버전의 DynamoRevit 리포지토리에서는 빌드하는 데 필요한 Dynamo 종속성을 위해 NuGet 패키지 관리자를 사용합니다. DynamoRevit 2.x 빌드에서는 Dynamo를 수동으로 끌어올 필요가 없지만 실제로 DynamoRevit addin
을 실행하려면 다른 곳에 여전히 코어 dlls
가 필요하므로 Dynamo를 끌어오고 빌드하는 것이 좋습니다. 자세한 내용은 아래에 나오는 Visual Studio를 사용하여 리포지토리 빌드를 참조하십시오.
DynamoRevit 프로젝트에 대한 코드는 핵심 Dynamo 소스 코드와는 별도로 Github의 리포지토리에 있습니다. 이 리포지토리에는 Revit 전용 노드에 대한 소스 파일과 Dynamo를 로드하는 Revit 애드인이 포함되어 있습니다. 다른 버전의 Revit(예: 2016, 2017 또는 2018)용 DynamoRevit 빌드는 리포지토리에 분기로 구성됩니다.
DynamoRevit 소스는 https://github.com/DynamoDS/DynamoRevit에 호스팅됩니다.
리포지토리 복제 또는 다운로드
DynamoRevit의 분기는 Revit 버전을 참조합니다.
Dynamo 리포지토리를 끌어오는 것과 유사한 프로세스로 git 복제 명령을 사용하여 DynamoRevit을 복제하고 Revit 버전과 일치하는 분기를 지정합니다. 시작하기 위해 명령행 인터페이스를 열고 파일을 복제할 위치로 현재 디렉토리를 설정합니다.
cd C:\Users\username\Documents\GitHub
는 현재 디렉토리를 변경합니다.
username
을 사용자 이름으로 바꿉니다.
이제 리포지토리를 이 디렉토리에 복제할 수 있습니다. 리포지토리의 분기를 지정해야 하지만, 복제 후 이 분기로 전환할 수 있습니다.
git clone https://github.com/DynamoDS/DynamoRevit.git
은 원격 URL에서 리포지토리를 복제하고 기본적으로 마스터 분기로 전환합니다.
리포지토리의 복제가 완료되면 현재 디렉토리를 리포지토리 폴더로 변경하고 설치된 Revit 버전과 일치하는 분기로 전환합니다. 이 예에서는 Revit RC2.13.1_Revit2023을 사용합니다. 모든 원격 분기는 Github 페이지의 분기 드롭다운 메뉴에서 확인할 수 있습니다.
cd C:\Users\username\Documents\GitHub\DynamoRevit
은 디렉토리를 DynamoRevit으로 변경합니다.
git checkout RC2.13.1_Revit2023
은 현재 분기를 RC2.13.1_Revit2023
으로 설정합니다.
git branch
는 현재 사용 중인 분기를 확인하고, 로컬에 있는 다른 분기를 표시합니다.
별표가 있는 분기는 현재 체크아웃된 분기입니다.
Revit2018
분기가 표시되는 이유는 이전에 체크아웃하여 로컬에 존재하기 때문입니다.
Visual Studio에서 프로젝트를 빌드할 때 올바른 버전의 Revit 설치 디렉토리(특히 RevitAPI.dll
및 RevitAPIUI.dll
)에서 어셈블리를 참조하도록 리포지토리의 올바른 분기를 선택하는 것이 중요합니다.
리포지토리를 빌드하기 전에 src
폴더에 있는 restorepackages.bat
파일을 사용하여 NuGet 패키지를 복원해야 합니다. 이 bat 파일은 nuget 패키지 관리자를 사용하여 Dynamo Revit에 필요한 Dynamo 코어의 빌드된 바이너리를 끌어옵니다. DynamoRevit만 변경하고 Dynamo 코어는 변경하지 않는 경우에는 이러한 바이너리를 수동으로 빌드하도록 선택할 수도 있습니다. 이렇게 하면 더 빠르게 시작할 수 있습니다. 이 파일을 관리자 권한으로 실행해야 합니다.
마우스 오른쪽 버튼으로
restorepackages.bat
를 클릭하여Run as administrator
를 선택합니다.
패키지가 성공적으로 복원되면 최신 베타 NuGet 패키지가 있는 packages
폴더가 src
폴더에 추가됩니다.
최신 베타 Dynamo NuGet 패키지
패키지가 복원되면 src
에서 DynamoRevit.All.sln
Visual Studio 솔루션 파일을 열고 솔루션을 빌드합니다. 빌드 초기에는 AssemblySharedInfo.cs
를 찾는 데 어려움이 있을 수 있습니다. 이러한 경우 빌드를 다시 실행하면 이 이슈가 해결됩니다.
Build > Build Solution
을 선택합니다.출력 창에서 빌드가 성공적으로 수행되었는지 확인합니다.
===== Build: 13 succeeded, 0 failed, 0 up-to-date, 0 skipped =====
라는 메시지가 표시되어야 합니다.
Revit은 설치 프로그램이 자동으로 생성하는 애드인 파일이 있어야 DynamoRevit을 인식할 수 있습니다. 개발 단계에서는 사용할 DynamoRevit 빌드, 특히 DynamoRevitDS.dll
어셈블리를 가리키는 애드인 파일을 수동으로 생성해야 합니다. 또한 DynamoRevit이 Dynamo의 빌드를 가리키도록 지정해야 합니다.
C:\ProgramData\Autodesk\Revit\Addins\2023
에 있는 Revit의 애드인 폴더에 Dynamo.addin
파일을 생성합니다. DynamoRevit 버전이 이미 설치되어 있으므로 새 빌드를 가리키도록 기존 파일을 편집하겠습니다.
<Assembly>...</Assembly>
안으로 DynamoRevitDS.dll
의 파일 경로를 지정합니다.
애드인에서 특정 어셈블리 대신 버전 선택기를 로드하도록 할 수도 있습니다.
<Assembly>...</Assembly>
파일 경로를 DynamoRevitVersionSelector.dll
로 설정합니다.
<FullClassName>...</FullClassName>
은 위에서 어셈블리 요소 경로로 지정한 어셈블리에서 인스턴스화할 클래스를 지정합니다. 이 클래스는 애드인의 시작점이 될 것입니다.
또한 Revit과 함께 제공되는 기존 Dynamo를 제거해야 합니다. 이를 위해 C:\\Program Files\Autodesk\Revit 2023\AddIns
로 이동하여 Dynamo - DynamoForRevit
및 DynamoPlayerForRevit
이 포함된 두 개의 폴더를 제거합니다. 원래 Dynamo for Revit을 복구해야 하는 경우 개별 폴더에서 삭제하거나 백업할 수 있습니다.
두 번째 단계는 Dynamo 코어 어셈블리의 파일 경로를 DynamoRevit의 bin
폴더에 있는 Dynamo.config
파일에 추가하는 것입니다. DynamoRevit은 애드인이 Revit에서 열릴 때 이러한 파일을 로드합니다. 이 구성 파일을 사용하면 DynamoRevit 애드인이 Dynamo 코어의 다른 버전을 가리키도록 지정하여 Core와 DynamoRevit 모두에서 변경 사항을 개발 및 테스트할 수 있습니다.
코드는 다음과 같아야 합니다.
bin
폴더의 디렉토리 경로를 <add key/>
에 추가합니다.
이 연습을 시작하기 직전에 Dynamo를 복제하고 빌드하여 DynamoRevit과 잘 연동되는지 확인했습니다. 디렉토리 경로는 이 빌드를 가리킵니다.
이제 Revit을 열면 관리 탭에 Dynamo 애드인이 있습니다.
Manage
를 선택합니다.Dynamo 애드인 아이콘을 클릭합니다.
DynamoRevit의 인스턴스
누락된 어셈블리가 표시된 오류 대화상자 창이 나타나면 빌드한 DynamoCore 버전과 런타임 시 로드하는 버전이 일치하지 않는 것일 수 있습니다. 예를 들어, 최신 2.0 베타 패키지의 DynamoCore가 포함된 DynamoRevit은 Dynamo 1.3 dlls를 사용하여 시작하려고 하면 작동하지 않습니다. 두 리포지토리의 버전이 동일하고 DynamoRevit이 일치하는 버전의 nuget 종속성을 끌어오고 있는지 확인합니다. 이것은 DynamoRevit 리포지토리의 package.json
파일에 정의되어 있습니다.
이전 섹션인 소스에서 Dynamo 빌드하기에서는 Visual Studio에서 디버깅하는 방법과 Visual Studio를 프로세스에 연결하는 방법을 간략하게 설명했습니다. Wall.ByCurveAndHeight 노드의 예외를 예로 들어, 프로세스에 연결하고, 중단점을 설정하고, 코드를 단계별로 실행하고, 호출 스택을 사용하여 예외의 소스를 확인하는 방법을 살펴보겠습니다. 이러한 디버깅 도구는 일반적으로 .net 개발 워크플로우에 적용되며 다른 리소스를 통해 살펴볼 가치가 있습니다.
프로세스에 연결은 디버깅을 위해 실행 중인 응용프로그램을 Visual Studio에 연결합니다. DynamoRevit 빌드에서 발생하는 동작을 디버깅하려면 Visual Studio에서 DynamoRevit 소스 파일을 열고 DynamoRevit 애드인의 상위 프로세스인 Revit.exe
프로세스를 연결하면 됩니다. Visual Studio는 기호 파일(.pbd
)을 사용하여 DynamoRevit이 실행 중인 어셈블리와 소스 코드를 연결합니다.
중단점은 소스 코드에서 응용프로그램이 실행되기 전에 일시 중지되는 줄을 설정합니다. 노드로 인해 DynamoRevit이 충돌하거나 예기치 않은 결과가 반환되는 경우, 노드 소스에 중단점을 추가하여 프로세스를 일시 중지하고, 코드를 한 단계씩 실행하고, 문제의 근본 원인을 찾을 때까지 변수의 실시간 값을 검사할 수 있습니다
단계별로 코드 실행하기는 소스를 한 줄씩 실행합니다. 함수를 하나씩 실행하거나, 함수 호출을 한 단계씩 실행하거나, 현재 실행 중인 함수에서 나갈 수 있습니다.
호출 스택은 이 함수 호출을 호출한 이전 함수 호출과 관련하여 프로세스가 현재 실행 중인 함수를 표시합니다. Visual Studio에는 이러한 함수를 표시하는 호출 스택 창이 있습니다. 예를 들어, 소스 코드 외부의 예외에 도달하면 호출 스택에서 호출 코드에 대한 경로를 볼 수 있습니다.
C#에 대해 알아야 할 2,000가지 사항에서 호출 스택에 대해 더 자세히 알아볼 수 있습니다.
Wall.ByCurveAndHeight 노드는 곡선 입력으로 PolyCurve가 지정되면 "BSPlineCurve까지가 구현되지 않음" 이라는 메시지와 함께 예외를 발생시킵니다. 디버깅을 통해 노드가 이 형상 유형을 곡선 매개변수의 입력으로 허용하지 않는 이유를 정확히 파악할 수 있습니다. 이 예에서는 DynamoRevit이 성공적으로 빌드되어 Revit용 애드인으로 실행할 수 있다고 가정합니다.
예외를 발생시키는 Wall.ByCurveAndHeight 노드
먼저 DynamoRevit.All.sln
솔루션 파일을 열고 Revit을 시작한 다음 DynamoRevit 애드인을 시작합니다. 그런 다음 Attach to Process
창을 사용하여 Visual Studio를 Revit 프로세스에 연결합니다.
사용 가능한 프로세스로 표시하려면 Revit과 DynamoRevit이 실행 중이어야 합니다.
Debug > Attach to Process...
를 선택하여Attach to Process
창을 엽니다.
Transport
을Default
로 설정합니다.
Revit.exe
를 선택합니다.
Attach
를 선택합니다.
Visual Studio가 Revit에 연결된 상태로 Wall.cs
에서 Wall.ByCurveAndHeight 소스 코드를 엽니다. 솔루션 탐색기에서 파일의 Public static constructors
영역에 있는 Libraries > RevitNodes > Elements
아래에서 찾을 수 있습니다. 벽 유형의 생성자에서 중단점을 설정하여 Dynamo에서 노드가 실행될 때 프로세스가 중단되고 코드의 각 줄을 개별적으로 실행해 볼 수 있도록 합니다. 일반적으로 Dynamo zero touch 유형 생성자는 By<parameters>
로 시작합니다.
Wall.ByCurveAndHeight의 생성자가 있는 클래스 파일
줄 번호 왼쪽을 클릭하거나 코드 줄을 마우스 오른쪽 버튼으로 클릭하여 중단점을 설정하고
Breakpoint > Insert Breakpoint
를 선택합니다.
중단점을 설정한 후에는 Wall.ByCurveAndHeight 함수를 통해 프로세스를 실행해야 합니다. 포트 중 하나에 와이어를 다시 연결하면 노드가 강제로 다시 실행되므로, 이 함수를 다시 실행할 수 있습니다. 중단점이 Visual Studio에서 적중됩니다.
중단점 아이콘은 적중되면 변경됩니다.
다음 메서드를 보여주는 호출 스택 창이 표시됩니다.
이제 예외에 도달할 때까지 생성자의 각 줄을 실행합니다. 노란색으로 강조 표시된 코드가 다음에 실행될 문입니다.
코드 탐색용 디버깅 도구
Step Over
를 눌러 강조 표시된 코드를 실행한 다음 함수가 반환되면 실행을 일시 중단합니다.실행할 다음 문은 노란색 강조 표시 및 화살표로 표시됩니다.
함수를 계속 실행하면 DynamoRevit 창에 발생한 예외가 표시됩니다. 호출 스택 창을 보면 예외가 Autodesk.Revit.CurveAPIUtils.CreateNurbsCurve
라는 메서드에서 처음 발생했음을 알 수 있습니다. 다행히도 예외는 여기에서 처리되므로 Dynamo에서 충돌이 발생하지 않았습니다. 디버깅 프로세스는 소스 코드의 다른 메서드로 이동하여 이슈에 대한 컨텍스트를 제공했습니다.
이 라이브러리는 오픈 소스 라이브러리가 아니므로 변경할 수 없습니다. 지금까지 많은 정보를 살펴보았으므로, 이제 더 많은 컨텍스트와 함께 github 이슈를 제기하여 이슈를 보고하거나 끌어오기 요청을 통해 이 이슈에 대한 해결 방법을 제안할 수 있습니다.
Walls.cs
에서 예외를 유발하는 문에 도달하면 디버깅 프로세스를 통해ProtoToRevitCurve.cs
내의 사용자 코드에서 이슈의 근본 원인에 최대한 가깝게 이동할 수 있습니다예외를 유발하는 문은
ProtoToRevitCurve.cs
입니다.호출 스택에서 예외가 비사용자 코드에서 발생하는 것을 확인할 수 있습니다.
예외에 대한 정보를 제공하는 팝업 창이 표시됩니다.
이 프로세스는 작업 중인 모든 소스 파일에 적용할 수 있습니다. Dynamo Studio용 Zero-Touch 노드 라이브러리를 개발하는 경우 라이브러리의 소스를 열고 Dynamo 프로세스를 연결하여 노드 라이브러리를 디버깅할 수 있습니다. 모든 것이 완벽하게 작동하더라도 디버깅은 코드를 탐색하고 작동 방식을 파악할 수 있는 유용한 방법입니다.
이 프로세스는 올바른 분기에 있는지 확인해야 한다는 점을 제외하면 Dynamo에 대한 변경 사항을 끌어오는 것과 거의 동일합니다. DynamoRevit 리포지토리에서 git branch
명령을 사용하여 로컬에서 사용할 수 있는 분기와 현재 체크아웃된 분기를 확인할 수 있습니다.
cd C:\Users\username\Documents\GitHub\DynamoRevit
은 현재 디렉토리를 DynamoRevit 리포지토리로 설정합니다.
git branch
는 현재 올바른 분기인 RC2.13.1_Revit2023
에 있는지 확인합니다.
git pull origin RC2.13.1_Revit2023
은 원격 원점 RC2.13.1_Revit2023
분기에서 변경 사항을 끌어옵니다.
원점은 단순히 복제한 원래 URL을 가리킵니다.
예를 들어
RC2.13.1_Revit2023
에서Revit2018
로 변경 사항을 끌어오지 않도록, 현재 어느 분기에 있고 어떤 분기에서 끌어오고 있는지 확인해야 합니다.
소스에서 Dynamo 빌드하기에 설명된 대로, 변경 사항을 DynamoRevit 리포지토리에 제출할 준비가 되면 가져오기 요청 섹션에 명시된 Dynamo 팀의 지침에 따라 끌어오기 요청을 생성할 수 있습니다.