- Introduction
- Discovering FreeCAD
- Working with FreeCAD
- Python scripting
- The community
FreeCAD는 자유롭게 형상을 조형하는 방식이 아니라, 기하 형상이 기본 규칙과 매개변수에 의해 정의되는 파라메트릭 모델링 방식을 사용합니다. 이는 각 구성 요소의 치수와 특성이 매개변수로 정의되며, 이러한 매개변수가 프로그램에 형상을 어떻게 생성할지를 지시한다는 뜻입니다. 예를 들어 원기둥을 만들 때 반지름과 높이 같은 매개변수를 지정하면, FreeCAD는 이 값들을 기반으로 정확한 기하학적 형상을 생성합니다.
FreeCAD에서 파라메트릭 객체는 어떤 매개변수가 변경될 때마다 실행되는, 작은 프로그래밍 가능한 스크립트와 같은 개념입니다. 이러한 매개변수는 정수나 부동소수점 수뿐만 아니라, 밀리미터·미터·피트와 같은 실제 치수 값, x·y·z로 표현되는 좌표, 텍스트 문자열, 또는 다른 객체에 대한 참조 등 매우 다양할 수 있습니다.
이처럼 매개변수의 활용 범위가 넓기 때문에, 각 새 객체가 이전 객체로부터 특성을 물려받으면서 동시에 추가적인 속성을 도입하는 일련의 연쇄 작업을 통해 복잡한 모델을 생성할 수 있습니다.
예를 들어, 파라메트릭 모델링을 통해 입체적인 정육면체 형태의 객체를 만드는 과정을 생각해 볼 수 있습니다. 먼저 길이 l과 너비 w를 가진 기본적인 2D 직사각형 형상을 만들고, 이를 ‘plate’라는 이름의 스케치로 정의합니다. 이 스케치는 입체 객체의 바닥면을 규정합니다. 그 다음 스케치를 3D 객체로 밀어내거나 끌어당길 거리를 지정하는 ‘익스트루드(Extrude)’ 또는 ‘패드(Pad)’ 작업을 정의합니다. 이렇게 하면 스케치의 형상과 지정한 돌출 거리를 기반으로 한 단단한 입체 정육면체 형태가 생성됩니다.
plate의 윗면에 지름 d를 가진 원을 스케치합니다. 그런 다음 이 원을 사용하여 원래의 plate에서 재질을 제거하는 포켓(Pocket) 작업을 수행합니다.
plate의 치수나 원의 치수 중 어느 하나를 변경하더라도, 최종 객체는 그에 맞게 자동으로 수정됩니다. 파라메트릭 설계 방식을 사용하기 때문에, 처음부터 객체를 다시 만들 필요가 없습니다.
- 재계산(Recomputation)은 항상 자동으로 이루어지지는 않습니다. 문서의 큰 부분을 수정할 수 있고 그로 인해 시간이 많이 걸릴 수 있는 무거운 작업은 자동으로 수행되지 않습니다. 대신 해당 객체(및 그 객체에 의존하는 모든 객체)는 재계산 대상으로 표시되며, 트리 뷰에서 작은 파란색 아이콘이 나타납니다. 이후 재계산 버튼을 누르거나 Edit → Refresh를 실행해야 표시된 모든 객체가 다시 계산됩니다.
- 의존성 트리는 항상 한 방향으로만 흘러야 하며, 순환 구조는 허용되지 않습니다. (자세한 내용은 DAG 및 DAG view 참고) 예를 들어 객체 A가 객체 B에 의존하고, 객체 B가 객체 C에 의존하는 것은 가능하지만, 객체 A가 객체 B에 의존하고 동시에 객체 B가 다시 객체 A에 의존하는 것은 불가능합니다. 이는 순환 의존성입니다. 반면, 여러 객체가 하나의 동일한 객체에 의존하는 것은 가능합니다. 예를 들어 객체 B와 객체 C가 모두 객체 A에 의존할 수 있습니다. 메뉴 Tools → Dependency graph를 사용하면 위의 이미지와 같은 의존성 다이어그램을 확인할 수 있으며, 이는 문제를 감지하는 데 유용합니다.
FreeCAD의 파라메트릭 모델링 과정에서 객체의 의존성 트리를 살펴보면, 모델이 순차적으로 어떻게 구성되었는지와 각 요소 간의 관계를 명확하게 이해할 수 있습니다. 위의 예시에서 구조의 가장 기초가 되는 것은 초기 형상의 기반이 되는 ‘Plate Sketch’입니다. 그 다음 이 기본 스케치에 재질을 추가하는 ‘패드(Pad)’ 작업이 적용되어, 2차원 기반 형상으로부터 3차원 구조가 생성됩니다.
그 다음으로 새롭게 형성된 면 위에 ‘Circle Sketch’가 작성됩니다. 이 원형 스케치는 이후 수행되는 ‘포켓(Pocket)’ 작업의 기반이 됩니다. 포켓 작업은 이 원 스케치를 기준으로 구조물에서 재질을 선택적으로 제거하여, 해당 부분을 파내는 역할을 합니다. 이러한 재질 추가 후 제거하는 과정 덕분에, 기본 모델에 복잡한 형상과 다양한 기능적 요소를 자연스럽게 통합할 수 있습니다.
기본 스케치에서 시작하여 패드로 부피를 추가하고, 추가 스케치와 포켓을 통해 세부 형상을 만드는 이러한 일련의 작업 과정을 거치면서 최종 객체가 완성됩니다. 이 연쇄 과정의 각 단계는 이전 단계에 의존하고 있으며, 이는 FreeCAD에서 파라메트릭 설계가 지닌 상호 연결된 특성을 잘 보여줍니다.
FreeCAD의 모든 객체가 파라메트릭인 것은 아닙니다. 다른 파일에서 가져온 형상은 종종 어떠한 매개변수도 포함하지 않는 단순한 비(非)파라메트릭 객체인 경우가 많습니다. 하지만 이러한 객체도, 파라메트릭 객체가 요구하는 조건과 가져온 형상의 품질에 따라, 새로 생성되는 파라메트릭 객체의 기반 또는 출발점으로 활용할 수 있는 경우가 많습니다.
그러나 파라메트릭 객체이든 아니든 모든 객체에는 몇 가지 기본적인 매개변수가 있습니다. 예를 들어 문서 안에서 고유하며 수정할 수 없는 이름(Name), 사용자가 자유롭게 수정할 수 있는 라벨(Label), 그리고 3D 공간에서의 위치를 담고 있는 배치(Placement) 등이 있습니다.
마지막으로, 사용자 정의 파라메트릭 객체는 Python으로 쉽게 프로그래밍할 수 있다는 점도 주목할 만합니다.
Read more
- The properties editor
- How to program parametric objects
- Positioning objects in FreeCAD
- Enabling the dependency graph
이 페이지에서 인용한 것은 https://wiki.freecad.org/Manual:Parametric_objects