안녕하세요. 이거DAM?의 스티븐입니다.
어셈블리 작업에서 구속(Constraint)은 가장 기본적이면서 필수적인 기능이며, 각 파트의 위치와 움직임 등을 정의하는 역할을 합니다. 3D CAD를 처음 접하거나 기본 개념이 숙달되어 있지 않은 분들이 이해하기 어려워하는 부분인데요.
예를 들면, 어릴 적 가지고 놀던 로봇 또는 레고 등을 조립하는 전체 과정을 어셈블리 작업이라고 하고, 알맞은 위치에 각 부품을 배치하거나 구동부를 조립하는 각각의 개별 과정, 하나하나를 구속이라고 할 수 있습니다. 각 부품의 수량이 많거나 복잡한 경우가 아니라면, 보통 설명서를 보지 않더라도 본능적으로 조립했던 경험이 있을 겁니다. 이는 본인의 직관을 통해 직접 조립하기 때문에 가능한 일이었을 겁니다.
만약 설명서가 없는 남에게 조립 과정을 설명해야 한다면 가능했을까요? 아마 쉽지 않았을 겁니다. 정말 이해가 쉽게 설명할 수 있는 일타 강사 정도가 온다면 가능했을지 모르겠으나 상대방이 이해도가 전혀 없고 조금만 복잡해지면 이 또한 쉽지 않습니다.
그래서 서로 소통을 쉽게 할 수 있도록 약속을 하는데, 이를 3D CAD에서는 구속이라고 합니다. 아주 기본적인 개념을 약속하고 원하는 위치에 정확하게 배치할 수 있도록 여러 구속 조건을 3D CAD에서 사용자에게 제시하고 있습니다. 이 구속이라는 개념은 자유도라는 개념을 기반으로 만들어져 있죠. 지금부터 여기에 관해 자세히 알아보겠습니다.
구속과 자유도
자유도(DOF; Degree of Freedom)는 어떤 물체의 움직임을 설명하기 위해 필요한 변수의 개수로, 3차원 공간에서 물체는 기본적으로 3개의 병진 자유도와 3개의 회전 자유도, 총 6개의 자유도를 가집니다.
이때 구속이란 6개의 자유도를 정의하여 물체의 움직임을 제한하는 것을 의미합니다. 모든 자유도가 정의된 후에는 부품은 더 이상 마음대로 움직일 수 없게 됩니다. 일반적으로 고정부를 구속한 후에는 각 부품이 움직일 수 없는 상태가 되며, 구동부를 구속한 후에는 정의된 자유도 내에서 움직일 수 있습니다.
병진 자유도
물체가 X, Y, Z 축을 따라 이동하는 자유도를 의미합니다.
회전 자유도
물체가 X, Y, Z 축을 기준으로 회전하는 자유도를 의미합니다.
구속의 종류
어셈블리 작업에서 사용되는 구속의 종류는 매우 다양하고, 각 목적과 상황에 맞게 사용해야 합니다. 여기서는 대표적인 몇 가지만 소개해 드리겠습니다. 각 구속에 첨부된 이미지는 이해를 돕기 위한 이미지입니다.
일치 (Coincident)
가장 많이 사용하는 구속 조건 중 하나로, 선택한 두 객체(면 또는 선 등)을 동일한 평면 또는 선상에서만 움직이도록 정의하는 구속입니다.
예를 들어, 직육면체 형상의 바닥면과 XY 평면 사이에 일치 구속을 삽입하는 경우, 직육면체의 바닥면은 XY 평면 상에 위치하며 XY 평면 위에서만 움직일 수 있기 때문에, Z축 기준 병진 자유도와 X축, Y축 기준 회전 자유도가 제한됩니다.
접선 (Tangent)
선택한 두 객체(곡선, 곡면, 평면 등)이 서로 접하도록 정의하는 구속입니다.
예를 들어, Z축으로 긴 원기둥 형상의 측면과 YZ 평면 사이에 접선 구속을 삽입하는 경우, 원기둥 형상의 측면과 YZ 평면은 서로 접하도록 만나게 되기 때문에, X축 기준 병진 자유도와 Y축 기준 회전 자유도가 제한됩니다.
동심 (Concentric)
선택한 두 객체(원기둥의 측면 또는 직선, 축 등)의 중심이 동일하도록 정의하는 구속입니다. 주로 실린더나 볼트 체결 등에 자주 사용합니다.
예를 들어, Z축으로 긴 원기둥 형상과 Z축 사이에 동심 구속을 삽입하는 경우, 원기둥의 중심과 Z축이 동일하도록 위치하며, X축과 Y축 기준 병진 자유도와 회전 자유도가 제한됩니다.
각도 (Angle)
선택한 두 객체(면 또는 선 등) 사이에 특정 각도가 유지되도록 정의하는 구속입니다. 각도 구속은 특정 각도를 유지할 수도 있지만 특정 각도 범위 내에서 움직이도록 정의할 수도 있습니다.
예를 들어, 직육면체의 바닥면과 XY 평면 사이에 10~30도 범위의 각도 구속을 삽입하는 경우, 바닥면과 XY 평면이 이루는 각도가 10~30도 범위 내에서 회전하며, X축과 Y축 기준 회전 자유도가 제한됩니다.
다른 구속과 달리 각도 구속만으로는 구속에 의한 움직임을 확인하기 어려우며, 다른 기준이 되는 구속이 필요합니다. 위의 예시를 기준으로, 바닥면의 특정 모서리와 X축 또는 Y축 사이에 일치 구속을 삽입하여 기준을 정의하면, 각도 구속에 의한 움직임을 확인할 수 있습니다.
거리 (Distance)
선택한 두 객체(면 또는 선 등) 사이에 특정 거리가 유지되도록 정의하는 구속입니다. 거리 구속도 각도 구속과 마찬가지로 특정 거리를 유지하도록 할 수도 있지만, 특정 거리 범위 내에서 움직이도록 정의할 수도 있습니다.
예를 들어, 직육면체의 바닥면과 XY 평면 사이에 10~30mm 범위의 거리 구속을 삽입하는 경우, 바닥면과 XY 평면 사이에 10~30mm 범위 내에서 Z 방향으로 움직이며, Z축 기준 병진 자유도와 X축과 Y축 기준 회전 자유도가 제한됩니다.
또 거리 구속은 선택한 두 객체가 평면일 경우, 일치 또는 평행 구속처럼 선택한 두 평면이 평행하도록 위치합니다. 그래서 몇몇 3D CAD에서는 일치 구속 또는 평행 구속에서도 특정 거리 값 또는 범위를 입력할 수 있어서, 거리 구속 대용으로 사용하기도 합니다.
구속 상태
하나의 파트의 모든 자유도를 완전히 구속하기 위해서는 2~3 개의 구속을 사용해야 합니다. 이때 일치 구속만 3 개를 반복하여 사용할 수도 있고, 서로 다른 구속을 조합하여 사용할 수도 있습니다. 이때 주의해야 할 점이 있죠.
바로 구속 상태입니다. 특정 파트의 구속 상태는 크게 불완전 구속, 완전 구속, 과 구속으로 나눌 수 있으며, 각 상태는 아래와 같습니다.
- 불완전 구속: 완전한 구속이 이루어지지 않은 상태
- 완전 구속: 모든 자유도의 구속이 완료된 상태
- 과 구속: 특정 자유도에 과도한 구속이 삽입된 상태
과 구속 상태를 예시로 설명하자면, 육면체의 바닥면과 XY 평면 사이에 일치 구속을 삽입하여 Z축 기준 병진 자유도와 X축과 Y축 기준 회전 자유도를 제한한 상태에서, 바닥면과 XY 평면 사이에 거리 구속을 삽입하여 Z축으로 30mm 이동하도록 한다면, 먼저 삽입한 일치 구속과 이후에 삽입한 거리 구속이 서로 상충하기 때문에 과 구속 상태가 발생합니다.
위와 같이 과 구속 상태는 실제로 일어날 수 없는 상황을 의미하며, 과 구속이 발생한 경우에는 정확히 어떤 구속이 필요한지 다시 파악한 후, 상충하는 두 구속 중 하나를 삭제한다면 과 구속 상태를 해결할 수 있습니다.
구동부 어셈블리
구속이 중요한 이유는 고정부만 있는 제품도 마찬가지겠지만, 특히 구동부가 있는 제품을 가상의 공간에서 조립하여 움직여보고 간섭이 발생하는지 사전에 파악할 수 있기 때문인데요. 실린더와 피스톤 헤드, 크랭크 로드, 축 등 간단한 직선과 회전 운동만 존재하는 구동부의 경우, 위에서 설명해 드린 몇몇 구속을 특정 값이 아니라 범위로 정의하면 쉽게 표현할 수 있습니다. 또는, 특정 범위가 아니라 크랭크 축처럼 지속적으로 반복 회전 운동을 해야 하는 경우에는 의도적으로 불완전 구속 상태로 놔둘 수도 있습니다.
그러나 일반적인 움직임이 아닌 기어 또는 풀리, 특정 경로를 따라 이동하는 등의 복잡한 구동부는 위에서 언급하지 않은 구속을 추가로 사용해야 합니다.
또 사용하는 3D CAD에 따라 특정 움직임을 모사하는 것을 넘어서 물리적인 간섭에 의한 움직임을 표현할 수도 있습니다. 예를 들어 기어비를 기준으로 기어의 회전 움직임을 단순히 모사하는 것이 아닌 회전에 의해 A 기어의 톱니가 B 기어의 톱니를 밀어서 회전하도록 정의할 수도 있습니다.
다만, 대용량의 어셈블리를 구동하는 경우, 움직임을 계산하는 것을 소프트웨어 또는 하드웨어가 버티지 못할 수 있습니다.
마치며…
지금까지 어셈블리 작업에서 사용하는 구속에 대해서 알아보았습니다. 구속을 잘 활용하면 어셈블리 내에서 부품의 움직임과 위치를 정밀하게 확인할 수 있을 뿐만 아니라, 구동을 포함한 다양한 기능을 효과적으로 설계할 수 있기 때문에 구속은 3D CAD에서 아주 중요한 기능 중 하나입니다. 어셈블리 작업에 관해서 더 궁금하시다면 아래 ZW3D 예제 강의 영상을 참고하시기 바랍니다.
이외에도 3D CAD 관련 예제 파일과 영상을 업로드 하고 있으니 관심 있으신 분들은 확인해 보세요~!
또, 추가적으로 더 궁금한 점 또는 도움이 필요한 부분이 있다면 댓글 또는 1:1 문의를 통해 알려주세요.
감사합니다 🙂