앞서 기본 건물 매스 편집을 살펴보았지만 한 번에 많은 요소를 편집하면서 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 에서 영역을 전환하기만 하면 됩니다.