Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Dynamo가 다양한 복합 형상 형태를 작성할 수 있지만, 간단한 기하학적 원형은 모든 계산 방식 설계의 토대를 형성합니다. 이는 최종 설계 형태로 직접 표현되거나 보다 복잡한 형상이 생성되는 비계로 사용됩니다.
CoordinateSystem은 반드시 형상의 일부는 아니지만 형상을 생성하기 위한 중요한 도구입니다. CoordinateSystem 객체는 회전, 방향 및 축척 등의 위치 및 형상 변환을 모두 추적합니다.
회전, 축척 또는 방향 전환 없이 한 점(x = 0, y = 0, z = 0)을 중심으로 CoordinateSystem을 작성하려면 ID 생성자를 호출하기만 하면 됩니다.
형상 변환이 있는 CoordinateSystem은 이 장의 범위를 벗어나지만 다른 생성자를 사용하여 특정 지점에서 CoordinateSystem.ByOriginVectors 라는 좌표계를 작성할 수 있습니다.
가장 간단한 기하학적 원형은 3D 공간에서 0차원 위치를 나타내는 점입니다. 앞에서 설명한 것처럼 특정 좌표계에서 점을 작성하는 여러 가지 방법이 있습니다. Point.ByCoordinates 는 지정된 X, Y 및 Z 좌표를 사용하여 점을 작성하고 Point.ByCartesianCoordinates 는 특정 좌표계에서 지정된 X, Y 및 Z 좌표를 사용하여 점을 작성합니다. Point.ByCylindricalCoordinates 는 반지름, 회전 각도 및 높이를 갖는 원통에 놓여 있는 점을 작성하고, Point.BySphericalCoordinates 는 반지름 및 2개의 회전 각도가 있는 구에 놓여 있는 점을 작성합니다.
이 예는 다양한 좌표계에서 작성된 점을 보여줍니다.
그 다음으로 높은 차원의 Dynamo 원형은 두 끝점 사이의 무한한 수의 점을 나타내는 선 세그먼트입니다. 생성자 Line.ByStartPointEndPoint 로 두 개의 경계점을 명시적으로 지정하거나 해당 방향에서 시작점, 방향 및 길이(Line.ByStartPointDirectionLength)를 지정하여 선을 작성할 수 있습니다.
Dynamo에는 3D로 만든 기하학적 원형의 가장 기본적인 유형을 나타내는 객체가 있습니다. 예를 들어 직육면체는 Cuboid.ByLengths 로 작성되고, 원추는 Cone.ByPointsRadius 및 Cone.ByPointsRadii 로 작성됩니다. 원통은 Cylinder.ByRadiusHeight 로 작성되고, 구는 Sphere.ByCenterPointRadius 로 작성됩니다.
이 섹션에서는 DesignScript를 사용하여 형상을 작성하는 방법에 대한 일련의 학습 내용을 찾을 수 있습니다. 예제 DesignScript를 Dynamo 코드 블록으로 복사하여 후속 작업을 수행합니다.
Dynamo 표준 형상 라이브러리의 가장 단순한 기하학적 객체는 점입니다. 모든 형상은 생성자라는 특수 함수를 사용하여 작성되며, 생성자는 각각 해당 특정 형상 유형의 새 인스턴스를 반환합니다. Dynamo에서 생성자는 객체 유형의 이름(이 경우 Point)으로 시작되며 뒤에 생성 메서드가 옵니다. x, y 및 z 데카르트 좌표로 지정한 3D 점을 작성하기 위해 ByCoordinates 생성자를 사용합니다.
Dynamo의 생성자는 일반적으로 "By" 접두어로 지정되고, 이러한 함수를 호출하면 새로 작성된 해당 유형의 객체가 반환됩니다. 새로 작성된 이 객체는 등호 기호의 왼쪽에 명명된 변수에 저장됩니다.
대부분의 객체에는 여러 다른 생성자가 있으며 BySphericalCoordinates 생성자를 사용하여 구의 반지름, 첫 번째 회전 각도 및 두 번째 회전 각도(도 단위로 지정됨)로 지정된 구에 있는 점을 작성할 수 있습니다.
선처럼 더 높은 차원의 형상을 생성하는 데 점을 사용할 수 있으며, ByStartPointEndPoint 생성자를 사용하여 두 점 간에 선 객체를 작성할 수 있습니다.
마찬가지로 일련의 선 또는 곡선을 가져와 그 사이의 표면을 보간하는 Loft 생성자를 사용하는 경우처럼 선을 사용하여 더 높은 차원의 표면 형상을 만들 수 있습니다.
표면 역시 더 높은 차원의 솔리드 형상을 작성하는 데 사용할 수 있는데, 예를 들어 지정된 거리만큼 표면을 두껍게 할 수 있습니다. 많은 객체에는 프로그래머가 해당 객체에 대해 명령을 수행할 수 있도록 하는 메서드라고 하는 함수가 연결되어 있습니다. 모든 형상 조각에 공통적으로 적용되는 메서드에는 각각 지정된 양만큼 형상을 변환(이동) 및 회전하는 Translate 및 Rotate 가 포함됩니다. 표면에는 표면의 새 두께를 지정하는 숫자인 단일 입력을 사용하는 Thicken 메서드가 있습니다.
Intersection 명령은 더 높은 차원 객체에서 더 낮은 차원 형상을 추출할 수 있습니다. 이렇게 추출한 낮은 차원 형상은 형상 작성, 추출, 재작성으로 연결되는 일련의 프로세스에서 더 높은 차원 형상의 기준을 형성할 수 있습니다. 이 예에서는 생성된 솔리드를 사용하여 표면을 작성하고 표면을 사용하여 곡선을 작성합니다.
Dynamo에는 자유형 곡선을 만드는 두 가지 기본적인 방법이 있습니다. 점 모음을 지정하고 Dynamo에서 점 간에 부드러운 곡선을 보간하도록 하거나, 특정 차수 곡선의 기본 제어점을 지정하는 보다 쉬운 방법을 사용할 수 있습니다. 보간된 곡선은 설계자가 필요한 선의 형태를 정확히 알고 있거나 설계에 곡선이 통과할 수 있는 경우와 통과할 수 없는 경우에 대한 특정 구속조건이 있을 때 유용합니다. 제어점을 통해 지정된 곡선은 본질적으로 알고리즘이 최종 곡선 형태로 부드럽게 연결되는 일련의 직선 세그먼트입니다. 제어점을 통해 곡선을 지정하면 다듬기 차수가 다양한 곡선 형태를 살펴보거나, 곡선 세그먼트 간에 매끄럽게 연결되어야 하는 경우에 유용할 수 있습니다.
보간된 곡선을 작성하려면 점 모음을 NurbsCurve.ByPoints 메서드에 전달하기만 하면 됩니다.
생성된 곡선은 각각 모음의 첫 번째 점과 마지막 점에서 시작하고 끝나는 각 입력 점과 교차합니다. 선택적 주기 매개변수를 사용하여 닫힌 주기 곡선을 작성할 수 있습니다. Dynamo가 누락된 세그먼트를 자동으로 채우므로 중복된 끝점(시작점과 동일)은 필요하지 않습니다.
NurbsCurve는 많은 부분 동일한 방식으로 생성됩니다. 입력 점이 직선 세그먼트의 끝점을 나타내고, 두 번째 매개변수가 차수*라고 하는 곡선에 적용되는 다듬기의 정도와 유형을 지정합니다. 차수가 1인 곡선은 다듬기가 없고 폴리선이 됩니다.
차수가 2인 곡선은 폴리선 세그먼트의 중간점과 교차하고 접하도록 매끄럽게 표시됩니다.
Dynamo는 차수 20까지 NURBS(비균일 유리 B-스플라인) 곡선을 지원하며, 다음 스크립트는 다듬기 수준을 늘릴 경우 곡선 모양에 미치는 영향을 보여줍니다.
곡선의 차수보다 적어도 하나 더 많은 제어점이 있어야 합니다.
제어 정점으로 곡선을 생성할 때의 또 다른 이점은 개별 곡선 세그먼트 간에 접선을 유지할 수 있다는 것입니다. 마지막 두 제어점 사이의 방향을 추출하고, 다음 곡선의 처음 두 제어점으로 이 방향을 계속 진행하는 방식으로 이 작업을 수행할 수 있습니다. 다음 예에서는 곡선을 부드럽게 하여 별도의 NURBS 곡선을 두 개 작성합니다.
*위 내용은 NURBS 곡선 형상에 대한 매우 간단한 설명입니다. 더 정확하고 자세한 내용은 참고 문헌에서 Potmann, et al, 2007을 참고하십시오.
3D 공간에서 x, y, z 좌표를 명시적으로 지정하여 특정 형상 객체를 작성할 수 있습니다. 그러나 형상은 객체 자체 또는 기본 CoordinateSystem에서 기하학적 변환을 사용하여 최종 위치로 이동되는 경우가 더 많습니다.
가장 간단한 기하학적 변환은 x, y, z 방향으로 지정된 단위 수만큼 객체를 이동하는 전환입니다.
Dynamo의 모든 객체는 .Translate 메서드를 객체 이름의 끝에 추가하여 변환할 수 있지만, 좀 더 복잡한 변환은 기본 CoordinateSystem에서 새 CoordinateSystem으로 객체를 변환해야 합니다. 예를 들어 객체를 x축을 중심으로 45도 회전하려면 객체를 회전 없는 기존 CoordinateSystem에서 .Transform 메서드를 사용하여 x축을 중심으로 45도 회전한 CoordinateSystem으로 변환해야 합니다.
CoordinateSystem은 변환 및 회전뿐 아니라 축척 또는 전단이 조정되어 작성될 수도 있습니다. CoordinateSystem은 다음과 같이 .Scale 메서드로 축척할 수 있습니다.
전단된 CoordinateSystem은 직교하지 않는 벡터를 CoordinateSystem 생성자에 입력하여 작성합니다.
축척 및 전단은 회전 및 변환보다 비교적 더 복잡한 기하학적 변환이므로 모든 Dynamo 객체가 이러한 변환을 거치는 것은 아닙니다. 다음 표는 균일하지 않게 축척이 조정된 CoordinateSystem 및 전단된 CoordinateSystem이 있을 수 있는 Dynamo 객체를 간략하게 설명합니다.
NurbsCurve의 2D 아날로그는 NurbsSurface입니다. 자유형 NurbsCurve와 마찬가지로 NurbsSurface는 두 가지 기본 방법으로 생성할 수 있습니다. 기준점 세트를 입력하고 Dynamo에서 사이를 보간하도록 하거나, 표면의 제어점을 명시적으로 지정할 수 있습니다. 또한 자유형 곡선과 마찬가지로, 보간된 표면은 설계자가 표면에 필요한 모양을 정확하게 파악하고 있거나 설계에서 표면이 제약 조건 점을 통과해야 하는 경우에 유용합니다. 반면에 제어점으로 작성된 표면은 예비 설계의 다양한 다듬기 수준에서 더 유용할 수 있습니다.
보간된 표면을 작성하려면 표면의 모양을 대략적으로 나타내는 2D 점 모음을 생성하기만 하면 됩니다. 이 모음은 톱니 모양이 아닌 직사각형이어야 합니다. NurbsSurface.ByPoints 메서드는 이러한 점에서 표면을 생성합니다.
표면의 기본 제어점을 지정하여 자유형 NurbsSurface를 작성할 수도 있습니다. NurbsCurve와 마찬가지로, 제어점은 표면의 차수에 따라 최종 표면 형태로 완화되는 직선 세그먼트로 사각형 메쉬를 나타내는 것으로 간주할 수 있습니다. 제어점으로 NurbsSurface를 작성하려면 표면의 양방향에서 기본 곡선의 각도를 나타내는 두 개의 추가 매개변수를 NurbsSurface.ByPoints 에 포함합니다.
다음과 같이 NurbsSurface의 각도를 늘려 결과 표면 형상을 변경할 수 있습니다.
입력 점 세트 간을 보간하여 표면을 작성할 수 있는 것처럼 기준 곡선 세트 간에 보간하여 표면을 작성할 수 있는데, 이를 로프트라고 합니다. 로프트된 곡선은 입력 곡선의 모음을 유일한 매개변수로 사용하여 Surface.ByLoft 생성자를 통해 작성됩니다.
회전 표면은 중심 축 주위로 기준 곡선을 스윕하여 작성된 추가적인 표면 유형입니다. 보간된 표면이 보간된 곡선의 2D 아날로그라면 회전 표면은 원 및 호의 2D 아날로그입니다.
회전 표면은 기준 곡선(표면의 "모서리"를 나타냄), 축 원점(표면의 기준점), 축 방향(중심 "코어" 방향), 스윕 시작 각도와 끝 각도에 의해 지정됩니다. 이러한 항목은 Surface.Revolve 생성자의 입력으로 사용됩니다.
계산 방식 설계의 객체는 최종 위치와 형태로 명시적으로 작성되는 경우가 드물며, 기존 형상을 기준으로 변환하고 회전되고 배치되는 경우가 많습니다. 벡터 수학은 형상에 방향을 지정할 뿐 아니라 시각적 표현 없이 3D 공간을 통한 이동을 개념화할 수 있는 일종의 기하학적 비계 역할을 합니다.
가장 기본적인 위치에서는 벡터가 3D 공간에서의 위치를 나타내며 종종 위치(0, 0, 0)에서 해당 위치까지의 화살표 끝점으로 간주됩니다. 벡터는 ByCoordinates 생성자로 작성될 수 있으며 새로 작성된 벡터 객체의 x, y 및 z 위치를 사용합니다. 벡터 객체는 기하학적 객체가 아니므로 Dynamo 창에 나타나지 않습니다. 하지만 새로 작성하거나 수정한 벡터에 대한 정보를 콘솔 창에 출력할 수 있습니다.
일련의 수학 연산이 벡터 객체에 대해 정의되어 있으므로, 1D 공간의 숫자 행에서 실수를 이동하는 것처럼 3D 공간에서 객체에 대해 추가, 빼기, 곱하기 또는 이동을 수행할 수 있습니다.
벡터 추가는 두 벡터의 구성요소 합계로 정의되며, 두 구성요소 벡터 화살표가 "꼬리 끝"에 배치된 경우 결과 벡터로 간주될 수 있습니다. 벡터 추가는 Add 메서드를 사용하여 수행되며 왼쪽 다이어그램으로 표시됩니다.
마찬가지로, Subtract 메서드를 사용해서 두 개의 벡터 객체를 서로에게서 뺄 수 있습니다. 벡터 빼기는 첫 번째 벡터에서 두 번째 벡터로의 방향으로 간주될 수 있습니다.
벡터 곱하기는 벡터의 끝점을 주어진 축척 비율만큼 해당 방향으로 이동하는 것으로 생각할 수 있습니다.
보통 결과 벡터의 길이가 축척된 크기와 정확히 동일해지도록 벡터의 축척을 조정하는 것이 좋습니다. 이는 먼저 벡터를 정규화하여, 즉 벡터의 길이를 정확히 1로 설정할 수 있습니다.
c는 여전히 (1, 2, 3)과 동일한 방향을 가리키지만, 길이는 정확히 5가 되었습니다.
벡터 수학에는 두 가지 추가 메서드가 있는데, 이러한 메서드는 1D 수학과 명확히 평행은 아닌 외적 및 내적입니다. 외적은 두 개의 기존 벡터에 대해 90도로 직교하는 벡터를 생성하는 방법입니다. 예를 들어, x축과 y축의 외적은 z축이지만 두 입력 벡터가 서로 직교할 필요는 없습니다. 외적 벡터는 Cross 메서드로 계산합니다.
벡터 수학의 추가적인 고급 함수는 내적입니다. 두 벡터 사이의 내적은 두 벡터 사이의 각도와 정확하지는 않지만 관련이 있는 실수(Vector 객체가 아님)입니다. 내적의 유용한 특성 중 하나는 두 벡터가 수직인 경우에만 두 벡터 사이의 내적이 0이 된다는 것입니다. 내적은 Dot 메서드로 계산합니다.
Intersect, Trim 및 _SelectTrim_은 주로 점, 곡선 및 표면과 같은 낮은 차원의 형상에서 사용됩니다. 반면에 솔리드 형상에는 구성 후 형태를 수정하는 추가 메서드 세트가 있습니다. 이러한 메서드는 Trim 과 비슷한 방식으로 재료를 빼고 요소를 함께 결합하여 더 큰 전체 구조를 형성합니다.
Union 메서드는 두 개의 솔리드 객체를 사용하고 두 객체가 차지하는 공간 외부에 단일 솔리드 객체를 작성합니다. 객체 사이의 겹치는 공간은 최종 형태로 결합됩니다. 이 예에서는 구와 직육면체를 단일 솔리드 구-정육면체 모양으로 결합합니다.
Trim 과 같은 Difference 메서드는 기준 솔리드에서 입력 도구 솔리드의 콘텐츠를 뺍니다. 이 예에서는 구가 약간 안으로 잘립니다.
Intersect 메서드는 두 개의 솔리드 입력 사이에서 겹치는 솔리드를 반환합니다. 다음 예에서는 Difference 가 Intersect 로 변경되었으며 결과 솔리드는 처음에 잘린 누락된 보이드입니다.
계산 방식 설계에서 곡선과 표면은 후속 형상을 구성하기 위한 기본 비계로 자주 사용됩니다. 이러한 초기 형상을 이후 형상의 기반으로 사용하려면 스크립트는 객체의 전체 영역에서 위치 및 방향 등의 품질을 추출할 수 있어야 합니다. 곡선과 표면 모두 이러한 추출을 지원하는데, 이를 매개변수화라고 합니다.
곡선의 모든 점은 0에서 1 사이의 고유한 매개변수를 갖는 것으로 간주될 수 있습니다. 여러 제어점이나 보간된 점을 기준으로 NurbsCurve를 작성하려는 경우 첫 번째 점은 매개변수 0이 되고 마지막 점은 매개변수 1이 됩니다. 정확히 어떤 매개변수가 중간점인지 미리 알 수는 없습니다. 이러한 상황은 심각한 제한 사항처럼 들릴 수 있지만, 이는 일련의 유틸리티 함수를 통해 완화될 수 있습니다. 표면의 매개변수화는 곡선과 유사하지만, 표면에는 하나의 매개변수 대신 u 및 v라는 두 개의 매개변수개가 있습니다. 다음 점을 사용하여 표면을 작성하려는 경우:
p1에는 매개변수 u = 0 v = 0을 지정하고, p9에는 매개변수u = 1 v = 1을 지정할 수 있습니다.
매개변수화는 곡선을 생성하는 데 사용되는 점을 결정할 때는 별로 유용하지 않습니다. 매개변수화의 주요 용도는 중간점이 NurbsCurve 및 NurbsSurface 생성자로 생성된 경우 위치를 결정하는 것입니다.
곡선에는 0에서 1 사이의 단일 실수 인수를 사용하여 해당 매개변수에서 Point 객체를 반환하는 PointAtParameter 메서드가 있습니다. 예를 들어 이 스크립트는 매개변수 0, .1, .2, .3, .4, .5, .6, .7, .8, .9, 1에서 점을 찾습니다.
마찬가지로 표면에는 생성된 점의 u 및 v 매개변수인 두 개의 인수를 사용하는 PointAtParameter 메서드가 있습니다.
곡선과 표면의 개별 점을 추출하는 것이 유용할 수 있지만, 스크립트에서는 곡선 또는 표면이 향하는 방향과 같은 매개변수의 특정 기하학적 특성을 지정해야 하는 경우가 많습니다. CoordinateSystemAtParameter 메서드는 해당 위치 뿐만 아니라 곡선이나 표면의 매개변수에서 방향이 지정된 CoordinateSystem을 찾습니다. 예를 들어 다음 스크립트는 회전된 표면을 따라 방향이 지정된 CoordinateSystem을 추출하고, CoordinateSystems의 방향을 사용하여 표면에 수직으로 진행되는 선을 생성합니다.
앞서 설명한 대로 매개변수화가 곡선이나 표면의 길이를 따라 항상 균일한 것은 아닙니다. 즉, 매개변수 0.5가 항상 중간점에 해당하지는 않으며 0.25가 항상 곡선 또는 표면에서 1/4 위치에 있는 점에 해당하는 것은 아닙니다. 이러한 제한을 해결할 수 있도록 곡선에는 곡선을 따라 특정 길이의 점을 찾을 수 있는 추가 매개변수화 명령 세트가 있습니다.
다음 Python 스크립트는 몇 가지 예에서 점 배열을 생성합니다. 이러한 스크립트는 다음과 같이 Python 스크립트 노드에 붙여 넣어야 합니다.
python_points_1
python_points_2
python_points_3
python_points_4
python_points_5
지금까지 많은 예는 더 낮은 차원의 객체에서 더 높은 차원의 형상을 생성하는 데 초점을 맞추었습니다. 교차 메서드를 사용하면 더 높은 차원의 형상에서 더 낮은 차원의 객체를 생성할 수 있으며, 자르기 및 선택 자르기 명령을 사용하면 기하학적 형태가 작성된 후에 스크립트를 통해 세밀하게 수정할 수 있습니다.
Intersect 메서드는 Dynamo의 모든 형상 조각에 대해 정의됩니다. 즉, 이론상 모든 형상 조각은 다른 형상 조각과 교차할 수 있습니다. 물론 결과 객체가 항상 입력 점 자체가 되는 점 관련 교차처럼, 일부 교차의 경우에는 의미가 없을 수 있습니다. 객체 간의 가능한 다른 교차 조합은 다음 차트에 설명되어 있습니다. 또한 이 차트에는 다양한 교차 작업의 결과도 나와 있습니다.
다음의 간단한 예는 평면과 NurbsSurface의 교차점을 보여줍니다. 교차는 다른 모든 NurbsCurve처럼 사용할 수 있는 NurbsCurve 배열을 생성합니다.
Trim 메서드는 거의 모든 형상 조각에 정의된다는 점에서 Intersect 메서드와 매우 유사합니다. 그러나 _Intersect_보다 _Trim_에 훨씬 더 많은 제한이 있습니다.
Trim 메서드에서 유의할 사항은 삭제할 형상 및 유지할 조각을 결정하는 "선택" 점이 필요하다는 것입니다. Dynamo는 선택 점에서 가장 가까운 잘린 형상을 찾아서 이를 버립니다.
클래스 | 균일하지 않게 축척이 조정된 CoordinateSystem | 전단 CoordinateSystem |
---|---|---|
호
아니요
아니오
NurbsCurve
예
예
NurbsSurface
아니요
아니오
원
아니요
아니오
선
예
예
평면
아니요
아니오
점
예
예
폴리곤
아니요
아니오
솔리드
아니요
아니오
표면
아니요
아니오
문자
아니요
아니요
사용: 점 | 곡선 | 평면 | 표면 | 솔리드 |
위치: 곡선 | 예 | 아니오 | 아니오 | 아니오 | 아니오 |
폴리곤 | - | 아니오 | 예 | 아니오 | 아니오 |
표면 | - | 예 | 예 | 예 | 예 |
솔리드 | - | - | 예 | 예 | 예 |
포함: | 표면 | 곡선 | 평면 | 솔리드 |
표면 | 곡선 | 점 | 점, 곡선 | 표면 |
곡선 | 점 | 점 | 점 | 곡선 |
평면 | 곡선 | 점 | 곡선 | 곡선 |
솔리드 | 표면 | 곡선 | 곡선 | 솔리드 |