Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
전체 파라메트릭 컨트롤을 사용하여 Dynamo에서 Revit 요소의 배열을 작성할 수 있습니다. Dynamo의 Revit 노드에서는 일반 형상에서 특정 카테고리 유형(예: 벽 및 바닥)으로 요소를 가져올 수 있는 기능을 제공합니다. 이 섹션에서는 가변 구성요소와 함께 파라메트릭 방식으로 유연한 요소를 가져오는 방법을 중점적으로 살펴보겠습니다.
가변 구성요소는 생성 응용프로그램에 유용한 유연한 패밀리 카테고리입니다. 인스턴스화할 때 가변 점의 기본 위치에 의해 구동되는 복잡한 형상 요소를 작성할 수 있습니다.
다음은 패밀리 편집기의 세 점 가변 구성요소 예입니다. 이렇게 하면 각 가변 점의 위치에 의해 정의된 트러스가 생성됩니다. 아래 연습에서는 이 구성요소를 사용하여 정면에 걸친 일련의 트러스를 생성하겠습니다.
가변 구성요소는 상호 운용성의 모범 사례에 대한 좋은 예입니다. 기본 가변 점을 정의하여 가변 구성요소의 배열을 작성할 수 있습니다. 그리고 이 데이터를 다른 프로그램으로 전송할 때 형상을 단순한 데이터로 줄일 수 있습니다. Excel 같은 프로그램을 사용한 가져오기 및 내보내기는 유사한 논리를 따릅니다.
정면 컨설턴트가 완전히 명확하게 표현된 형상을 통해 해석할 필요 없이 트러스 요소의 위치를 알고 싶어 한다고 가정해 보십시오. 제작을 준비할 때 컨설턴트가 가변 점의 위치를 참조하여 Inventor 같은 프로그램에서 형상을 재생성할 수 있습니다.
아래 연습에서 설정할 워크플로우를 통해 Revit 요소 작성을 위한 정의를 작성하는 동안 이 모든 데이터에 액세스할 수 있습니다. 이 프로세스를 통해 개념화, 문서화 및 제작을 원활한 워크플로우로 병합할 수 있습니다. 이렇게 하면 상호 운용성을 위한 더 지능형의 효율적인 프로세스가 작성됩니다.
아래의 첫 번째 연습에서는 Dynamo에서 Revit 요소 작성을 위해 데이터를 참조하는 방법에 대해 설명합니다. 여러 개의 가변 구성요소를 생성하기 위해 가변 구성요소의 각 점을 나타내는 세 개의 점이 각 리스트에 있는 리스트의 리스트를 정의합니다. Dynamo에서 데이터 구조를 관리할 때 이 점을 염두에 두어야 합니다.
파라메트릭 Dynamo 형상을 Revit으로 가져오는 또 다른 방법은 DirectShape를 사용하는 것입니다. 요약하면, DirectShape 요소 및 관련 클래스는 외부에서 작성된 형상 모양을 Revit 문서에 저장하는 기능을 지원합니다. 형상에 닫힌 솔리드나 메쉬가 포함될 수 있습니다. DirectShape는 기본적으로 "실제" Revit 요소를 작성하는 데 정보가 충분하지 않은 IFC 또는 STEP와 같은 다른 데이터 형식에서 모양을 가져오도록 되어 있습니다. IFC 및 STEP 워크플로우와 마찬가지로 DirectShape 기능은 Dynamo에서 작성된 형상을 Revit 프로젝트에 실제 요소로 가져오는 작업과 함께 사용하기에 적합합니다.
Dynamo 형상을 DirectShape로 Revit 프로젝트에 가져오는 두 번째 연습을 진행해 보겠습니다. 이 방법을 사용하면 가져온 형상의 카테고리, 재료, 이름을 지정할 수 있으며, 그동안 Dynamo 그래프에 대한 파라메트릭 링크는 유지됩니다.
아래 링크를 클릭하여 예제 파일을 다운로드하십시오.
전체 예시 파일 리스트는 부록에서 확인할 수 있습니다.
이 섹션의 예제 파일로 시작하거나 이전 세션의 Revit 파일을 계속 사용하면 동일한 Revit 매스가 표시됩니다.
이것은 파일을 열었을 때의 상태입니다.
이것은 Revit 매스에 지능형으로 링크된 Dynamo를 사용하여 작성한 트러스 시스템입니다.
우리는 "Select Model Element" 및 "Select Face" 노드를 사용했으며, 이제 형상 계층에서 한 단계 더 아래로 이동하여 "Select Edge" 를 사용해 보겠습니다. Dynamo 솔버가 "자동" 을 실행하도록 설정되어 있으면 그래프가 Revit 파일의 변경 사항에 따라 지속적으로 업데이트됩니다. 선택하는 모서리는 Revit 요소 토폴로지에 동적으로 연결됩니다. 토폴로지*가 변경되지 않는 한, 연결은 Revit과 Dynamo 사이에 링크된 상태로 유지됩니다.
유리 정면의 맨 위 곡선을 선택합니다. 이 길이는 건물의 전체 길이에 걸쳐 있습니다. 모서리를 선택하는 데 문제가 있을 경우 원하는 모서리가 강조 표시될 때까지 모서리 위에 마우스 커서를 놓고 "Tab" 키를 눌러 Revit에서 선택 항목을 선택해야 합니다.
두 "Select Edge" 노드를 사용하여 정면의 중간에 있는 돌각을 나타내는 각 모서리를 선택합니다.
Revit에서 정면 맨 아래 모서리에 대해 동일한 작업을 수행합니다.
Watch 노드에서 이제 Dynamo에 선이 있음을 나타냅니다. 그러면, 모서리 자체는 Revit 요소가 아니므로 자동으로 Dynamo 형상으로 변환됩니다. 이러한 곡선은 정면 전체에서 가변 트러스를 인스턴스화하는 데 사용할 참조입니다.
*위상을 일관되게 유지하기 위해 추가된 면이나 모서리가 없는 모델을 참조합니다. 매개변수는 모양을 변경할 수 있지만, 작성 방식은 그대로 유지됩니다.
먼저 곡선을 결합하여 하나의 리스트로 병합해야 합니다. 이러한 방식으로 곡선을 "그룹화" 하여 형상 작업을 수행할 수 있습니다.
정면 가운데에 두 개의 곡선에 대한 리스트를 작성합니다.
List.Create 구성요소를 Polycurve.ByJoinedCurves 노드에 연결하여 두 곡선을 Polycurve에 결합합니다.
정면 아래쪽에 두 개의 곡선에 대한 리스트를 작성합니다.
List.Create 구성요소를 Polycurve.ByJoinedCurves 노드에 연결하여 두 곡선을 Polycurve에 결합합니다.
마지막으로 세 개의 주 곡선(선 1개와 polycurve 2개)을 하나의 리스트에 결합합니다.
맨 위 곡선(선)을 활용하여 정면의 전체 범위를 나타내려고 합니다. 이 선을 따라 평면을 작성하여 리스트에서 함께 그룹화한 곡선 세트와 교차할 것입니다.
code block 에서
0..1..#numberOfTrusses;
구문을 사용하여 범위를 정의합니다.code block의 입력에 integer slider를 연결합니다. 추측한 바와 같이, 이를 통해 트러스의 수를 나타낼 것입니다. 슬라이더가 0에서 1 로 정의된 범위의 항목 수를 제어합니다.
code block 을 "Curve.PlaneAtParameter" 노드의 param 입력에 연결하고 맨 위 모서리를 곡선 입력에 연결합니다. 이렇게 하면 10개의 평면이 생기고 정면 전체에 균등하게 분산됩니다.
평면은 무한한 2차원 공간을 나타내는 추상적인 형상 조각입니다. 또한 이 단계에서 설정한 것처럼 등고선을 작성하고 교차할 때 적합합니다.
Geometry.Intersect 노드(레이싱 옵션을 외적으로 설정)를 사용하여 Curve.PlaneAtParameter 를 Geometry.Intersect 노드의 entity 입력에 연결합니다. 주 List.Create 노드를 geometry 입력에 연결합니다. 이제 Dynamo 뷰포트에 정의된 평면과 함께 각 곡선의 교차를 나타내는 점이 표시됩니다.
출력은 리스트의 리스트입니다. 우리가 하려고 하는 것을 위한 리스트가 너무 많습니다. 여기서 부분 단순화를 수행하려고 합니다. 리스트에서 한 단계 내려가 결과를 단순화해야 합니다. 이를 위해 Primer의 리스트 장에 설명된 대로 List.Map 작업을 사용합니다.
Geometry.Intersect 노드를 List.Map 의 리스트 입력에 연결합니다.
Flatten 노드를 List.Map 의 f(x) 입력에 연결합니다. 그러면 3개의 리스트가 제공되며 각 리스트에는 트러스 수와 동일한 개수가 포함됩니다.
이 데이터를 변경해야 합니다. 트러스를 인스턴스화하려면 패밀리에 정의된 것과 동일한 수의 가변 점을 사용해야 합니다. 이는 세 점 가변 구성요소이므로 각각 10개의 항목(numberOfTrusses)이 있는 리스트 3개 대신, 각각 3개의 항목이 있는 리스트 10개가 필요합니다. 이 방식으로 10개의 가변 구성요소를 작성할 수 있습니다.
List.Map 을 List.Transpose 노드에 연결합니다. 이제 원하는 데이터 출력이 만들어졌습니다.
데이터가 올바른지 확인하려면 캔버스에 Polygon.ByPoints 노드를 추가하고 Dynamo 미리보기에서 다시 확인합니다.
다각형을 작성한 방법과 같은 방법으로 가변 구성요소를 배열합니다.
캔버스에 AdaptiveComponent.ByPoints 노드를 추가하고 List.Transpose 노드를 점 입력에 연결합니다.
Family Types 노드를 사용하여 "AdaptiveTruss" 패밀리를 선택하고 이 패밀리를 AdaptiveComponent.ByPoints 노드의 FamilyType 입력에 연결합니다.
Revit에서 이제 정면 전체에 걸쳐 10개의 트러스가 균일하게 배치되었습니다!
그래프를 "조정"하면, 슬라이더가 변경되어 numberOfTrusses가 30으로 바뀝니다. 많은 트러스가 사실적이지는 않지만 파라메트릭 링크가 작동합니다. 확인이 끝나면 numberOfTrusses를 15로 설정합니다.
최종 테스트의 경우 Revit에서 매스를 선택하고 인스턴스 매개변수를 편집하여 건물의 형태를 변경하고 트러스가 그에 따라 바뀌는 것을 확인할 수 있습니다. 이 업데이트를 보려면 이 Dynamo 그래프가 열려 있어야 하며, 그래프가 닫히면 바로 링크가 끊어집니다.
아래 링크를 클릭하여 예제 파일을 다운로드하십시오.
전체 예시 파일 리스트는 부록에서 확인할 수 있습니다.
먼저 이 교육의 샘플 파일(ARCH-DirectShape-BaseFile.rvt)을 엽니다.
3D 뷰에서는 이전 교육에서 건물 매스를 확인할 수 있습니다.
아트리움의 모서리를 따라 참조 곡선이 하나 있는데 이를 Dynamo에서 참조할 곡선으로 사용하겠습니다.
아트리움의 반대쪽 모서리를 따라 또 다른 참조 곡선이 있으며, 이 곡선도 Dynamo에서 참조할 것입니다.
Dynamo에서 형상을 참조하기 위해 Revit에서 각 부재에 대해 Select Model Element 를 사용하겠습니다. Revit에서 매스를 선택하고 Element.Faces 를 사용하여 이 형상을 Dynamo로 가져옵니다. 이제 Dynamo 미리보기에 매스가 표시됩니다.
Select Model Element 및 CurveElement.Curve 를 사용하여 하나의 참조 곡선을 Dynamo로 가져옵니다.
Select Model Element 및 CurveElement.Curve 를 사용하여 다른 참조 곡선을 Dynamo로 가져옵니다.
샘플 그래프에서 오른쪽으로 줌을 축소하고 초점이동하면 큰 노드 그룹이 표시됩니다. 이러한 노드 그룹은 Dynamo 미리보기에 표시된 격자 지붕 구조를 생성하는 형상 작업입니다. 이러한 노드는 Primer의 code block 섹션에서 설명한 대로 Node to Code 기능을 사용하여 생성됩니다.
이 구조는 대각선 이동, 캠버 및 반지름이라는 세 가지 주요 매개변수에 의해 구동됩니다.
이 그래프에 대한 매개변수의 근접 모양을 줌합니다. 이를 조정하여 다른 형상 출력을 얻을 수 있습니다.
DirectShape.ByGeometry 노드를 캔버스에 놓으면 형상, 카테고리, 재료 및 이름 등 네 가지 입력이 표시됩니다.
형상은 그래프의 형상 작성 부분에서 작성된 솔리드가 됩니다.
카테고리 입력은 드롭다운 Categories 노드를 사용하여 선택합니다. 이 경우에는 "구조 프레임"을 사용하겠습니다.
이 경우 더욱 단순하게 "기본값"으로 정의할 수 있지만 위의 노드 배열을 통해 재료 입력이 선택됩니다.
Dynamo를 실행하고 Revit으로 돌아오면 프로젝트의 지붕에 가져온 형상이 표시됩니다. 이는 일반 모델이 아니라 구조 프레임 요소입니다. Dynamo에 대한 파라메트릭 링크는 그대로 유지됩니다.
앞서 기본 건물 매스 편집을 살펴보았지만 한 번에 많은 요소를 편집하면서 Dynamo/Revit 링크를 좀 더 자세히 살펴보려고 합니다. 데이터 구조에는 고급 리스트 작업이 필요하므로 대형 축척으로 사용자화하는 것이 훨씬 더 복잡해집니다. 그러나 실행 이면의 기본 원칙은 근본적으로 동일합니다. 일련의 가변 구성요소를 통해 해석할 수 있는 몇 가지 기회를 살펴보겠습니다.
일련의 가변 구성요소를 작성하고 해당 점 위치를 기준으로 매개변수를 편집한다고 가정합니다. 예를 들어 점은 요소의 면적과 관련된 두께 매개변수를 구동할 수 있습니다. 또는 한 해 동안의 일조 노출과 관련된 불투명도 매개변수를 구동할 수 있습니다. Dynamo를 사용하면 몇 가지 간단한 단계를 통해 매개변수에 해석을 연결할 수 있으며, 아래 연습에서 기본 버전을 살펴보겠습니다.
AdaptiveComponent.Locations 노드를 사용하여 선택한 가변 구성요소의 가변 점을 조회합니다. 이 도구를 사용하면 해석을 위해 Revit 요소의 추상화된 버전으로 작업할 수 있습니다.
가변 구성요소의 점 위치를 추출하여 해당 요소에 대해 특정 범위의 해석을 실행할 수 있습니다. 예를 들어, 4점 가변 구성요소를 사용하면 지정된 패널에 대해 평면에서의 편차를 연구할 수 있습니다.
재매핑을 사용하여 데이터 세트를 매개변수 범위에 매핑합니다. 이는 파라메트릭 모델에 사용되는 기본적인 도구이며 아래 연습에서 이러한 기본적인 내용을 보여드리겠습니다.
Dynamo를 사용하면 가변 구성요소의 점 위치를 사용하여 각 요소에 가장 잘 맞는 평면을 작성할 수 있습니다. 또한 Revit 파일에서 태양 위치를 조회하고 다른 가변 구성요소를 기준으로 태양에 대한 평면의 상대적 방향을 연구할 수 있습니다. 알고리즘 방식의 지붕 전망을 작성하여 아래 연습에서 이 작업을 설정해 보겠습니다.
아래 링크를 클릭하여 예제 파일을 다운로드하십시오.
전체 예시 파일 리스트는 부록에서 확인할 수 있습니다.
이 연습에서는 이전 섹션에서 설명한 기술을 확장합니다. 이 경우 4점 가변 구성요소를 인스턴스화한 다음, 태양에 대한 방향을 기준으로 편집하여 Revit 요소에서 파라메트릭 표면을 정의합니다.
먼저 "Select Edge" 노드를 사용하여 두 개의 모서리를 선택합니다. 두 모서리는 아트리움의 긴 스팬입니다.
List.Create 노드를 사용하여 두 모서리를 하나의 리스트로 결합합니다.
Surface.ByLoft 로 두 모서리 사이에 표면을 작성합니다.
code block 을 사용하여 0부터 1까지 10개의 동일한 간격으로 배치된 값을 정의합니다(
0..1..#10;
).code block 을 Surface.PointAtParameter 노드의 u 및 v 입력에 연결하고 Surface.ByLoft 노드를 surface 입력에 연결합니다. 노드를 마우스 오른쪽 버튼으로 클릭하고 레이싱 을 외적 으로 변경합니다. 그러면 표면에 점 그리드가 나타납니다.
이 점 그리드는 파라메트릭 방식으로 정의된 표면에 대한 제어점 역할을 합니다. 이러한 각 점의 u 및 v 위치를 추출하여 파라메트릭 수식에 연결하고 동일한 데이터 구조를 유지해 보겠습니다. 방금 작성한 점의 매개변수 위치를 조회하여 이를 수행할 수 있습니다.
캔버스에 Surface.ParameterAtPoint 노드를 추가하고 위에 표시된 대로 입력을 연결합니다.
UV.U 노드를 사용하여 이러한 매개변수의 u 값을 조회합니다.
UV.V 노드를 사용하여 이러한 매개변수의 v 값을 조회합니다.
출력은 표면의 모든 점에 대해 해당 u 및 v 값을 표시합니다. 이제 적절한 데이터 구조에 각 값의 0~1 범위가 구성되었으므로 파라메트릭 알고리즘을 적용할 준비가 되었습니다.
캔버스에 code block 을 추가하고 코드
Math.Sin(u*180)*Math.Sin(v*180)*w;
를 입력합니다. 이는 평평한 표면에서 사인 마운드를 작성하는 파라메트릭 함수입니다.UV.U 를 u 입력에 연결하고 UV.V를 v 입력에 연결합니다.
w 입력은 모양의 진폭 을 나타내므로 number slider 를 부착합니다.
이제 알고리즘에 의해 정의된 값 리스트가 있습니다. 이 값 리스트를 사용하여 점을 +Z 방향으로 위로 이동합니다. Geometry.Translate 를 사용하여 code block을 zTranslation 에 연결하고 Surface.PointAtParameter 를 geometry 입력에 연결합니다. Dynamo 미리보기에 새 점이 표시됩니다.
마지막으로 NurbsSurface.ByPoints 노드를 사용하여 표면을 작성하고 이전 단계의 노드를 점 입력에 연결합니다. 이제 파라메트릭 표면이 생겼습니다. 슬라이더를 자유롭게 끌어 마운드가 축소 및 확장되는 것을 확인합니다.
파라메트릭 표면을 사용하여 4점 가변 구성요소를 배열하기 위해 패널화하는 방법을 정의하려고 합니다. Dynamo에는 표면 패널화를 위한 즉시 사용 가능한 기능이 없기 때문에 커뮤니티에서 유용한 Dynamo 패키지를 찾아보겠습니다.
패키지>패키지 검색... 으로 이동합니다.
"LunchBox" 를 검색하고 "LunchBox for Dynamo" 를 설치합니다. 이는 이러한 형상 작업에 매우 유용한 도구 세트입니다.
다운로드가 완료되면 LunchBox 제품군에 완전히 액세스할 수 있게 됩니다. "쿼드 그리드" 를 검색하고 "LunchBox Quad Grid By Face" 를 선택합니다. 파라메트릭 표면을 surface 입력에 연결하고 U 및 V 분할을 15 로 설정합니다. Dynamo 미리 보기에 쿼드 패널 표면이 표시되어야 합니다.
설정에 대해 궁금한 점이 있으면 Lunch Box 노드를 두 번 클릭하여 어떻게 만들어졌는지 확인할 수 있습니다.
다시 Revit으로 돌아와 여기에서 사용할 가변 구성요소를 잠시 살펴보겠습니다. 이 과정을 반드시 진행할 필요는 없지만, 이는 인스턴스화하려는 지붕 패널입니다. 이는 ETFE 시스템을 대략적으로 나타낸 4점 가변 구성요소입니다. 중심 보이드의 조리개는 "ApertureRatio" 라는 매개변수에 있습니다.
Revit에서 많은 형상을 인스턴스화하고자 하므로 Dynamo 솔버를 "수동" 으로 바꿔야 합니다.
캔버스에 Family Types 노드를 추가하고 "ROOF-PANEL-4PT" 를 선택합니다.
캔버스에 AdaptiveComponent.ByPoints 노드를 추가하고 "LunchBox Quad Grid by Face" 출력의 Panel Pts 를 points 입력에 연결합니다. Family Types 노드를 familySymbol 입력에 연결합니다.
실행 을 누릅니다. Revit은 형상이 작성되는 동안 잠깐 멈춥니다. 시간이 너무 오래 걸리는 경우 code block의 '15' 를 더 작은 숫자로 줄입니다. 그러면 지붕의 패널 수가 줄어듭니다.
참고: Dynamo에서 노드를 계산하는 데 시간이 오래 걸리는 경우 그래프를 개발하는 동안 Revit 작업 실행을 일시 중지하기 위해 노드 "고정" 기능을 사용할 수도 있습니다. 노드 동결에 대한 자세한 내용은 솔리드 장의 "동결" 섹션을 확인하십시오.
다시 Revit으로 돌아가면 지붕에 패널 배열이 표시됩니다.
확대하면 표면 품질을 더 자세히 확인할 수 있습니다.
이전 단계에서 계속 진행하면서 태양에 대한 노출을 기준으로 각 패널의 조리개를 더 많이 움직이도록 해보겠습니다. Revit으로 줌하고 패널 하나를 선택하면 특성 막대에 "조리개 비율" 이라는 매개변수가 표시됩니다. 조리개 범위가 대략 0.05~0.45 가 되도록 패밀리가 설정됩니다.
태양 경로를 켜면 Revit에서 현재 태양 위치를 볼 수 있습니다.
SunSettings.Current 노드를 사용하여 이 태양 위치를 참조할 수 있습니다.
태양 설정을 Sunsetting.SunDirection 에 연결하여 일조 벡터를 가져옵니다.
가변 구성요소를 작성하는 데 사용된 패널 점 에서 Plane.ByBestFitThroughPoints 를 사용하여 구성요소의 대략적인 평면을 만듭니다.
이 평면의 법선 을 조회합니다.
내적 을 사용하여 일조 방향을 계산합니다. 내적은 두 벡터의 평행 또는 반 평행 정도를 결정하는 수식입니다. 따라서 각 가변 구성요소의 평면 법선을 선택한 다음, 일조 벡터와 비교하여 일조 방향을 대략적으로 시뮬레이션합니다.
결과의 절댓값 을 사용합니다. 그래야 평면 법선이 반대 방향을 향하고 있는 경우 내적이 정확해집니다.
실행 을 누릅니다.
내적 을 보면 다양한 범위의 숫자가 표시됩니다. 상대 분산을 사용할 것이지만, 이러한 숫자를 편집하려는 "조리개 비율" 매개변수의 적절한 범위로 압축해야 합니다.
Math.RemapRange 는 이 작업에 유용한 도구입니다. 입력 리스트를 가져와서 해당 경계를 두 대상 값으로 다시 매핑합니다.
대상 값을 code block 에서 0.15 및 0.45 로 정의합니다.
실행 을 누릅니다.
다시 매핑된 값을 Element.SetParameterByName 노드에 연결합니다.
문자열 "조리개 비율" 을 parameterName 입력에 연결합니다.
가변 구성요소 를 element 입력에 연결합니다.
실행 을 누릅니다.
Revit으로 다시 돌아와, 멀리에서 ETFE 패널의 조리개에 일조 방향이 미치는 영향을 파악할 수 있습니다.
확대하면 ETFE 패널이 태양을 향할 때 더 많이 닫히는 것을 볼 수 있습니다. 여기서 목표는 태양 노출에 따른 과열을 줄이는 것입니다. 태양 노출을 기준으로 더 많은 빛이 들어오게 하려면 Math.RemapRange 에서 영역을 전환하기만 하면 됩니다.
Dynamo는 다양한 프로그램을 지원하도록 설계된 유연한 환경이지만, 처음에는 Revit에서 사용하기 위해 개발되었습니다. 시각적 프로그램은 BIM(건물 정보 모델링)을 위한 강력한 옵션을 제공합니다. Dynamo는 Revit용으로 특별히 설계된 전체 노드 세트와 성장하는 AEC 커뮤니티의 타사 라이브러리를 제공합니다. 이 장에서는 Revit에서 Dynamo를 사용할 때의 기본 사항에 대해 집중적으로 알아봅니다.
Revit은 데이터가 풍부한 환경입니다. 따라서 "포인트 앤 클릭" 이외의 다양한 선택 기능을 사용할 수 있습니다. 파라메트릭 작업을 수행하는 동안 Revit 데이터베이스를 조회하고 Revit 요소를 Dynamo 형상에 동적으로 링크할 수 있습니다.
UI의 Revit 라이브러리에서는 여러 가지 방법으로 형상을 선택할 수 있는 "Selection" 카테고리를 제공합니다.
Revit 요소를 제대로 선택하려면 Revit 요소 계층을 완전히 이해해야 합니다. 프로젝트의 모든 벽을 선택하시겠습니까? 카테고리별로 선택하십시오. 미드 센추리 모던 로비에서 모든 Eames 의자를 선택하시겠습니까? 패밀리별로 선택하십시오.
Revit 계층을 간단히 살펴보겠습니다.
생물학의 분류법인 계, 문, 강, 목, 과, 속, 종을 기억하십니까? Revit 요소도 비슷한 방식으로 분류됩니다. 기본 레벨에서 Revit 계층은 카테고리, 패밀리, 유형* 및 인스턴스로 구분할 수 있습니다. 인스턴스는 고유한 ID를 가진 개별 모델 요소이지만, 카테고리는 일반 그룹(예: "벽" 또는 "바닥")을 정의합니다. Revit 데이터베이스를 이러한 방식으로 구성하면 요소 하나를 선택하고 계층의 지정된 레벨에 따라 유사한 요소를 모두 선택할 수 있습니다.
*Revit의 유형은 프로그래밍의 유형과 다르게 정의됩니다. Revit에서 유형은 "데이터 유형"이 아닌 계층의 분기를 참조합니다.
아래의 3개 이미지에는 Dynamo의 Revit 요소 선택에 대한 기본 카테고리를 분석한 내용이 나와 있습니다. 이러한 도구는 함께 사용할 수 있는 유용한 도구로, 다음 연습에서 이러한 도구 중 일부를 살펴보겠습니다.
포인트 앤 클릭 은 Revit 요소를 직접 선택하는 가장 쉬운 방법입니다. 전체 모델 요소 또는 해당 위상의 일부(예: 면 또는 모서리)를 선택할 수 있습니다. 이렇게 하면 해당 Revit 객체에 동적으로 연결된 상태로 유지되므로 Revit 파일이 해당 위치 또는 매개변수를 업데이트하면 참조된 Dynamo 요소가 그래프에서 업데이트됩니다.
드롭다운 메뉴 에서는 Revit 프로젝트에서 액세스할 수 있는 모든 요소 리스트를 작성합니다. 이 메뉴를 사용하여 뷰에서 반드시 보이지 않을 수 있는 Revit 요소를 참조할 수 있습니다. 이 도구는 Revit 프로젝트 또는 패밀리 편집기에서 기존 요소를 조회하거나 새 요소를 작성하는 데 유용합니다.
![](../.gitbook/assets/selecting _database_navigation_with_dynamo_nodes_02.png)
또한 Revit 계층 에서 특정 계층별로 Revit 요소를 선택할 수도 있습니다. 이 옵션은 문서화 또는 생성 인스턴스화 및 사용자화 준비를 위해 대규모 데이터 배열을 사용자화하기 위한 강력한 옵션입니다.
위의 세 가지 이미지를 염두에 두고, 이 장의 나머지 섹션에서 작성할 파라메트릭 응용프로그램을 준비하기 위해 기본 Revit 프로젝트에서 요소를 선택하는 연습을 살펴보겠습니다.
아래 링크를 클릭하여 예제 파일을 다운로드하십시오.
전체 예시 파일 리스트는 부록에서 확인할 수 있습니다.
이 Revit 파일 예에는 간단한 건물의 세 가지 요소 유형이 있습니다. 이를 Revit 계층의 컨텍스트에서 Revit 요소를 선택하는 예로 사용하겠습니다.
건물 매스
보(구조 프레임)
트러스(가변 구성요소)
현재 Revit 프로젝트 뷰에 있는 요소로부터 어떤 결론을 도출할 수 있습니까? 해당 요소를 선택하기 위해 계층 구조에서 얼마나 아래로 이동해야 합니까? 물론 대규모 프로젝트에서 작업하게 되면 이 과정이 훨씬 복잡해질 것입니다. 사용 가능한 여러 가지 옵션이 있습니다. 즉, 카테고리, 레벨, 패밀리, 인스턴스 등을 기준으로 요소를 선택할 수 있습니다.
기본 설정으로 작업하고 있으므로 카테고리 드롭다운 노드에서 "Mass" 를 선택하여 건물 매스를 선택해 보겠습니다. 이 옵션은 Revit > 선택 탭에서 찾을 수 있습니다.
매스 카테고리의 출력은 단순히 카테고리 자체입니다. 요소를 선택해야 합니다. 이렇게 하려면 "All Elements of Category" 노드를 사용합니다.
지금은 Dynamo에서 아무 형상도 표시되지 않습니다. Revit 요소를 선택했지만 요소를 Dynamo 형상으로 변환하지 않았습니다. 이렇게 구분하는 것은 중요합니다. 많은 요소를 선택하려고 할 경우 이로 인해 전반적인 속도가 느려지기 때문에 Dynamo에서 모든 요소를 미리 보려고 하지 않는 것이 좋습니다. Dynamo는 형상 작업을 반드시 수행할 필요 없이 Revit 프로젝트를 관리하기 위한 도구로, 이 장의 다음 섹션에서 살펴보겠습니다.
이 경우에는 간단한 형상으로 작업할 것이므로 형상을 Dynamo 미리보기로 가져오고자 합니다. 위의 감시 노드의 "BldgMass"에는 옆에 초록색 번호가 있습니다. 이는 요소의 ID를 나타내며 Dynamo 형상이 아닌 Revit 요소를 처리하고 있음을 나타냅니다. 다음 단계는 이 Revit 요소를 Dynamo의 형상으로 변환하는 것입니다.
Element.Faces 노드를 사용하여 Revit 매스의 각 면을 나타내는 표면 리스트를 가져옵니다. 이제 Dynamo 뷰포트에서 형상을 보고, 파라메트릭 작업을 위해 면을 참조하기 시작할 수 있습니다.
대체 방법은 다음과 같습니다. 이 경우 Revit 계층 ("All Elements of Category") 을 통해 선택하지 않고 Revit에서 형상을 명시적으로 선택합니다.
"Select Model Element" 노드를 사용하여 *"선택" *(또는 "변경") 버튼을 클릭합니다. Revit 뷰포트에서 원하는 요소를 선택합니다. 이 경우에는 건물 매스를 선택하겠습니다.
Element.Faces 가 아닌 Element.Geometry 를 사용하여 전체 매스를 하나의 솔리드 형상으로 선택할 수 있습니다. 이렇게 하면 해당 매스 내에 포함된 모든 형상이 선택됩니다.
Geometry.Explode 를 사용하여 표면 리스트를 다시 가져올 수 있습니다. 이러한 두 노드는 Element.Faces 와 동일하게 작동하지만, Revit 요소의 형상을 자세히 살펴보기 위한 대체 옵션을 제공합니다.
몇 가지 기본 리스트 작업을 사용하여 관심 면을 조회할 수 있습니다.
먼저, 선택한 요소를 이전 노드에서 Element.Faces 노드로 출력합니다.
다음으로, List.Count 노드에는 매스의 23개 표면으로 작업하고 있다고 표시됩니다.
이 숫자를 참조하여 integer slider의 최댓값을 "22" 로 변경합니다.
List.GetItemAtIndex 를 사용하여 _index_에 대해 리스트와 integer slider를 입력합니다. 선택한 상태에서 슬라이딩하면서 index 9 에서 중지한 후, 트러스를 호스팅하는 주 정면을 분리했습니다.
이전 단계는 다소 번거로운 작업이었습니다. "Select Face" 노드를 사용하면 이 작업을 훨씬 더 빠르게 수행할 수 있습니다. 이렇게 하면 Revit 프로젝트에서 요소 자체가 아닌 면을 분리할 수 있습니다. 전체 요소가 아닌 표면을 선택한다는 점을 제외하면 "Select Model Element" 와 동일한 상호 작용이 적용됩니다.
건물의 주 정면 벽을 분리하려 한다고 가정합니다. "Select Faces" 노드를 사용하여 이 작업을 수행할 수 있습니다. "선택" 버튼을 클릭한 다음, Revit에서 4개의 주요 정면을 선택합니다.
네 개의 벽을 선택한 후 Revit에서 "완료" 버튼을 클릭해야 합니다.
이제 면을 Dynamo에 표면으로 가져옵니다.
이제 아트리움 위의 보를 살펴보겠습니다.
"Select Model Element" 노드를 사용하여 보 중 하나를 선택합니다.
보 요소를 Element.Geometry 노드에 연결합니다. 그러면 Dynamo 뷰포트에 해당 보가 표시됩니다.
Watch3D 노드를 사용하여 형상을 확대할 수 있습니다(Watch 3D에서 보가 보이지 않는 경우 마우스 오른쪽 버튼을 클릭하고 "창에 맞게 줌"을 누름).
Revit/Dynamo 워크플로우에서 자주 묻는 질문은 바로 '요소 하나를 선택하고 유사한 요소를 모두 가져오는 방법은 무엇입니까?'입니다. 선택한 Revit 요소에 모든 계층 정보가 포함되어 있으므로 해당 패밀리 유형을 조회하고 해당 유형의 모든 요소를 선택할 수 있습니다.
보 요소를 Element.ElementType 노드에 연결합니다.
이제 Watch 노드에 출력이 Revit 요소가 아닌 패밀리 기호임이 표시됩니다.
Element.ElementType 은 간단한 조회이므로
x.ElementType;
을 사용할 때처럼 쉽게 code block에서 이 작업을 수행하고 동일한 결과를 얻을 수 있습니다.
나머지 보를 선택하려면 "All Elements of Family Type" 노드를 사용합니다.
watch 노드는 다섯 개의 Revit 요소가 선택되었음을 나타냅니다.
이러한 5가지 요소를 모두 Dynamo 형상으로 변환할 수도 있습니다.
보가 500개라면 어떨까요? 이러한 모든 요소를 Dynamo 형상으로 변환하는 작업은 시간이 오래 걸릴 수 있습니다. Dynamo에서 노드를 계산하는 데 시간이 오래 걸리는 경우 그래프를 개발하는 동안 Revit 작업 실행을 일시 중지하기 위해 노드 "동결" 기능을 사용할 수도 있습니다. 노드 동결에 대한 자세한 내용은 솔리드 장의 "동결" 섹션을 확인하십시오.
500개의 보를 가져오려는 경우 의도한 파라메트릭 작업을 수행하는 데 모든 표면이 필요합니까? 또는 보에서 기본 정보를 추출하고 기본 형상을 이용해 생성 작업을 수행할 수 있습니까? 이러한 질문은 이 장을 둘러볼 때 유의해야 할 질문입니다. 예를 들어, 옆에 있는 트러스 시스템을 살펴보겠습니다.
동일한 노드 그래프를 사용하여 보 요소 대신 트러스 요소를 선택합니다. 이를 수행하기 전에 이전 단계에서 Element.Geometry를 삭제합니다.
이제 트러스 패밀리 유형에서 몇 가지 기본 정보를 추출할 준비가 되었습니다.
Watch 노드에 Revit에서 선택한 가변 구성요소 리스트가 있는 것을 볼 수 있습니다. 기본 정보를 추출하려고 하므로 가변 점에서 시작합니다.
"All Elements of Family Type" 노드를 "AdaptiveComponent.Location" 노드에 연결합니다. 이렇게 하면 각각에 가변 점 위치를 나타내는 세 개의 점이 있는 리스트의 목록이 제공됩니다.
"Polygon.ByPoints" 노드를 연결하면 polycurve가 반환됩니다. 이 내용은 Dynamo 뷰포트에서 확인할 수 있습니다. 이 방법을 통해 하나의 요소에 대한 형상을 시각화하고 요소의 나머지 배열에 대한 형상을 추상화했습니다(이 예에 포함된 것보다 번호가 더 클 수 있음).
팁: Dynamo에서 Revit 요소의 초록색 번호를 클릭하면 Revit 뷰포트가 해당 요소로 줌됩니다.
문서화를 위한 편집 매개변수에서는 이전 섹션에서 학습한 내용을 따릅니다. 이 섹션에서는 요소의 기하학적 특성에 영향을 주지 않고, 문서화를 위해 Revit 파일을 준비하는 편집 매개변수를 살펴봅니다.
아래 연습에서는 평면 노드에서의 기본 편차를 사용하여 문서화를 위한 Revit 시트를 작성합니다. 파라메트릭 방식으로 정의된 지붕 구조의 각 패널은 편차 값이 다르므로, 색상을 사용하여 값 범위를 나타내고, 가변 점을 정면 컨설턴트, 엔지니어 또는 계약업체에 전달하도록 스케줄링합니다.
평면 노드와의 편차를 사용하면 점이 4개인 세트가 각 점 간에 가장 적합한 맞춤 평면에서 벗어나는 거리가 계산됩니다. 이 방법은 시공 가능성을 연구하는 빠르고 쉬운 방법입니다.
아래 링크를 클릭하여 예제 파일을 다운로드하십시오.
전체 예시 파일 리스트는 부록에서 확인할 수 있습니다.
이 섹션의 Revit 파일로 시작하거나 이전 섹션부터 계속 진행합니다. 이 파일의 경우 지붕에 ETFE 패널 배열이 있습니다. 이 연습에서는 이러한 패널을 참조합니다.
캔버스에 Family Types 노드를 추가하고 "ROOF-PANEL-4PT" 를 선택합니다.
이 노드를 All Elements of Family Type 노드에 연결하여 Revit에서 Dynamo로 모든 요소를 가져옵니다.
AdaptiveComponent.Locations 노드를 사용하여 각 요소에 대한 가변 점의 위치를 조회합니다.
Polygon.ByPoints 노드를 사용하여 이러한 4개의 점에서 다각형을 작성합니다. 이제 Revit 요소의 전체 형상을 가져오지 않고도 Dynamo에서 패널화된 시스템의 추상 버전이 제공됩니다.
Polygon.PlaneDeviation 노드를 사용하여 평면 편차를 계산합니다.
재미 삼아 이전 연습처럼 해당 평면 편차를 기준으로 각 패널의 조리개 비율을 설정해 보겠습니다.
캔버스에 Element.SetParameterByName 노드를 추가하고 가변 구성요소를 element 입력에 연결합니다. "Aperture Ratio" 를 읽는 Code Block 을 parameterName 입력에 연결합니다.
값을 매개변수 범위에 다시 매핑해야 하기 때문에 편차 결과를 값 입력에 직접 연결할 수 없습니다.
Math.RemapRange 를 사용하고 Code Block 에
0.15; 0.45;
를 입력하여 편차 값을 0.15~ 0_._45 사이의 도메인에 다시 매핑합니다.이러한 결과를 Element.SetParameterByName 의 값 입력에 연결합니다.
다시 Revit으로 돌아오면 표면의 조리개 변경을 이해할 수 있습니다.
확대하면 닫힌 패널에 표면의 코너 쪽으로 가중치가 부여되는 것을 명확히 확인할 수 있습니다. 열린 코너는 상단을 향합니다. 그 이유는 벌지는 최소 곡률을 갖지만 코너는 더 큰 편차 영역을 나타내기 때문입니다.
조리개 비율을 설정해도 지붕에 있는 패널의 편차가 명확하게 표시되지 않으므로 실제 요소의 형상도 변경합니다. 제작 실행 가능성의 관점에서만 편차를 연구한다고 가정해 보겠습니다. 문서화를 위해 편차 범위를 기준으로 패널에 색상을 지정하는 것이 도움이 될 수 있습니다. 아래에 제시된 일련의 단계(위 단계의 프로세스와 매우 유사함)를 통해 이 작업을 수행할 수 있습니다.
Element.SetParameterByName 과 해당 입력 노드를 제거하고 Element.OverrideColorInView 를 추가합니다.
캔버스에 Color Range 노드를 추가하고 Element.OverrideColorInView 의 색상 입력에 연결합니다. 그라데이션을 작성하려면 여전히 편차 값을 색상 범위에 연결해야 합니다.
value 입력 위에 커서를 놓으면 각 값에 색상을 매핑하기 위해 입력 값이 0 에서 1 사이여야 함을 알 수 있습니다. 편차 값을 이 범위로 다시 매핑해야 합니다.
Math.RemapRange 를 사용하여 평면 편차 값을 0에서 1 사이의 범위로 다시 매핑합니다. (참고: "MapTo" 노드를 사용하여 소스 도메인도 정의할 수 있습니다.)
결과를 Color Range 노드에 연결합니다.
출력은 숫자 범위가 아니라 색상 범위입니다.
수동으로 설정한 경우 실행 을 누릅니다. 이 시점부터는 계속 수동으로 설정해서 작업하는 것이 좋습니다.
다시 Revit으로 돌아가면 색상 범위를 기준으로 하는 평면 편차를 나타내는 훨씬 더 확실한 그라데이션이 표시됩니다. 하지만 색상을 사용자화하려면 어떻게 해야 할까요? 최소 편차 값은 빨간색으로 표시되는데 이는 우리가 예상했던 것과 반대인 것 같습니다. 우리는 최대 편차를 빨간색으로 표시하고 최소 편차는 좀 더 차분한 색상으로 표시하려고 합니다. Dynamo로 돌아가서 이 문제를 해결하십시오.
code block 을 사용하여 두 개의 다른 줄에
0;
및255;
의 두 숫자를 추가합니다.해당 값을 두 개의 Color.ByARGB 노드에 연결하여 빨간색과 파란색을 작성합니다.
이 두 가지 색상에서 리스트를 작성합니다.
이 리스트를 Color Range 의 colors 입력에 연결하고 사용자 색상 범위 업데이트를 확인합니다.
Revit으로 돌아가면 이제 코너의 최대 편차 영역이 더 잘 구분됩니다. 이 노드는 뷰의 색상을 재지정하기 위한 것이므로, 도면 세트에 특정 유형의 해석에 중점을 둔 특정 시트가 있는 경우에 정말 유용할 수 있습니다.
Revit에서 하나의 ETFE 패널을 선택하면 XYZ1, XYZ2, XYZ3 및 XYZ4의 4개 인스턴스 매개변수가 있는 것을 볼 수 있습니다. 이러한 매개변수는 작성된 후에 모두 비어 있습니다. 이러한 매개변수는 텍스트 기반 매개변수이며 값이 필요합니다. Dynamo를 사용하여 각 매개변수에 가변 점 위치를 작성합니다. 이렇게 하면 형상을 정면 컨설턴트 엔지니어에게 보내야 할 경우 상호 운용성이 향상됩니다.
샘플 시트에는 비어 있는 큰 일람표가 있습니다. XYZ 매개변수는 Revit 파일의 공유 매개변수이므로 일람표에 추가할 수 있습니다.
확대해 보면 XYZ 매개변수는 이미 채워져 있습니다. 처음 두 매개변수는 Revit에서 제어됩니다.
이러한 값을 작성하기 위해 복잡한 리스트 작업을 수행하겠습니다. 그래프 자체는 간단하지만, 리스트 장에 설명된 것처럼 개념은 주로 리스트 매핑에서 만들어집니다.
두 개의 노드가 있는 모든 가변 구성요소를 선택합니다.
AdaptiveComponent.Locations 를 사용하여 각 점의 위치를 추출합니다.
이러한 점을 문자열로 변환합니다. 매개변수는 텍스트 기반이므로 올바른 데이터 유형을 입력해야 합니다.
변경할 매개변수를 정의하는 4개의 문자열(XYZ1, XYZ2, XYZ3, 및 XYZ4) 리스트를 작성합니다.
이 리스트를 Element.SetParameterByName 의 parameterName 입력에 연결합니다.
Element.SetParameterByName 을 List.Combine 의 combinator 입력에 연결합니다. 가변 구성요소 를 list1 에 연결합니다. 객체의 String 을 list2 에 연결합니다.
여기서는 각 요소에 대해 4개의 값을 작성하여 복잡한 데이터 구조를 작성하게 되므로 리스트 매핑이 진행됩니다. List.Combine 노드에서는 데이터 계층에서 한 단계 아래에 작업을 정의합니다. 이것이 바로 Element.SetParameterByName 의 요소 및 값 입력이 비어 있는 이유입니다. List.Combine 은 해당 입력의 하위 리스트를 연결된 순서에 따라 Element.SetParameterByName 의 빈 입력에 연결합니다.
Revit에서 패널을 선택하면 각 매개변수에 대해 문자열 값이 표시되는 것을 볼 수 있습니다. 실제로는 점(X,Y,Z)을 작성하기 위한 보다 간단한 형식을 작성할 수 있습니다. 이 작업은 Dynamo에서 문자열 연산으로 수행할 수 있지만 여기서는 이 장의 범위를 벗어나지 않기 위해 해당 내용은 다루지 않습니다.
매개변수가 채워진 샘플 일람표의 뷰입니다.
이제 각 ETFE 패널에는 제작을 위한 각 패널의 코너를 나타내는 각 가변 점에 대해 XYZ 좌표가 작성되었습니다.
Revit용 Dynamo은 그래픽 알고리즘 편집기의 데이터 및 논리 환경으로 건물 정보 모델링을 확장했습니다. 이 제품은 대단히 유연하고 강력한 Revit 데이터베이스를 제공하므로 BIM을 새로운 차원에서 활용할 수 있게 됩니다.
이 장에서는 BIM을 위한 Dynamo 워크플로우에 대해 중점적으로 설명합니다. 프로젝트로 바로 이동하는 것은 BIM용 그래픽 알고리즘 편집기에 익숙해지는 가장 좋은 방법이기 때문에 섹션은 주로 연습으로 구성되어 있습니다. 우선 프로그램을 시작하는 것부터 살펴보겠습니다.
Revit과 Dynamo가 계속해서 발전함에 따라, 현재 사용 중인 Revit 버전이 컴퓨터에 설치한 Revit용 Dynamo용 버전과 호환되지 않음을 알게 될 수도 있습니다. 아래에는 Revit과 호환되는 Revit용 Dynamo 버전을 간단히 설명되어 있습니다.
이 프로젝트는 시작은 미미했지만 개발자 팀과 열정적인 커뮤니티의 전폭적인 지원을 받으면서 오랫동안 발전해 왔습니다.
Dynamo는 원래 Revit에서 AEC 워크플로우를 간소화하기 위해 개발되었습니다. Revit은 모든 프로젝트에 대해 강력한 데이터베이스를 만들었지만, 일반적인 사용자가 인터페이스의 제약을 벗어나서 이 정보에 액세스하는 것은 어려울 수 있습니다. Revit은 타사 개발자가 사용자 도구를 작성할 수 있도록 하는 포괄적인 API(응용프로그램 프로그램 인터페이스)를 호스팅하고 있습니다. 프로그래머가 이 API를 수년간 사용해 왔지만 누구나 문자 기반 스크립트에 활용할 수 있는 것은 아닙니다. Dynamo는 접근하기 쉬운 그래픽 알고리즘 편집기를 통해 Revit 데이터를 쉽게 사용할 수 있도록 만들려고 합니다.
사용자는 핵심 Dynamo 노드를 사용자 Revit 노드와 함께 사용하여 상호 운용성, 문서, 분석 및 생성을 위해 파라메트릭 워크플로우를 널리 확장할 수 있습니다. Dynamo를 사용하면 지루한 워크플로우 작업을 자동화하는 한편 설계를 더욱 자세하게 살펴볼 수 있습니다.
Revit 프로젝트 또는 패밀리 편집기에서 애드인을 찾은 다음, Dynamo를 클릭합니다.*
*Dynamo는 열려 있는 파일에서만 실행됩니다.
Revit에서 Dynamo를 열면 "Revit"이라는 새 카테고리가 나타납니다. 이 카테고리는 Revit 워크플로우에 특히 적합한 노드를 제공하는 UI에 포괄적으로 추가되었습니다.*
*Revit 전용 노드 패밀리를 사용하면 Dynamo 그래프가 Revit용 Dynamo에서 열 때만 작동합니다. 예를 들어 Revit용 Dynamo 그래프를 Dynamo 샌드박스에서 여는 경우 Revit 노드가 누락됩니다.
Revit은 강력한 프로젝트 관리 기능을 제공하는 플랫폼이므로 Dynamo의 파라메트릭 작업은 복잡할 수 있고 이로 인해 계산 속도가 느려질 수 있습니다. Dynamo에서 노드를 계산하는 데 시간이 오래 걸리는 경우 그래프를 개발하는 동안 Revit 작업 실행을 일시 중지하기 위해 노드 "동결" 기능을 사용할 수도 있습니다.
노드 및 와이어 섹션에서 노드 동결에 대한 자세한 내용을 확인할 수 있습니다.
Dynamo는 원래 AEC를 위해 만들어졌기 때문에 광범위하며 계속해서 성장하는 커뮤니티는 업계 전문가들로부터 배우고 연계할 수 있는 훌륭한 리소스가 됩니다. Dynamo의 커뮤니티는 건축가, 엔지니어, 프로그래머 및 설계자들이 열정을 다해 만들고 공유하는 공간입니다.
Dynamo는 지속적으로 진화하는 오픈 소스 프로젝트로, 많은 개발 작업은 Revit과 관련이 있습니다. 이 프로그램을 처음 접하는 경우 토론 포럼에서 질문을 게시하여 시작해 보십시오. 프로그래머이며 Dynamo 개발에 참여하고 싶으면 Github 리포지토리를 확인하십시오. 또한 타사 라이브러리를 위한 유용한 리소스는 Dynamo 패키지 관리자입니다. 이러한 패키지 중 다수는 AEC를 고려하여 만들어졌습니다. 이 장에서는 패널화를 위한 타사 패키지를 살펴보겠습니다.
Dynamo는 활성 블로그도 운영하고 있습니다. 최신 게시물을 읽어 보고 최신 개발 소식을 알아보십시오!
Dynamo의 강력한 기능은 파라메트릭 수준에서 매개변수를 편집할 수 있다는 것입니다. 예를 들어 생성 알고리즘 또는 시뮬레이션 결과를 사용하여 요소 배열의 매개변수를 구동할 수 있습니다. 이렇게 하면 Revit 프로젝트에서 동일한 패밀리의 인스턴스 세트에 사용자 특성을 지정할 수 있습니다.
인스턴스 매개변수는 지붕 표면의 패널 조리개를 정의하며, 조리개 비율은 0.1에서 0.4 사이입니다.
유형 기반 매개변수는 동일한 패밀리 유형이므로 표면의 모든 요소에 적용됩니다. 예를 들어, 각 패널의 재료는 유형 기반 매개변수로 구동될 수 있습니다.
이전에 Revit 패밀리를 설정한 경우 매개변수 유형(문자열, 숫자, 치수 등)을 지정해야 합니다. Dynamo에서 매개변수를 지정할 때는 올바른 데이터 유형을 사용해야 합니다.
또한 Dynamo를 Revit 패밀리의 특성에 정의된 파라메트릭 구속조건과 함께 사용할 수 있습니다.
Revit의 매개변수를 빠르게 검토하면 유형 매개변수와 인스턴스 매개변수가 있다는 것을 알 수 있습니다. 둘 다 Dynamo에서 편집할 수 있지만 아래 연습에서는 인스턴스 매개변수를 사용하겠습니다.
버전 0.8부터 Dynamo에는 기본적으로 단위가 없습니다. 이를 통해 Dynamo에서는 추상적 시각적 프로그래밍 환경을 유지할 수 있습니다. Revit 치수와 상호 작용하는 Dynamo 노드에서는 Revit 프로젝트의 단위를 참조합니다. 예를 들어, Dynamo에서 Revit의 길이 매개변수를 설정하는 경우 Dynamo의 해당 값에는 Revit 프로젝트의 기본 단위가 적용됩니다. 아래의 연습에서는 미터를 사용합니다.
단위를 빠르게 변환하려면 "Convert Between Units" 노드를 사용합니다. 이 노드는 길이, 면적 및 체적 단위를 즉시 변환하는 데 유용한 도구입니다.
아래 링크를 클릭하여 예제 파일을 다운로드하십시오.
전체 예시 파일 리스트는 부록에서 확인할 수 있습니다.
아래의 연습에서는 미터를 사용합니다.
이 연습에서는 Dynamo에서 기하학적 작업을 수행하지 않고, Revit 요소를 편집하는 데 중점을 둡니다. 여기서는 Dynamo 형상을 가져오지 않고 Revit 프로젝트에서 매개변수를 편집하기만 합니다. 이 연습은 기본적인 연습이며, 고급 Revit 사용자의 경우 매스의 인스턴스 매개변수이더라도 동일한 논리를 요소 배열에 적용하여 대규모 축척에 맞게 사용자화할 수 있습니다. 이 모든 작업은 "Element.SetParameterByName" 노드에서 수행됩니다.
이 섹션의 Revit 파일 예시로 시작합니다. 이전 섹션에서 구조 요소 및 가변 트러스를 제거했습니다. 이 연습에서는 Revit의 파라메트릭 리그와 Dynamo의 조작을 집중적으로 살펴보겠습니다.
Revit의 매스에서 건물을 선택하면 특성 패널에 인스턴스 매개변수의 배열이 표시됩니다.
Dynamo에서는 대상 요소를 선택하여 매개변수를 검색할 수 있습니다.
"Select Model Element" 노드를 사용하여 건물 매스를 선택합니다.
"Element.Parameters" 노드를 사용하여 이 매스의 모든 매개변수를 조회할 수 있습니다. 여기에는 유형 및 인스턴스 매개변수가 포함됩니다.
Element. Parameters 노드를 참조하여 대상 매개변수를 찾습니다. 또는 이전 단계의 특성 패널을 보고, 편집하려는 매개변수 이름을 선택할 수 있습니다. 이 경우 건물 매스에서 대규모 형상 이동에 영향을 미치는 매개변수를 찾습니다.
Element.SetParameterByName 노드를 사용하여 Revit 요소를 변경해 보겠습니다.
C_ode Block_을 사용하여 매개변수 리스트를 정의하고 각 항목을 따옴표로 묶어 문자열을 나타냅니다. 또한 일련의 "string" 노드가 여러 입력에 연결되어 있는 List.Create 노드를 사용할 수 있지만 Code block이 더 빠르고 쉽습니다. Revit에서 문자열이 대/소문자를 구분하여 정확한 이름과 일치하는지 확인합니다.
{"BldgWidth","BldgLength","BldgHeight", "AtriumOffset", "InsideOffset","LiftUp"};
각 매개변수의 값을 지정할 수도 있습니다. 캔버스에 6개의 "integer sliders" 를 추가하고 리스트의 해당 매개변수로 이름을 바꿉니다. 또한 각 슬라이더의 값을 위 이미지로 설정합니다. 하향식 순서: 62,92,25,22,8,12
매개변수 이름과 동일한 길이의 리스트를 사용하여 다른 code block 을 정의합니다. 이 경우 code block 에 대해 입력을 작성하는 변수(따옴표 제외) 이름을 지정합니다. 각 개별 입력에 slider 를 연결합니다.
{bw,bl,bh,ao,io,lu};
Code Block을 "Element.SetParameterByName"* 값 입력에 연결합니다. 자동으로 실행을 선택하면 결과가 자동으로 표시됩니다.
*이 예시는 인스턴스 매개변수에서는 작동하지만 유형 매개변수에서는 작동하지 않습니다.
Revit에서와 마찬가지로 이러한 매개변수 중 다수는 서로 종속됩니다. 물론 형상이 끊어질 수도 있는 결합도 있습니다. 매개변수 특성의 정의된 수식에서 이 문제를 해결하거나 Dynamo에서 수학 연산을 사용하여 유사한 논리를 설정할 수 있습니다(이는 연습 범위를 확장하려는 경우 추가로 수행해야 하는 과제임).
이러한 결합을 통해 건물 매스에 멋진 새 설계가 제공됩니다. 100, 92, 100, 25, 13, 51
다음으로, 유사한 프로세스를 사용하여 정면을 편집하는 방법을 살펴보겠습니다.
그래프를 복사하여 트러스 시스템을 하우징할 정면 유리에 집중해 봅니다. 이 경우 다음 네 개의 매개변수를 분리합니다.
{"DblSkin_SouthOffset","DblSkin_MidOffset","DblSkin_NorthOffset","Facade Bend Location"};
또한 number sliders 를 작성하고 적절한 매개변수로 이름을 바꿉니다. 하향식의 처음 3개의 슬라이더는 [0,10] 도메인에 다시 매핑되어야 하지만 최종 슬라이더인 "Facade Bend Location" 은 [0,1] 도메인에 다시 매핑되어야 합니다. 이러한 하향식 값은 다음과 같은 값으로 시작해야 합니다(임의의 값임). 2.68, 2.64, 2.29, 0.5
새 Code block을 정의하고 슬라이더를 연결합니다.
{so,mo,no,fbl};
그래프의 이 부분에서 sliders 를 변경하여 정면 유리를 훨씬 더 크게 만들 수 있습니다. 9.98, 10.0, 9.71 ,0.31
Revit 버전 | 첫 번째 안정적인 Dynamo 버전 | 마지막으로 지원되는 Revit용 Dynamo 버전 |
---|---|---|
편집 매개변수의 다양한 응용 방법을 알게 되면 Dynamo를 사용하여 Revit의 많은 요소를 편집해볼 수 있습니다. 이 작업은 계산이 오래 걸리는 작업일 수 있습니다. 즉, 속도가 느릴 수 있습니다. 많은 수의 요소를 편집하는 경우 그래프를 개발하는 동안 Revit 작업 실행을 일시 중지하기 위해 노드 "동결" 기능을 사용할 수도 있습니다. 노드 동결에 대한 자세한 내용은 솔리드 장의 "" 섹션을 참조하십시오.
2013
2014
2015
2016
2017
2018
2019
2020+
2.1.0 - Revit 2020+에는 이제 Dynamo가 포함되어 있고 Revit처럼 업데이트를 수신합니다.
해당 사항 없음