
FreeCAD
오픈 소스 3D 파라메트릭 CAD 모델러
기계 공학, 건축 및 제품 디자인을 위한 Python API로 3D 디자인을 만들고, 수정하며, 자동화합니다.
FreeCAD란 무엇인가요?
FreeCAD는 강력한 오픈 소스 3D 파라메트릭 CAD 모델러로, 어떤 크기의 실제 객체든 만들 수 있도록 설계되었습니다. 파라메트릭 모델링을 지원하여 사용자가 모델 히스토리의 매개변수를 조정함으로써 디자인을 쉽게 수정할 수 있습니다. OpenCASCADE, Coin3D, Qt, Python을 사용한 견고한 아키텍처 위에 구축된 FreeCAD는 기계 공학, 건축, 제품 디자인 등 다양한 분야에 적용됩니다. 유연한 Python API를 통해 개발자와 고급 사용자는 작업을 자동화하고 기능을 확장하며 외부 도구와 통합할 수 있습니다. 취미 사용자, 학생, 엔지니어, 교육자 등 누구든지 라이선스 비용 없이 전문적인 3D 디자인 플랫폼을 이용할 수 있습니다.
FreeCAD의 핵심 강점은 2D 스케치와 3D 모델링을 연결하는 능력에 있습니다. 이를 통해 사용자는 기하학적으로 제약된 2D 프로파일을 스케치하고 이를 3D 피처로 돌출시킬 수 있습니다. Part Design, Assembly, Drafting, Architecture 등 전문 워크벤치를 포함하고 있습니다. 이 애플리케이션은 Windows, macOS, Linux에서 네이티브로 실행되어 폭넓은 접근성을 보장합니다. 활발한 커뮤니티 지원, 포괄적인 문서, 모듈식 플러그인 아키텍처를 갖춘 FreeCAD는 투명하고 맞춤화 가능하며 무료인 독점 도구의 대안을 찾는 초보자와 숙련된 CAD 전문가 모두에게 이상적입니다. 시뮬레이션 및 제조 워크플로와의 통합으로 전체 제품 개발 라이프사이클에 적합합니다.
FreeCAD 시작하기
FreeCAD는 Windows, macOS 및 Linux용 사전 컴파일된 설치 프로그램을 최신 릴리스 페이지에서 제공합니다. Linux에서는 배포판의 패키지 관리자나 소프트웨어 센터를 통해 종종 사용할 수 있습니다. 개발자와 고급 사용자를 위해서는 CMake를 사용한 소스 빌드가 지원됩니다. 공식 개발자 핸드북에는 자세한 빌드 안내가 포함되어 있습니다. 설치가 완료되면 FreeCAD를 실행하고 툴바를 통해 워크벤치를 탐색하십시오. Python 콘솔과 매크로 시스템을 사용하면 자동화와 맞춤 설정이 가능합니다. 학습 자료는 FreeCAD 위키의 시작하기 가이드를 방문하십시오.
패키지 관리자(Linux)를 통해 FreeCAD 설치 또는 다운로드
# Ubuntu/Debian
sudo apt install freecad
# macOS (Homebrew)
brew install --cask freecad
# Windows: Download from https://github.com/FreeCAD/FreeCAD/releases/latest
Python API를 이용한 파라메트릭 3D 모델링
FreeCAD의 파라메트릭 모델링 엔진은 사용자가 편집 가능한 매개변수로 객체를 정의할 수 있게 하여, 값을 간단히 조정함으로써 설계 반복을 가능하게 합니다. Python API는 전체 모델링 스택을 노출시켜 개발자가 프로그래밍 방식으로 복잡한 기하학을 생성할 수 있게 합니다. Part 및 PartDesign 워크벤치를 사용하면 기본 형상을 생성하고, 불리언 연산을 수행하며, 필렛/챔퍼를 추가하고, 패드, 포켓, 리볼루션과 같은 피처를 모두 Python으로 만들 수 있습니다. 이 기능은 생성 설계, 토폴로지 최적화, 그리고 CAD를 시뮬레이션이나 제조 워크플로와 통합하는 데 필수적입니다. API는 객체 지향 및 함수형 접근 방식을 모두 지원하여 스크립팅, 매크로, 완전한 플러그인에 적합합니다. 기본 OpenCASCADE 커널에 접근함으로써 FreeCAD는 초보자도 사용하기 쉬우면서도 전문가 수준의 기하학 연산을 제공합니다.
파라메트릭 큐브를 생성하고 Python으로 치수를 수정하기
import FreeCAD as App
import Part
# Create document and object
doc = App.newDocument()
cube = doc.addObject("Part::Box", "Cube")
cube.Length = 10
cube.Width = 20
cube.Height = 30
App.ActiveDocument.recompute()
# Modify dimensions later
cube.Length = 15
App.ActiveDocument.recompute()
2D 스케치 및 드래프팅 워크벤치
FreeCAD는 3D 모델링 파이프라인과 통합된 강력한 2D 스케치 환경을 포함합니다. Sketcher 워크벤치는 사용자가 선, 호, 원 및 스플라인을 사용하여 기하학적으로 제약된 2D 프로파일을 그릴 수 있게 합니다. 수평, 수직, 평행, 직각 및 치수 제약과 같은 제약 조건은 스케치 기하학에 대한 정밀한 제어를 보장합니다. 스케치가 완료되면 이러한 스케치는 돌출, 회전, 로프트와 같은 3D 기능의 기반이 됩니다. 또한 Draft 워크벤치는 제약 없이 2D 벡터 도면을 만들 수 있는 도구를 제공하여 건축 평면도나 기술 일러스트에 적합합니다. Drawing 워크벤치는 3D 모델에서 정투영도, 단면도 및 주석이 포함된 도면을 생성할 수 있게 하며, 치수, 공차 및 자재 명세서 기능을 갖춘 ISO 규격 기술 문서를 지원합니다.
스케치를 만들고, 제약을 추가하고, 돌출하여 3D 피처를 형성합니다
import FreeCAD as App
import Sketcher
import PartDesign
doc = App.newDocument()
Part = doc.addObject("PartDesign::Body")
Sketch = doc.addObject("Sketcher::SketchObject", "Sketch")
Sketch.Placement = App.Placement(App.Vector(0,0,0), App.Rotation(App.Vector(0,0,1),0))
# Add geometry
Sketch.addGeometry(Part.LineSegment(App.Vector(-10,0,0),App.Vector(10,0,0)),False)
Sketch.addGeometry(Part.LineSegment(App.Vector(10,0,0),App.Vector(10,10,0)),False)
Sketch.addGeometry(Part.LineSegment(App.Vector(10,10,0),App.Vector(-10,10,0)),False)
Sketch.addGeometry(Part.LineSegment(App.Vector(-10,10,0),App.Vector(-10,0,0)),False)
# Add constraints
Sketch.addConstraint(Sketcher.Constraint('Coincident',0,2,1,1))
Sketch.addConstraint(Sketcher.Constraint('Coincident',1,2,2,1))
Sketch.addConstraint(Sketcher.Constraint('Coincident',2,2,3,1))
Sketch.addConstraint(Sketcher.Constraint('Coincident',3,2,0,1))
Sketch.addConstraint(Sketcher.Constraint('Horizontal',0))
Sketch.addConstraint(Sketcher.Constraint('Vertical',1))
# Extrude
Pad = doc.addObject("PartDesign::Pad", "Pad")
Pad.Profile = Sketch
Pad.Length = 5
doc.recompute()
조립 설계 및 구속 해석
FreeCAD는 Assembly4 및 Assembly3 작업대를 통해 복잡한 어셈블리 모델링을 지원하여 사용자가 여러 부품을 결합해 기능적인 메커니즘을 만들 수 있게 합니다. 어셈블리는 일치, 평행, 수직, 접선 및 거리와 같은 제약 조건을 사용하여 부품 간의 상대 위치와 움직임을 정의하면서 구축됩니다. 솔버는 부품이나 제약 조건이 수정될 때마다 어셈블리를 자동으로 업데이트하여 설계 무결성을 보장합니다. 이 기능은 기어 트레인, 링크, 하우징 설계와 같은 기계공학 작업에 필수적입니다. 어셈블리는 다른 CAD 시스템과의 협업을 위해 STEP 파일로 내보낼 수 있으며, Yade와 같은 외부 도구나 사용자 정의 Python 스크립트를 통합하여 동작 시뮬레이션도 가능합니다. FreeCAD의 파라메트릭 특성 덕분에 개별 부품에 대한 변경 사항이 자동으로 어셈블리 전체에 전파되어 수동 업데이트를 줄이고 오류를 최소화합니다.
두 부품으로 간단한 어셈블리를 만들고 동일 제약을 적용합니다
import FreeCAD as App
import Assembly4
doc = App.newDocument("Assembly")
# Add parts
Part1 = doc.addObject("Part::Box", "Block1")
Part1.Length, Part1.Width, Part1.Height = 10, 10, 10
Part2 = doc.addObject("Part::Cylinder", "Cylinder1")
Part2.Radius, Part2.Height = 3, 15
# Create assembly
asm = doc.addObject("App::Part", "Assembly")
asm.Type = "Assembly"
asm.addObject(Part1)
asm.addObject(Part2)
# Apply constraint (simplified)
# In practice, use Assembly4's Constraint class for full functionality
App.ActiveDocument.recompute()
BIM 및 건축 모델링 도구
FreeCAD는 Arch 워크벤치를 통해 건축 정보 모델링(BIM) 및 건축 설계를 위한 특수 도구를 포함합니다. 사용자는 직관적인 파라메트릭 객체를 사용하여 벽, 바닥, 지붕, 창문, 문 및 구조 요소를 만들 수 있습니다. 이러한 객체는 매개변수가 변경될 때 자동으로 업데이트되어 반복 설계와 건축 코드 준수를 지원합니다. 워크벤치는 IFC(Industry Foundation Classes) 가져오기/내보내기를 지원하여 Revit 및 Archicad와 같은 업계 표준 BIM 소프트웨어와의 상호 운용성을 가능하게 합니다. 현장 계획, 에너지 분석 설정 및 자재 수량 산출과 같은 기능은 FreeCAD를 초기 단계 건축 설계 및 문서화에 적합하게 만듭니다. 또한 Draft 및 Sketcher 워크벤치는 정밀한 평면도와 입면도를 만드는 데 원활하게 통합되며, Drawing 워크벤치는 주석, 치수 및 일정이 포함된 건설 문서를 생성합니다.
Python API를 사용하여 벽을 만들고 창을 추가합니다
import FreeCAD as App
import Arch
doc = App.newDocument("Building")
# Create wall
Wall = Arch.makeWall(length=5000, width=200, height=3000)
Wall.Base = Arch.makeSketch([0,0,0], [5000,0,0], [5000,200,0], [0,200,0])
# Create window
Window = Arch.makeWindow(1200, 1500)
Window.Base = Arch.makeSketch([1000,100,0], [2200,100,0], [2200,1600,0], [1000,1600,0])
Window.Host = Wall
App.ActiveDocument.recompute()
