Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Dynamo는 원래 Revit을 염두에 두고 개발되었지만, 시각적 프로그래밍 도구로서의 다재다능함은 Revit을 뛰어넘습니다. 또한 Dynamo는 Civil 3D에 통합되어 있습니다. 따라서 사용자는 토목 인프라 프로젝트를 위한 강력한 자동화 루틴을 만들 수 있습니다. 일반적인 작업부터 가장 복잡한 설계 워크플로우까지 모든 작업을 처리하는 데 매우 유용한 도구로, 궁극적으로 시간을 절약하고 설계를 최적화하며 더 나은 설계 결정을 내리는 데 도움이 됩니다. Dynamo는 Civil 3D를 위해 특별히 설계된 전체 노드 세트와 활발한 AEC 커뮤니티의 타사 라이브러리를 제공합니다.
입문서의 이 장에서는 기본 사항부터 시작하여 고급 항목에 이르기까지 Dynamo for Civil 3D에 대해 중점적으로 다룹니다.
Dynamo for Civil 3D는 토목 인프라 프로젝트에 참여하는 엔지니어 및 설계자에게 시각적 프로그래밍 패러다임을 제공합니다. Dynamo는 Civil 3D 사용자를 위한 일종의 디지털 멀티 도구로 생각하면 됩니다. 어떤 작업을 수행하든 작업에 적합한 도구를 제공합니다. 직관적인 인터페이스를 통해 코드를 한 줄도 작성하지 않고도 강력하고 사용자화 가능한 루틴을 작성할 수 있습니다. 프로그래머가 아니어도 Dynamo를 사용할 수 있지만, 프로그래머의 논리로 생각 할 수 있어야 합니다. 입문서의 다른 장과 함께, 이 장은 논리 기술을 쌓아 계산 설계 사고방식으로 어떤 작업이든 처리할 수 있도록 도와줍니다.
Dynamo는 Civil 3D 2020에서 처음 도입되었으며 그 이후 계속 발전해 왔습니다. 처음에는 소프트웨어 업데이트를 통해 별도로 설치되었지만, 이제는 모든 버전의 Civil 3D에 번들로 제공됩니다. 사용 중인 Civil 3D 버전에 따라 Dynamo 인터페이스가 이 장에 표시된 예와 약간 다르게 보일 수 있습니다. 이는 Civil 3D 2023에서 인터페이스가 크게 변경되었기 때문입니다.
Dynamo 개발에 관한 최신 정보는 Dynamo 블로그를 살펴보는 것이 좋습니다. 아래 표에는 Dynamo for Civil 3D의 수명 기간 동안의 주요 이정표가 요약되어 있습니다.
Dynamo의 많은 뛰어난 사용 사례 중 하나는 코리더 모형을 따라 개별 객체를 동적으로 배치하는 것입니다. 코리더를 따라 삽입된 조립품과 독립적인 위치에 객체를 배치해야 하는 경우가 자주 있는데, 이는 수동으로 수행하기에는 매우 지루한 작업입니다. 또한 코리더의 수평 또는 수직 형상이 변경되면 상당한 양의 재작업이 필요합니다.
외부 파일에서 데이터 읽기(이 경우 Excel)
사전에서 데이터 구성
좌표계를 사용하여 위치/축척/회전 제어
블록 참조 배치
Dynamo에서 형상 시각화
이 그래프는 Civil 3D 2020 이상 버전에서 실행됩니다.
먼저 아래의 샘플 파일을 다운로드한 다음 DWG 파일과 Dynamo 그래프를 엽니다.
Excel 파일은 Dynamo 그래프와 동일한 디렉토리에 저장하는 것이 가장 좋습니다.
이 그래프의 논리에 대한 개요는 다음과 같습니다.
Excel 파일을 읽고 Dynamo로 데이터 가져오기
지정된 코리더 기준선에서 형상선 가져오기
원하는 측점에서 코리더 형상선을 따라 좌표계 생성
좌표계를 사용하여 모형 공간에 블록 참조 배치
그럼 시작하겠습니다!
이 예제 그래프에서는 Excel 파일을 사용하여 Dynamo가 등주 블록 참조를 배치하는 데 사용할 데이터를 저장하겠습니다. 테이블의 모습은 다음과 같습니다.
외부 파일(예: Excel 파일)에서 데이터를 읽을 때 Dynamo를 사용하는 것은 훌륭한 전략이며, 특히 데이터를 다른 팀 구성원과 공유해야 하는 경우 더 그렇습니다.
Dynamo로 가져온 Excel 데이터는 다음과 같습니다.
이제 데이터가 있으므로 그래프의 나머지 부분에서 사용할 수 있도록 열(코리더, 기준선, PointCode 등)별로 데이터를 분할해야 합니다. 이 작업을 수행하는 일반적인 방법은 List.GetItemAtIndex 노드를 사용하고 원하는 각 열의 색인 번호를 지정하는 것입니다. 예를 들어, 코리더 열은 색인 0에 있고, 기준선 열은 색인 1에 있습니다.
괜찮아 보이시죠? 하지만 이 접근 방식에는 잠재적인 문제가 있습니다. 나중에 Excel 파일의 열 순서가 변경되면 어떻게 됩니까? 아니면 두 열 사이에 새 열이 추가됩니까? 그러면 그래프가 제대로 작동하지 않기 때문에 업데이트해야 합니다. Excel 열 헤더를 키 로, 나머지 데이터를 값 으로 사용하여 데이터를 사전 에 넣으면 추후에도 그래프를 사용할 수 있습니다.
사전을 처음 사용하는 경우 Dynamo의 사전 섹션을 참조하십시오.
이렇게 하면 Excel에서 열의 순서를 유연하게 변경할 수 있으므로 그래프의 탄력성이 향상됩니다. 열 헤더가 동일하게 유지되는 한, 해당 키(즉, 열 헤더)를 사용하여 사전에서 데이터를 간단히 검색할 수 있으며, 이것이 우리가 다음에 수행할 작업입니다.
이제 Excel 데이터를 가져와서 사용할 준비가 되었으므로 해당 데이터를 사용하여 Civil 3D에서 코리더 모형에 대한 몇 가지 정보를 가져와 보겠습니다.
이름으로 코리더 모형을 선택합니다.
코리더 내에서 특정 기준선을 가져옵니다.
기준선 내의 형상선을 점 코드로 가져옵니다.
이제 Excel 파일에서 지정한 측점 값으로 코리더 형상선을 따라 좌표계를 생성하겠습니다. 이러한 좌표계는 등주 블록 참조의 위치, 회전 및 축척을 정의하는 데 사용됩니다.
좌표계를 처음 사용하는 경우 벡터, 평면 및 좌표계 섹션을 참조하십시오.
여기에서는 Code Block을 사용하여 좌표계가 기준선의 어느 쪽에 있는지에 따라 좌표계를 회전합니다. 여러 노드의 시퀀스를 사용하여 이를 달성할 수도 있지만, 이것은 그냥 작성하는 것이 더 쉬운 상황임을 보여주는 좋은 예입니다.
Code Block을 처음 사용하는 경우 코드 블록과 DesignScript 섹션을 참조하십시오.
거의 다 왔습니다! 블록 참조를 실제로 배치하는 데 필요한 모든 정보를 확보했습니다. 가장 먼저 해야 할 일은 Excel 파일의 BlockName 열을 사용하여 원하는 블록 정의를 가져오는 것입니다.
여기에서 마지막 단계는 블록 참조를 작성하는 것입니다.
그래프를 실행하면 코리더를 따라 모형 공간에 새 블록 참조가 표시되는 것을 볼 수 있습니다. 그래프의 실행 모드를 자동으로 설정하고 Excel 파일을 편집하면 블록 참조가 자동으로 업데이트됩니다. 아주 멋진 기능입니다.
사용자 인터페이스 섹션에서 그래프 실행 모드에 대한 자세한 내용을 확인할 수 있습니다.
다음은 Dynamo 플레이어를 사용하여 그래프를 실행하는 예입니다.
Dynamo 플레이어를 처음 사용하는 경우 Dynamo 플레이어 섹션을 참조하십시오.
Dynamo에서 코리더 형상을 시각화하여 컨텍스트를 제공하면 도움이 될 수 있습니다. 이 특정 모형에는 모형 공간에서 이미 코리더 솔리드가 추출되어 있으므로 해당 솔리드를 Dynamo로 가져오겠습니다.
하지만 한 가지 더 고려해야 할 사항이 있습니다. 솔리드는 상대적으로 "무거운" 형상 유형이므로, 이 작업을 수행하면 그래프의 속도가 느려집니다. 솔리드를 볼지 여부를 간단하게 선택 할 수 이는 방법이 있다면 좋을 것입니다. 분명한 해답은 Corridor.GetSolids 노드의 연결을 해제하는 것이지만, 이렇게 하면 모든 다운스트림 노드에 경고가 발생하여 약간 지저분해집니다. 이 상황에서는 ScopeIf 노드가 정말 유용합니다.
Object.Geometry 노드의 맨 아래에는 회색 막대가 있습니다. 즉, 노드 미리보기가 꺼져 있으므로(노드를 마우스 오른쪽 버튼으로 클릭하여 액세스 가능) GeometryColor.ByGeometryColor가 배경 미리보기에서 다른 형상과 화면표시 우선순위를 두고 "경쟁"하는 것을 피할 수 있습니다.
ScopeIf 노드를 사용하면 기본적으로 노드의 전체 분기를 선택적으로 실행할 수 있습니다. test 입력이 false이면 ScopeIf 노드에 연결된 모든 노드가 실행되지 않습니다.
Dynamo 배경 미리보기의 결과는 다음과 같습니다.
다음은 이 그래프의 기능을 확장하는 방법에 대한 몇 가지 아이디어입니다.
Excel 파일에 회전 열을 추가하고 이를 사용하여 좌표계의 회전을 구동합니다.
필요한 경우 등주가 코리더 형상선에서 벗어날 수 있도록 Excel 파일에 수평 또는 수직 간격띄우기를 추가합니다.
측점 값이 있는 Excel 파일을 사용하는 대신, 시작 측점 및 일반적인 간격을 사용하여 Dynamo에서 직접 측점 값을 생성합니다.
클리어런스 검증을 위한 운동학적 엔벨로프를 개발하는 것은 레일 설계에서 중요한 부분입니다. 복잡한 코리더 횡단구성요소를 작성하고 관리하는 대신 Dynamo를 사용하여 엔벨로프에 사용할 솔리드를 생성할 수 있습니다.
코리더 형상선 작업
좌표계 간 형상 변환
로프트를 통한 솔리드 작성
레이싱 설정으로 노드 동작 제어
이 그래프는 Civil 3D 2020 이상 버전에서 실행됩니다.
먼저 아래의 샘플 파일을 다운로드한 다음 DWG 파일과 Dynamo 그래프를 엽니다.
이 그래프의 논리에 대한 개요는 다음과 같습니다.
지정된 코리더 기준선에서 형상선 가져오기
코리더 형상선을 따라 원하는 간격으로 좌표계 생성
프로파일 블록 형상을 좌표계로 변환
프로파일 사이에 솔리드 로프트
Civil 3D에서 솔리드 작성
그럼 시작하겠습니다!
첫 번째 단계는 코리더 데이터를 가져오는 것입니다. 이름으로 코리더 모형을 선택하고 코리더 내에서 특정 기준선을 가져온 다음, 기준선 내에서 점 코드로 형상선을 가져옵니다.
이제 지정된 시작 측점과 끝 측점 사이의 코리더 형상선을 따라 좌표계를 생성하겠습니다. 이러한 좌표계는 차량 프로파일 블록 형상을 코리더에 정렬하는 데 사용됩니다.
노드의 오른쪽 아래 모서리에 있는 작은 XXX이(가) 있습니다. 이는 노드의 레이싱 설정이 두 형상선에 대해 동일한 측점 값으로 좌표계를 생성하는 데 필요한 _외적_으로 설정되어 있음을 의미합니다.
이제 형상선을 따라 차량 프로파일의 어레이를 만들어야 합니다. 이제 Geometry.Transform 노드를 사용하여 차량 프로파일 블록 정의에서 형상을 변환하겠습니다. 이는 시각화하기 까다로운 개념이므로, 노드를 살펴보기 전에 어떤 일이 일어날지 보여주는 다음 그래픽을 확인하십시오.
따라서 기본적으로 단일 블록 정의에서 Dynamo 형상을 가져와서 이동/회전하는 동시에 형상선을 따라 어레이를 작성합니다. 아주 멋집니다! 다음은 노드 순서의 모습입니다.
이 노든 문서에서 블록 정의를 가져옵니다.
이러한 노드는 블록 내 객체의 Dynamo 형상을 가져옵니다.
이러한 노드는 기본적으로 형상을 변환하는 좌표계를 정의합니다.
마지막으로 이 노드는 형상을 변환하는 실제 작업을 수행합니다.
이 노드에서 가장 긴 레이싱을 주목합니다.
우리가 Dynamo에서 얻는 결과는 다음과 같습니다.
기쁜 소식을 전해 드립니다! 힘든 작업은 끝났습니다. 이제 프로파일 간에 솔리드를 생성하기만 하면 됩니다. Solid.ByLoft 노드를 사용하면 이 작업을 쉽게 수행할 수 있습니다.
결과는 다음과 같습니다. 이 솔리드는 Dynamo 솔리드이므로 여전히 Civil 3D에서 작성해야 합니다.
마지막 단계는 생성된 솔리드를 모형 공간으로 출력하는 것입니다. 또한 눈에 잘 띄도록 색상도 지정할 것입니다.
다음은 Dynamo 플레이어를 사용하여 그래프를 실행하는 예입니다.
다음은 이 그래프의 기능을 확장하는 방법에 대한 몇 가지 아이디어입니다.
각 트랙에 대해 다른 측점 범위를 별도로 사용할 수 있는 기능을 추가합니다.
충돌을 개별적으로 분석할 수 있도록 솔리드를 더 작은 세그먼트로 분할합니다.
엔벨로프 솔리드가 피쳐와 교차하는 확인하고 충돌하는 부분에 색상을 지정합니다.
앞서 노드는 Dynamo 그래프의 핵심 빌딩 블록이며, 라이브러리에서 논리 그룹으로 구성된다고 언급했습니다. Dynamo for Civil 3D에는 라이브러리에 정렬, 프로파일, 코리더, 블록 참조 등과 같은 AutoCAD 및 Civil 3D 객체 작업을 위한 전용 노드가 포함된 두 개의 카테고리(또는 선반)가 있습니다. 라이브러리의 나머지 부분에는 보다 일반적인 성격의 노드가 포함되어 있으며, 이러한 노드는 Dynamo의 모든 "제품"(예: Revit용 Dynamo, Dynamo Sandbox 등) 간에 일관됩니다.
코어 Dynamo 라이브러리의 노드 구성 방식에 대한 자세한 내용은 섹션을 참조하십시오.
AutoCAD 및 Civil 3D 객체 작업을 위한 특정 노드
범용 노드
별도로 설치할 수 있는 타사 패키지의 노드
AutoCAD 및 Civil 3D 선반 아래에 있는 노드를 사용하면 Dynamo 그래프가 Dynamo for Civil 3D에서만 작동합니다. Dynamo for Civil 3D 그래프를 다른 곳(예: Revit용 Dynamo)에서 열면 이러한 노드는 경고와 함께 플래그가 표시되고 실행되지 않습니다.
AutoCAD와 Civil 3D를 위한 별도의 선반이 두 개 있는 이유는 무엇입니까?
이 구성은 기본 AutoCAD 객체(선, 폴리선, 블록 참조 등)를 위한 노드와 Civil 3D 객체(선형, 코리더, 표면 등)를 위한 노드를 구분합니다. 기술적인 관점에서 볼 때 AutoCAD와 Civil 3D는 서로 다른 두 개의 제품이며, AutoCAD는 기본 응용프로그램이고 Civil 3D는 AutoCAD를 기반으로 하는 제품입니다.
AutoCAD 및 Civil 3D 노드로 작업하려면 각 선반 내의 객체 계층을 확실히 이해하는 것이 중요합니다. 생물학의 분류법인 계, 문, 강, 목, 과, 속, 종을 기억하십니까? AutoCAD 및 Civil 3D 객체도 유사한 방식으로 분류됩니다. 몇 가지 예를 통해 설명하겠습니다.
예로 선형을 사용하겠습니다.
선형의 이름을 변경하는 것이 목표라고 가정해 보겠습니다. 여기에서 다음으로 추가할 노드는 CivilObject.SetName 노드입니다.
처음에는 직관적이지 않은 것처럼 보일 수 있습니다. CivilObject란 무엇이며, 라이브러리에 Alignment.SetName 노드가 없는 이유는 무엇입니까? 이 질문에 대한 답은 재사용 가능성 및 단순성 과 관련이 있습니다. 생각해 보면, Civil 3D 객체의 이름을 변경하는 절차는 객체가 선형, 코리더, 프로파일이든 다른 어떤 것이든 관계없이 동일합니다. 따라서 본질적으로 모두 동일한 작업을 수행하는 반복 노드(예: Alignment.SetName, Corridor.SetName, Profile.SetName 등)를 사용하는 대신, 해당 기능을 단일 노드로 묶는 것이 좋습니다. 이것이 바로 CivilObject.SetName의 기능입니다!
이에 대해 생각해 볼 수 있는 또 다른 방법은 관계 의 관점에서 생각해 보는 것입니다. 사과와 배가 모두 과일의 종류인 것처럼 선형과 코리더는 모두 Civil 객체의 유형입니다. 사과와 배 모두 껍질을 벗길 때 하나의 껍질 벗기는 도구를 사용하는 것처럼, Civil 객체 노드는 모든 유형의 Civil 객체에 적용됩니다. 과일 종류마다 껍질 벗기는 도구가 따로 있다면 주방은 꽤 지저분해질 것입니다! 그런 의미에서 Dynamo 노드 라이브러리는 주방과 같습니다.
이제 한 단계 더 나아가 보겠습니다. 정렬의 도면층을 변경한다고 가정합니다. 사용할 노드는 Object.SetLayer 노드입니다.
CivilObject.SetLayer라는 노드가 없는 이유는 무엇입니까? 앞서 언급한 재사용 가능성 및 단순성의 원칙이 여기에도 동일하게 적용됩니다. 도면층 특성은 선, 폴리선, 문자, 블록 참조 등 그리거나 삽입할 수 있는 AutoCAD의 모든 객체에 공통적으로 적용되는 특성입니다. 선형 및 코리더와 같은 Civil 3D 객체는 동일한 카테고리에 속하므로 객체에 적용되는 모든 노드는 모든 Civil 객체에도 사용할 수 있습니다.
파이프 및 구조물을 관망에 추가할 때 Civil 3D는 템플릿을 사용하여 자동으로 이름을 지정합니다. 일반적으로 초기 배치 시에는 이 정도면 충분하지만 향후 설계가 진행됨에 따라 불가피하게 이름을 변경해야 할 수도 있습니다. 또한 가장 먼 다운스트림 구조물에서 시작하여 관로 내에서 순차적으로 구조물의 이름을 지정하거나 로컬 에이전시의 데이터 스키마에 맞는 이름 지정 패턴을 따르는 등 다양한 이름 지정 패턴이 필요할 수 있습니다. 이 예에서는 Dynamo를 사용하여 모든 유형의 이름 지정 전략을 정의하고 일관되게 적용하는 방법을 보여 줍니다.
경계 상자 작업
List.FilterByBoolMask 노드를 사용하여 데이터 필터링
List.SortByKey 노드를 사용하여 데이터 정렬
문자열 생성 및 수정
이 그래프는 Civil 3D 2020 이상 버전에서 실행됩니다.
먼저 아래의 샘플 파일을 다운로드한 다음 DWG 파일과 Dynamo 그래프를 엽니다.
이 그래프의 논리에 대한 개요는 다음과 같습니다.
도면층별 구조물 선택
구조물 위치 가져오기
간격띄우기를 기준으로 구조물을 필터링한 다음 측점을 기준으로 정렬
새 이름 생성
구조물 이름 바꾸기
그럼 시작하겠습니다!
가장 먼저 해야 할 일은 작업할 모든 구조물을 선택하는 것입니다. 특정 도면층에서 모든 객체를 선택하기만 하면 되므로, 다른 관망에서 구조물을 선택할 수 있습니다(동일한 도면층을 공유한다고 가정할 때).
이 노드를 사용하면 구조물과 동일한 도면층을 공유할 수 있는, 원하지 않는 객체 유형을 실수로 검색하지 않을 수 있습니다.
이제 구조물이 준비되었으므로 공간에서 구조물의 위치를 파악하여 위치에 따라 구조물을 정렬해야 합니다. 이를 위해 각 객체의 경계 상자를 활용하겠습니다. 객체의 경계 상자는 객체의 기하학적 범위를 완전히 포함하는 최소 크기의 상자입니다. 경계 상자의 중심을 계산하면 구조물 삽입점에 대한 근사치를 꽤 정확하게 구할 수 있습니다.
이러한 점을 사용하여 선택한 선형을 기준으로 구조물의 측점 및 간격띄우기를 구할 것입니다.
여기서부터 작업이 조금 까다로워지기 시작합니다. 이 단계에서는 도면층에 지정한 모든 구조물의 큰 리스트가 있고 이를 정렬할 선형을 선택했습니다. 문제는 리스트에 이름을 바꾸고 싶지 않은 구조물이 있을 수 있다는 것입니다. 예를 들어, 그러한 구조물은 관심 있는 특정 실행의 일부가 아닐 수 있습니다.
선택한 선형
이름을 바꾸려는 구조물
무시해야 하는 구조물
따라서 선형에서 특정 간격띄우기보다 큰 구조물은 고려하지 않도록 구조물 리스트를 필터링해야 합니다. 이 작업은 List.FilterByBoolMask 노드를 사용하여 수행하는 것이 가장 좋습니다. 구조물 리스트를 필터링한 후 List.SortByKey 노드를 사용하여 측점 값을 기준으로 구조물을 정렬합니다.
구조물의 간격띄우기가 임계값보다 작은지 확인
Null 값을 false 로 대치
구조물 및 측점 리스트 필터링
측점별로 구조물 정렬
마지막으로 해야 할 작업은 구조물의 이름을 새로 생성하는 것입니다. 사용할 형식은 <alignment name>-STRC-<number>
입니다. 원하는 경우 숫자를 0으로 채울 수 있는 몇 가지 추가 노드가 있습니다(예: "1" 대신 "01").
마지막으로, 구조물 이름을 바꾸겠습니다.
다음은 Dynamo 플레이어를 사용하여 그래프를 실행하는 예입니다.
최종 결과 대신 그래프의 중간 출력을 시각화하기 위해 Dynamo의 3D 배경 미리보기를 활용하는 것이 도움이 될 수 있습니다. 한 가지 쉬운 방법은 구조물의 경계 상자를 보여주는 것입니다. 또한 이 특정 데이터세트에는 문서에 코리더가 있으므로 코리더 형상선 형상을 Dynamo로 가져와서 구조물이 공간에서 어디에 위치하는지에 대한 컨텍스트를 제공할 수 있습니다. 코리더가 없는 데이터세트에서 그래프를 사용하는 경우 이러한 노드는 아무 작업도 수행하지 않습니다.
이제 간격띄우기를 기준으로 구조를 필터링하는 프로세스가 작동하는 방식을 더 잘 이해할 수 있습니다.
다음은 이 그래프의 기능을 확장하는 방법에 대한 몇 가지 아이디어입니다.
특정 선형을 선택하는 대신 가장 가까운 선형을 기준으로 구조물의 이름을 바꿉니다.
구조물 외에 파이프의 이름을 바꿉니다.
해당 실행을 기준으로 구조물의 도면층을 설정합니다.
Civil 3D 버전 | Dynamo 버전 | 주 |
---|---|---|
코리더를 따라 Excel 파일에 지정된 측점 값에 등주 블록 참조를 배치합니다.
작업을 완료했습니다!
차량 프로파일 블록을 사용하여 코리더를 따라 클리어런스 엔벨로프 3D 솔리드를 생성합니다.
좌표계를 처음 사용하는 경우 섹션을 참조하십시오.
노드 레이싱을 처음 사용하는 경우 섹션을 참조하십시오.
Dynamo 플레이어를 처음 사용하는 경우 섹션을 참조하십시오.
작업을 완료했습니다!
선형의 측점 표시를 기반으로 관망 구조물의 이름을 순서대로 바꿉니다.
리스트 작업을 처음 해보는 경우 섹션을 참조하십시오.
Dynamo 플레이어를 처음 사용하는 경우 섹션을 참조하십시오.
작업을 완료했습니다!
2024.1
2.18
2024
2.17
Dynamo 플레이어 사용자 인터페이스 업데이트
2023.2
2.15
2023
2.13
Dynamo 사용자 인터페이스 업데이트
2022.1
2.12
객체 바인딩 데이터 저장소 설정 추가
객체 바인딩 제어를 위한 새로운 노드 추가
2022
2.10
기본 Civil 3D 설치에 포함됨
IronPython에서 Python.NET으로 전환
2021
2.5
2020.2
2.4
2020 Update 2
2.4
새로운 노드 추가
2020.1
2.2
2020
2.1
초기 릴리즈
시간이 지나면 기본 사항을 넘어서고 Dynamo의 내부 작업을 깊이 있게 익힐 수 있습니다. 이 섹션의 페이지에서는 그래프를 한 단계 더 높은 수준으로 끌어올릴 수 있도록 Dynamo for Civil 3D의 고급 기능을 사용할 수 있는 방법을 제공합니다.
Dynamo for Civil 3D에는 각 노드에서 작성된 객체를 "기억"하는 매우 강력한 메커니즘이 포함되어 있습니다. 이 메커니즘을 객체 바인딩이라고 하며, 이를 통해 동일한 문서에서 실행될 때마다 Dynamo 그래프가 일관된 결과를 생성할 수 있습니다. 객체 바인딩은 많은 상황에서 사용하기에 매우 바람직하지만, Dynamo의 동작을 보다 잘 제어하고 싶은 다른 상황도 있을 수 있습니다. 이 섹션에서는 객체 바인딩의 작동 방식과 객체 바인딩을 활용하는 방법을 설명합니다.
현재 도면층의 모형 공간에 원을 작성하는 이 그래프를 살펴보겠습니다.
반지름이 변경되면 어떻게 되는지 확인하십시오.
이것이 바로 객체 바인딩이 작동하는 방식입니다. Dynamo의 기본 동작은 반지름 입력이 변경될 때마다 새 원을 작성하는 것이 아니라 원의 반지름을 수정 하는 것입니다. 이는 그래프가 실행될 때마다 Object.ByGeometry 노드가 이 특정 원을 작성한 것을 "기억"하기 때문입니다. 또한 Dynamo는 이 정보를 저장하여 다음번에 Civil 3D 문서를 열고 그래프를 실행할 때 정확히 동일한 동작을 수행합니다.
Dynamo의 기본 객체 바인딩 동작을 변경할 수 있는 예를 살펴보겠습니다. 문자를 원 가운데에 배치하는 그래프를 작성한다고 가정해 보겠습니다. 그러나 이 그래프의 의도는 반복해서 실행하고 선택한 원에 대해 매번 새로운 문자를 배치할 수 있다는 것입니다. 다음은 그래프의 모습입니다.
그러나 실제로는 다른 원을 선택하면 이렇게 됩니다.
그래프를 실행할 때마다 문자가 삭제되고 다시 생성되는 것처럼 보입니다. 실제로는 선택하는 원에 따라 문자의 위치가 수정 됩니다. 따라서 다른 위치에 있을 뿐 동일한 문자입니다! 매번 새로운 문자를 작성하려면 바인딩 데이터가 유지되지 않도록 Dynamo의 객체 바인딩 설정을 수정해야 합니다(아래의 #binding-settings 참조).
이렇게 변경한 후에 원하는 동작을 얻게 됩니다.
Dynamo for Civil 3D에서는 Dynamo 메뉴의 바인딩 데이터 저장소 설정을 통해 기본 객체 바인딩 동작을 수정할 수 있습니다.
바인딩 데이터 저장소 옵션은 Civil 3D 2022.1 이상 버전에서 사용할 수 있습니다.
모든 옵션은 기본적으로 사용하도록 설정되어 있습니다. 다음은 각 옵션의 기능에 대한 요약입니다.
이 옵션을 사용하면 Dynamo는 그래프를 마지막으로 실행했을 때 작성한 객체를 "잊어버립니다". 따라서 그래프는 어떤 상황의 어떤 도면에서도 실행될 수 있으며 매번 새로운 개체를 작성합니다.
사용해야 하는 경우
Dynamo가 이전 실행에서 수행한 모든 작업을 "잊어버리고" 매번 새로운 객체를 작성하도록 하려면 이 옵션을 사용합니다.
이 옵션을 사용하면 객체 바인딩 메타데이터가 저장될 때 그래프(.dyn 파일)로 직렬화됩니다. 그래프를 닫았다가 다시 열고 동일한 도면 에서 실행하면 모든 것이 그래프를 닫았을 때와 동일하게 작동합니다. 다른 도면 에서 그래프를 실행하면 바인딩 데이터가 그래프에서 제거되고 새로운 객체가 작성됩니다. 즉, 원본 도면을 열고 그래프를 다시 실행하면 이전 객체와 함께 새로운 객체가 작성됩니다.
사용해야 하는 경우
이 옵션은 Dynamo가 특정 도면 에서 마지막으로 실행될 때 작성한 객체를 "기억"하도록 하려는 경우에 사용합니다.
이 옵션은 특정 도면 과 Dynamo 그래프 간에 1:1 관계를 유지할 수 있는 상황에 가장 적합합니다. 옵션 1과 3은 여러 도면에서 실행되도록 설계된 그래프에 더 적합합니다.
이 옵션은 객체 바인딩 데이터가 그래프(.dyn 파일) 대신 도면에서 직렬화된다는 점을 제외하고 옵션 2와 유사합니다. 그래프를 닫았다가 다시 열고 동일한 도면 에서 실행하면 모든 것이 그래프를 닫았을 때와 동일하게 작동합니다. 다른 도면 에서 그래프를 실행하는 경우 그래프가 아닌 도면에 저장되기 때문에 바인딩 데이터는 원래 도면에 그대로 유지됩니다.
사용해야 하는 경우
이 옵션은 여러 도면 에서 동일한 그래프를 사용하고 Dynamo가 각 도면에서 수행한 작업을 "기억"하도록 하려는 경우에 사용합니다.
이 옵션을 사용할 때 가장 먼저 주목해야 할 점은 기본 Dynamo 인터페이스를 통해 그래프를 실행할 때 그래프가 도면과 상호 작용하는 방식에 영향을 미치지 않는다는 것입니다. 이 옵션은 Dynamo 플레이어를 사용하여 그래프를 실행할 때_만_ 적용됩니다.
Dynamo 플레이어를 처음 사용하는 경우 Dynamo 플레이어 섹션을 참조하십시오.
기본 Dynamo 인터페이스를 사용하여 그래프를 실행한 다음 닫고 Dynamo 플레이어를 사용하여 동일한 그래프를 실행하면 이전에 작성한 객체 위에 새로운 객체가 작성됩니다. 그러나 Dynamo 플레이어에서 그래프가 한 번 실행되면 도면의 객체 바인딩 데이터가 직렬화됩니다. 따라서 Dynamo 플레이어를 통해 그래프를 여러 번 실행하면 새로운 객체가 작성되지 않고 객체가 업데이트됩니다. Dynamo 플레이어를 통해 다른 도면 에서 그래프를 실행하면 바인딩 데이터는 그래프가 아닌 도면에 저장되기 때문에 원래 도면에 유지됩니다.
사용해야 하는 경우
여러 도면에서 Dynamo 플레이어를 사용하여 그래프를 실행하고 Dynamo 플레이어가 각 도면에서 수행한 작업을 "기억"하도록 하려는 경우에 이 옵션을 사용합니다.
도로, 철도, 토지, 공공 설비, 측량, GIS...
토목 인프라는 이 모든 것, 그리고 더 많은 것을 포함합니다! 이 섹션에는 Dynamo를 숙달하고 Dynamo for Civil 3D를 최대한 활용하는 데 도움이 되는 실용적이고 관련 있는 몇 가지 예제 그래프가 포함되어 있습니다. 각 그래프에는 그래프를 작성하는 데 사용된 논리에 대한 자세한 설명이 함께 제공되므로 그래프를 사용할 수 있을 뿐만 아니라 이해 도 할 수 있습니다.
또한 이러한 예제에는 강력한 그래프를 작성하기 위해 오랜 시간 동안 검증된 모범 사례가 구현되어 있습니다. 예제를 살펴보면서 강력하고 유연하며 유지 관리가 용이한 그래프를 작성하는 방법에 대한 더 많은 아이디어를 얻으려면 모범 사례 섹션을 숙지하는 것이 좋습니다.
Civil 3D에서 COGO 점 및 점 그룹으로 작업하는 것은 많은 필드-마감 프로세스의 핵심 요소입니다. 이 예제에서는 데이터 관리와 관련하여 Dynamo가 매우 유용할 수 있는 잠재적인 사용 사례 하나를 보여드리겠습니다.
리스트 작업
List.GroupByKey 노드로 유사 객체 그룹화
Dynamo 플레이어에 사용자 출력 표시
이 그래프는 Civil 3D 2020 이상 버전에서 실행됩니다.
먼저 아래의 샘플 파일을 다운로드한 다음 DWG 파일과 Dynamo 그래프를 엽니다.
이 그래프의 논리에 대한 개요는 다음과 같습니다.
문서의 모든 COGO 점 가져오기
설명별로 COGO 점 그룹화
점 그룹 작성
Dynamo 플레이어에 요약 출력
그럼 시작하겠습니다!
첫 번째 단계는 문서의 모든 점 그룹을 가져온 다음 각 그룹 내의 모든 COGO 점을 가져오는 것입니다. 그러면 내포된 리스트 또는 "리스트의 리스트"가 생성되며, List.Flatten 노드를 사용하여 모든 것을 단일 리스트로 단순화하면 나중에 작업하기가 더 쉬워집니다.
이제 모든 COGO 점이 있으므로 해당 설명을 기준으로 점을 그룹으로 분리해야 합니다. 이것이 바로 List.GroupByKey 노드의 역할입니다. 이 노드는 기본적으로 동일한 키를 공유하는 모든 항목을 그룹화합니다.
힘든 작업은 끝났습니다! 마지막 단계는 그룹화된 COGO 점에서 새 Civil 3D 점 그룹을 작성하는 것입니다.
그래프를 실행할 때, 우리는 형상에 대한 작업을 하지 않을 것이기 때문에 Dynamo 배경 미리보기에 아무것도 표시되지 않습니다. 따라서 그래프가 제대로 실행되는지 확인할 수 있는 유일한 방법은 도구공간을 확인하거나 노드 출력 미리보기를 보는 것입니다. 그러나 Dynamo 플레이어를 사용하여 그래프를 실행하면 작성된 점 그룹에 대한 요약을 출력하여 그래프 결과에 대해 더 많은 피드백을 제공할 수 있습니다. 노드를 마우스 오른쪽 버튼으로 클릭하고 Is Output 으로 설정하기만 하면 됩니다. 이 경우 이름이 변경된 Watch 노드를 사용하여 결과를 확인합니다.
다음은 Dynamo 플레이어를 사용하여 그래프를 실행하는 예입니다.
다음은 이 그래프의 기능을 확장하는 방법에 대한 몇 가지 아이디어입니다.
초기 정보 대신 ** 전체 설명**을 기반으로 점 그룹을 수정합니다.
선택한 몇 가지 다른 사전 정의된 카테고리(예: "Ground shots", "Monuments" 등)로 점을 그룹화합니다.
특정 그룹의 점에 대한 TIN 지표면을 자동으로 작성합니다.
Dynamo는 도구로서 매우 강력하지만 노드 및 와이어를 넘어 문자 형식으로 코드를 작성하는 것도 가능합니다. 이 작업은 다음과 같은 두 가지 방법으로 수행할 수 있습니다.
Code Block을 사용하여 DesignScript 쓰기
Python 노드를 사용하여 Python 쓰기
이 섹션에서는 Civil 3D 환경에서 Python을 활용하여 AutoCAD 및 Civil 3D .NET API를 활용하는 방법에 대해 중점적으로 설명합니다.
Dynamo에서 Python을 사용하는 방법에 대한 보다 일반적인 정보는 섹션을 참조하십시오.
AutoCAD와 Civil 3D에는 여러분과 같은 개발자가 사용자 지정 기능으로 핵심 제품을 확장할 수 있는 여러 API가 있습니다. Dynamo의 컨텍스트에서 관련성이 있는 것은 관리되는 .NET API입니다. 다음 링크는 API의 구조 및 작동 방식을 이해하는 데 필수적입니다.
이 섹션을 진행하면서 데이터베이스, 트랜잭션, 메서드, 특성 등 익숙하지 않은 개념이 접할 수 있습니다. 이러한 개념 중 대부분은 .NET API 작업의 핵심이며 Dynamo 또는 Python에만 국한되지 않습니다. 이러한 항목에 대해 자세히 설명하는 것은 이 입문서 섹션의 범위를 벗어나는 것이므로 더 자세한 내용은 위의 링크를 자주 참조하는 것이 좋습니다.
새 Python 노드를 처음 편집하면 시작할 수 있도록 템플릿 코드가 미리 채워져 있습니다. 아래에는 각 블록에 대한 설명과 함께 템플릿을 분석한 내용이 나와 있습니다.
sys
및clr
모듈을 가져옵니다. 둘 다 Python 인터프리터가 제대로 작동하는 데 필요합니다. 특히clr
모듈을 사용하면 .NET 네임스페이스를 기본적으로 Python 패키지로 처리할 수 있습니다.AutoCAD 및 Civil 3D를 위한 관리되는 .NET API로 작업하기 위한 표준 어셈블리(예: DLL)를 로드합니다.
표준 AutoCAD 및 Civil 3D 네임스페이스에 참조를 추가합니다. 이는 각각 C# 또는 VB.NET의
using
또는Imports
지시어와 동일합니다.노드의 입력 포트에는
IN
라는 사전 정의된 리스트를 사용하여 액세스할 수 있습니다. 색인 번호를 사용하여 특정 포트의 데이터에 액세스할 수 있습니다(예:dataInFirstPort = IN[0]
).활성 문서 및 편집기를 가져옵니다.
문서를 잠그고 데이터베이스 트랜잭션을 시작합니다.
여기에 스크립트 논리의 대부분을 배치해야 합니다.
주 작업이 완료된 후 이 행의 주석을 해제하여 트랜잭션을 커밋합니다.
노드에서 데이터를 출력하려면 스크립트 끝에 있는
OUT
변수에 데이터를 지정합니다.
사용자화하시겠습니까?
C:\ProgramData\Autodesk\C3D <version>\Dynamo
에 있는 PythonTemplate.py
파일을 편집하여 기본 Python 템플릿을 수정할 수 있습니다.
예제를 통해 Dynamo for Civil 3D에서 Python 스크립트를 작성하는 데 필요한 몇 가지 기본 개념을 살펴보겠습니다.
다음은 이 연습에서 참조할 수 있는 예제 파일입니다.
이 그래프의 논리에 대한 개요는 다음과 같습니다.
Civil 3D API 문서 검토
문서에서 도면층 이름별로 모든 유역 선택
Dynamo 객체를 "언래핑"하여 내부 Civil 3D API 멤버에 액세스
AutoCAD 점에서 Dynamo 점 작성
점에서 PolyCurve 작성
그럼 시작하겠습니다!
이제 그래프 논리 작성을 시작할 수 있습니다. 가장 먼저 해야 할 일은 문서에 있는 모든 유역 리스트를 가져오는 것입니다. 이를 위해 사용할 수 있는 노드가 있으므로 Python 스크립트에 포함할 필요가 없습니다. 노드를 사용하면 그래프를 읽을 수 있는 다른 사람에게 더 나은 가시성을 제공할 수 있습니다(Python 스크립트에 많은 코드를 묻어두는 것에 비해). 또한 Python 스크립트가 유역의 경계 점을 반환하는 한 가지 작업에 집중할 수 있도록 해줍니다.
여기서 All Objects on Layer 노드의 출력은 CivilObjects 목록입니다. 이는 현재 Dynamo for Civil 3D에 유역 작업을 위한 노드가 없기 때문이며, 이것이 바로 Python을 통해 API에 액세스해야 하는 이유입니다.
경험상 일반적으로 InternalObjectId
특성을 사용하여 객체 ID를 가져온 다음 트랜잭션에서 래핑된 객체에 액세스하는 것이 더 안전합니다. 이는 InternalDBObject
특성이 쓰기 가능 상태가 아닌 AutoCAD DBObject를 반환하기 때문입니다.
다음은 내부 유역 객체에 액세스하는 작업을 수행하는 완전한 Python 스크립트가 해당 경계 점을 가져오는 것입니다. 강조 표시된 행은 기본 템플릿 코드에서 수정/추가된 행을 나타냅니다.
각 행에 대한 설명을 보려면 스크립트에서 밑줄이 있는 문자를 클릭합니다.
경험상 스크립트 논리의 대부분은 트랜잭션 내에 포함하는 것이 가장 좋습니다. 이렇게 하면 스크립트가 읽기/쓰기 중인 객체에 안전하게 액세스할 수 있습니다. 대부분의 경우 트랜잭션을 생략하면 치명적 오류가 발생할 수 있습니다.
이 단계에서 Python 스크립트는 배경 미리보기에서 볼 수 있는 Dynamo 점 리스트를 출력해야 합니다. 마지막 단계는 점에서 PolyCurve를 만드는 것입니다. 이 작업은 Python 스크립트에서 직접 수행할 수도 있지만, 더 잘 보이도록 의도적으로 스크립트 외부의 노드에 배치했습니다. 최종 그래프의 모습은 다음과 같습니다.
최종 Dynamo 형상은 다음과 같습니다.
마무리하기 전에 간단히 한 가지 더 알려드리겠습니다. 사용 중인 Civil 3D 버전에 따라 Python 노드가 다르게 구성될 수 있습니다. Civil 3D 2020 및 2021에서 Dynamo는 IronPython이라는 도구를 사용하여 .NET 객체와 Python 스크립트 간에 데이터를 이동했습니다. 그러나 Civil 3D 2022에서는 Dynamo가 Python 3을 사용하는 대신 표준 기본 Python 인터프리터(CPython)를 사용하도록 전환되었습니다. 이러한 전환의 이점으로는 널리 사용되는 최신 라이브러리와 새로운 플랫폼 기능, 필수 유지보수 및 보안 패치에 대한 액세스가 포함됩니다.
이 행은 Dynamo 형상 라이브러리에서 필요한 특정 클래스를 가져옵니다. import *
는 명명 충돌을 유발할 수 있으므로, 여기서는 import Point as DynPoint
를 지정합니다.
여기서는 모든 입력의 전체 리스트를 참조하는 기본 IN
대신 원하는 데이터가 포함되어 있는 입력 포트를 정확하게 지정합니다.
Dynamo 플레이어는 Civil 3D에서 Dynamo 그래프를 실행하는 간단한 방법을 제공합니다. 그래프가 작성되면 플레이어를 사용하고 그래프를 실행하는 데 Dynamo에 대한 전문 지식이 필요하지 않습니다. 플레이어를 사용하면 노드 및 와이어의 세부 사항을 알아보는 데 관심이 없을 수 있는 다른 사람들과 그래프를 쉽게 공유할 수 있습니다.
Civil 3D의 Dynamo 플레이어에 대한 자세한 내용은 사이트에서 제공하는 문서를 참조하십시오.
이제 큰 그림에 대해 조금 더 알게 되었으니, 바로 Civil 3D에서 첫 번째 Dynamo 그래프를 작성해 보겠습니다!
이 예는 기본적인 Dynamo 기능을 보여주기 위한 간단한 예입니다. 비어 있는 새 Civil 3D 문서에서 단계별로 작업하는 것이 좋습니다.
가장 먼저 Civil 3D에서 빈 문서를 엽니다. 빈 문서에서 Civil 3D 리본의 관리 탭으로 이동하여 시각적 프로그래밍 패널을 찾습니다.
Dynamo 버튼을 클릭합니다. 그러면 별도의 창에서 Dynamo가 실행합니다.
Dynamo와 Dynamo 플레이어 간의 차이점은 무엇입니까?
Dynamo는 그래프를 작성하고 실행하는 데 사용됩니다. Dynamo 플레이어는 Dynamo에서 열지 않고도 그래프를 실행할 수 있는 간편한 방법입니다.
Dynamo가 열리면 시작 화면이 표시됩니다. 새로 만들기를 클릭하여 빈 작업공간을 엽니다.
샘플은 어떻습니까?
이제 빈 작업공간이 표시됩니다. Dynamo가 실제로 작동하는 모습을 살펴보겠습니다! 목표는 다음과 같습니다.
아주 간단합니다. 하지만 시작하기 전에 몇 가지 기본 사항을 검토해야 합니다.
Dynamo 그래프의 핵심 빌딩 블록을 노드라고 합니다. 노드는 작은 기계와 같아서 데이터를 입력하면 해당 데이터에 대해 몇 가지 작업을 수행한 후 결과를 출력합니다. Dynamo for Civil 3D에는 하나의 노드만으로는 할 수 없는 더 크고 더 나은 작업을 수행하는 그래프를 작성할 수 있는, 와이어로 연결 가능한 노드 라이브러리가 있습니다.
이전에 Dynamo를 사용해 본 적이 없다면 어떻게 해야 합니까?
일부 내용은 매우 생소할 수 있지만, 괜찮습니다! 다음과 같은 섹션이 도움이 될 것입니다.
그럼, 그래프를 작성해 보겠습니다. 다음은 필요한 모든 노드의 리스트입니다.
라이브러리의 검색 막대에 해당 이름을 입력하거나 캔버스에서 아무 곳이나 마우스 오른쪽 버튼으로 클릭하고 검색하면 이러한 노드를 찾을 수 있습니다.
어떤 노드를 사용해야 하는지, 그러한 노드를 어디에서 찾을 수 있는지 어떻게 알 수 있습니까?
최종 그래프의 모습은 다음과 같습니다.
지금까지 수행한 작업을 요약해 보겠습니다.
작업할 문서를 선택했습니다. 이 경우(그리고 많은 경우) Civil 3D의 활성 문서에서 작업합니다.
문자 객체를 작성해야 하는 대상 블록(이 경우에는 모델 공간)을 정의했습니다.
String 노드를 사용하여 문자를 배치할 도면층을 지정했습니다.
문자가 배치될 위치를 정의하기 위해 Point.ByCoordinates 노드를 사용하여 점을 작성했습니다.
두 개의 Number Slider 노드를 사용하여 문자 삽입점의 X 및 Y 좌표를 정의했습니다.
또 다른 String 노드를 사용하여 문자 객체의 컨텐츠를 정의했습니다.
마지막으로 문자 객체를 작성했습니다.
멋지게 작성된 새 그래프의 결과를 확인해 보겠습니다!
Civil 3D로 돌아가서 모델 탭이 선택되어 있는지 확인합니다. Dynamo에서 작성한 새 문자 객체가 표시됩니다.
문자가 표시되지 않으면 ZOOM -> EXTENTS 명령을 실행하여 오른쪽 스폿으로 줌해야 할 수 있습니다.
좋습니다! 이제 문자를 약간 업데이트해 보겠습니다.
Dynamo 그래프로 돌아가서 문자열, 삽입점 좌표 등 몇 가지 입력 값을 변경합니다. Civil 3D에서 문자가 자동으로 업데이트되는 것을 볼 수 있습니다. 또한 입력 포트 중 하나를 분리하면 문자가 제거됩니다. 모든 항목을 다시 연결하면 문자가 다시 생성됩니다.
그래프가 실행될 때마다 Dynamo가 새 문자 객체를 삽입하지 않는 이유는 무엇입니까?
이 예시는 Dynamo for Civil 3D로 수행할 수 있는 작업의 일부에 불과합니다. 자세히 알아보려면 계속 읽어 보십시오!
일반적인 주택 개발의 엔지니어링 설계에는 위생 하수, 강우 배수, 식수 등 여러 지하 공공 설비와 관련된 작업이 포함됩니다. 이 예에서는 Dynamo를 사용하여 분배 본관에서 지정된 로트(예: 구획)로 서비스 연결을 그릴 수 있는 방법을 보여 줍니다. 일반적으로 모든 로트에서 서비스 연결이 필요하므로 모든 서비스를 배치하는 데 상당히 지루한 작업을 하게 됩니다. Dynamo는 필요한 형상을 정밀하게 자동으로 그리는 것은 물론 현지 에이전시 표준에 맞게 조정할 수 있는 유연한 입력을 제공하여 프로세스 속도를 높일 수 있습니다.
사용자 입력을 위한 객체 선택 노드 사용
좌표계 관련 작업
Geometry.DistanceTo 및 Geometry.ClosestPointTo와 같은 기하학적 연산 사용
블록 참조 작성
객체 바인딩 설정 제어
이 그래프는 Civil 3D 2020 이상 버전에서 실행됩니다.
먼저 아래의 샘플 파일을 다운로드한 다음 DWG 파일과 Dynamo 그래프를 엽니다.
이 그래프의 논리에 대한 개요는 다음과 같습니다.
분배 본관에 대한 곡선 형상 가져오기
사용자가 선택한 로트 선에 대한 곡선 형상 가져오기(필요한 경우 반전)
서비스 계량기에 대한 삽입점 생성
서비스 계량기 위치에서 가장 가까운 분배 본관의 점 가져오기
모형 공간에서 블록 참조 및 선 작성
그럼 시작하겠습니다!
첫 번째 단계는 분배 본관에 대한 형상을 Dynamo로 가져오는 것입니다. 개별 선 또는 폴리선을 선택하는 대신, 특정 도면층에 있는 모든 객체를 가져와서 Dynamo PolyCurve로 결합합니다.
다음으로, 선택한 로트 선의 형상을 Dynamo로 가져와서 작업할 수 있도록 해야 합니다. 이 작업에 적합한 도구는 그래프 사용자가 Civil 3D에서 특정 객체를 선택할 수 있는 객체 선택 노드입니다.
또한 발생할 수 있는 잠재적인 문제도 처리해야 합니다. 로트 선에는 시작점과 끝점이 있으며, 이는 로트 선에 방향이 있음을 의미합니다. 그래프가 일관된 결과를 생성하려면 모든 로트 선의 방향이 일관되어야 합니다. 그래프 논리에서 이 조건을 직접 고려할 수 있으므로, 그래프의 탄력성이 향상됩니다.
로트 선의 시작점과 끝점을 가져옵니다.
각 점에서 분배 본관까지의 거리를 측정한 다음 어느 거리가 더 긴지 파악합니다.
원하는 결과는 선의 시작점이 분배 본관에 가장 가까운 것입니다. 그렇지 않으면 로트 선의 방향을 반전합니다. 그 외에는 원래 로트 선을 반환합니다.
이제 서비스 계량기를 어디에 배치할지 결정할 차례입니다. 일반적으로 현지 에이전시 요구 사항에 따라 배치가 결정되므로 다양한 조건에 맞게 변경할 수 있는 입력 값만 제공합니다. 점을 만들기 위한 참조로 로트 선을 따라 좌표계를 사용하겠습니다. 이렇게 하면 로트 선의 방향에 관계없이 로트 선을 기준으로 간격띄우기를 쉽게 정의할 수 있습니다.
이제 서비스 계량기 위치에서 가장 가까운 분배 본관에 점을 확보해야 합니다. 이렇게 하면 모형 공간에 서비스 연결을 그려서 항상 분배 본관에 수직이 되도록 할 수 있습니다. Geometry.ClosestPointTo 노드는 완벽한 솔루션입니다.
이것은 분배 본관 PolyCurve입니다.
이것은 서비스 계량기 삽입점입니다.
마지막 단계는 모형 공간에서 실제로 객체를 작성하는 것입니다. 이전에 생성한 삽입점을 사용하여 블록 참조를 생성한 다음 분배 본관에 있는 점을 사용하여 서비스 연결에 대한 선을 그립니다.
그래프를 실행하면 모형 공간에 새 블록 참조 및 서비스 연결선이 표시됩니다. 일부 입력을 변경하고 모든 항목이 자동으로 업데이트되는지 확인해 보십시오!
하나의 로트 선에 객체를 배치한 후 다른 로트 선을 선택하면 객체가 "이동"되는 것을 볼 수 있습니다.
이는 Dynamo의 기본 동작이고, 대부분의 경우 매우 유용합니다. 그러나 여러 서비스 연결을 순차적으로 배치하고 원래 객체를 수정하는 대신 실행할 때마다 Dynamo가 새 객체를 작성하도록 하고자 할 수 있습니다. 이 동작은 객체 바인딩 설정을 변경하여 제어할 수 있습니다.
이 설정을 변경하면 Dynamo가 실행할 때마다 작성하는 객체를 "잊어버립니다". 다음은 Dynamo 플레이어를 사용하여 객체 바인딩을 끈 상태에서 그래프를 실행하는 예입니다.
다음은 이 그래프의 기능을 확장하는 방법에 대한 몇 가지 아이디어입니다.
각 로트 선을 선택하는 대신 여러 개의 서비스 연결을 동시에 배치합니다.
입력을 조정하여 수도 서비스 계량기 대신 하수 청소구를 배치합니다.
로트 선의 양쪽이 아닌 특정 쪽에 단일 서비스 연결을 배치할 수 있는 토글을 추가합니다.
고유한 각 COGO 점 설명에 대한 점 그룹을 작성합니다.
리스트 작업을 처음 해보는 경우 섹션을 참조하십시오.
Dynamo 플레이어를 처음 사용하는 경우 섹션을 참조하십시오.
작업을 완료했습니다!
도면에 있는 모든 유역의 경계 형상을 가져옵니다.
그래프 작성과 코드 작성을 시작하기 전에 Civil 3D API 문서를 살펴보고 API가 제공하는 기능을 파악하는 것이 좋습니다. 이 경우 유역의 경계 점을 반환하는 에 있습니다. 이 특성은 Point3dCollection
객체를 반환하는데, Dynamo에서 이 객체를 어떻게 사용할지 알 수 없습니다. 다시 말해, Point3dCollection
에서 PolyCurve를 작성할 수 없으므로, 결국 모든 항목을 Dynamo 점으로 변환해야 합니다. 이에 대해서는 나중에 더 자세히 살펴보겠습니다.
더 자세히 알아보기 전에 중요한 개념을 간단히 살펴봐야 합니다. 섹션에서 객체와 CivilObjects가 어떻게 관련되어 있는지 살펴보았습니다. 이에 대해 조금 더 자세히 설명하자면, Dynamo 객체는 AutoCAD 도면요소를 감싸는 래퍼입니다. 마찬가지로, Dynamo CivilObject도 Civil 3D 도면요소를 감싸는 래퍼입니다. 해당 InternalDBObject
또는 InternalObjectId
특성에 액세스하여 객체의 "언래핑"할 수 있습니다.
Dynamo 유형 | 랩 |
---|
작업을 완료했습니다!
에서 이 전환에 대한 자세한 내용과 기존 스크립트를 업그레이드하는 방법을 확인할 수 있습니다. IronPython을 계속 사용하려면 Dynamo Package Manager를 사용하여 DynamoIronPython2.7 패키지를 설치하기만 하면 됩니다.
사용할 준비가 되면 섹션으로 이동합니다.
Dynamo for Civil 3D에는 미리 작성된 몇 가지 그래프가 포함되어 있어 Dynamo를 사용하는 방법에 대한 더 많은 아이디어를 얻을 수 있습니다. 입문서의 와 함께, 언젠가는 이 내용을 살펴볼 것을 권장합니다.
문자를 모델 공간에 삽입할 Dynamo 그래프를 작성합니다.
라이브러리의 노드는 노드의 기능에 따라 논리적 카테고리로 그룹화됩니다. 더 자세한 내용을 확인하려면 섹션을 참조하십시오.
기본적으로 Dynamo는 작성하는 객체를 "기억"합니다. 노드 입력 값을 변경하면 완전히 새로운 객체를 작성하는 대신 Civil 3D의 객체가 업데이트됩니다. 이 동작에 대한 자세한 내용은 섹션을 참조하십시오.
작업을 완료했습니다!
수도 서비스 계량기 블록 참조를 로트 선에서 지정된 간격띄우기에 배치하고 각 서비스 연결에 대해 분배 본관에 수직으로 선을 그립니다.
Dynamo 곡선 형상을 처음 사용하는 경우 섹션을 참조하십시오.
좌표계를 처음 사용하는 경우 섹션을 참조하십시오.
자세한 내용은 섹션을 참조하십시오.
Dynamo 플레이어를 처음 사용하는 경우 섹션을 참조하십시오.
작업을 완료했습니다!
객체 Autodesk.AutoCAD.DynamoNodes.Object | 도면요소 Autodesk.AutoCAD.DatabaseServices.Entity |
CivilObject Autodesk.Civil.DynamoNodes.CivilObject | 도면요소 Autodesk.Civil.DatabaseServices.Entity |
Dynamo 패키지는 Dynamo의 핵심 기능을 확장하기 위해 타사에서 개발한 도구 세트입니다. 누구나 액세스할 수 있으며 한 번의 버튼 클릭으로 다운로드할 수 있습니다.
패키지를 시작하는 방법에 대한 자세한 내용은 패키지 섹션을 참조하십시오.
다음은 Dynamo for Civil 3D 그래프를 한 단계 높은 수준으로 끌어올릴 수 있는 가장 인기 있는 패키지 리스트입니다.
Civil 3D 도구 키트 는 대규모의 추가 노드 인벤토리를 통해 Dynamo의 기능을 크게 개선하는 Dynamo for Civil 3D 패키지입니다.
캠버는 레이블, 외부 참조, 데이터 바로 가기, 스타일 등으로 작업할 수 있는 수백 개의 노드가 포함된 오픈 소스 Dynamo for Civil 3D 패키지입니다.
CivilConnection 은 Civil 3D, Dynamo 및 Revit 간에 정보를 교환할 수 있는 오픈 소스 Revit용 Dynamo 패키지입니다.
Arkance Systems 노드는 치수, 테이블, 뷰, 드릴 제어 등의 작업에 유용하고 노드가 다수 포함된 Dynamo for Civil 3D 패키지입니다.