- µcad는 Rust로 구현된 오픈소스 CAD용 프로그래밍 언어이며, 코드로 2D 스케치와 3D 객체를 정의해 STL·SVG로 내보내는 텍스트 기반 지오메트리 시스템
- 언어 중심에는 파라메트릭 기하 객체가 있으며, 기본 도형을 불리언 연산으로 조합해 복잡한 형상을 만들고 3D 프린팅·CNC 가공용 형식으로 렌더링하는 구조
- 정적 타입 시스템과 단위 기반 Quantity 리터럴을 사용해
50mm,10°,50%같은 값으로 모델을 정의하고, Models 타입으로 기하 모델 트리를 구성하는 타입 체계를 제공 - 모듈·함수·
part워크벤치·use구문,std::geo2d·std::geo3d등 표준 라이브러리, TOML 데이터를 가져오는std::import기능을 통해 재사용 가능한 설계 코드와 데이터 기반 모델링을 구성 - 프로그래밍 방식의 CAD 워크플로를 원하는 사용자가 참고할 수 있는 프로젝트로, 예제·문서·라이브 코딩 자료가 함께 제공됨
µcad 개요
- µcad는 2D 스케치와 3D 객체를 코드로 정의하고 생성하는 오픈소스 CAD 프로그래밍 언어
- 중심 개념은 파라메트릭 기하 모델링
- 기본 도형을 조합해 복잡한 형상을 만들고, 결과를 STL·SVG로 렌더링해 3D 프린팅이나 CNC 작업에 활용 가능
언어 설계와 모델링 방식
- µcad는 파라미터를 가진 기하 정의를 중심으로 모델 구조를 구성하는 파라메트릭 모델링 언어
- 도형은 코드로 선언되고, 파라미터 변경만으로 다양한 변형 생성 가능
-
Sphere,Cube,Cylinder등을 불리언 조합으로 합성하고, 회전(revolve)·배열·변환을 통해 3D 형상을 만드는 구조 -
CsgCube·Spirograph·Gears·Dome 등의 예시를 통해 2D 스케치 기반 3D 생성, 반복 구조 생성, 기어 프로파일 등 다양한 모델링 패턴을 제시
타입 시스템과 단위 리터럴
- µcad는 정적 타입 시스템을 사용하며 변수는 불변으로 동작
- Quantity 타입을 통해
mm,°,%단위를 직접 사용해 모델 구성-
10°·4m²·50%같은 표기 그대로 모델 파라미터로 활용
-
- Models 타입은 기하 모델 트리를 표현하는 구조로, 코드 기반 CAD 모델의 노드 구조를 담아냄
모듈 시스템과 표준 라이브러리
-
mod,use,fn,part등을 활용한 모듈 구성으로 큰 설계를 여러 코드 단위로 분리 -
std::geo2d,std::geo3d,std::math,std::ops등 표준 라이브러리로 기하 연산·수학·행렬·스케치 구성 지원 -
part는 스케치·3D 파트를 생성·변환하는 단위로 사용
데이터 가져오기와 디버깅
-
std::import로 TOML 파일에서 파라미터를 가져와 모델에 반영- 기성 부품 규격 등을 모델에 손쉽게 주입하는 방식
-
std::debug::assert_eq등을 사용해 가져온 값의 검증 가능
도구 체인과 설치
- Rust 기반 CLI 도구
microcad-cli로 모델 실행 및 렌더링-
cargo install microcad-cli로 설치 - 현재 알파 단계로 기능이 계속 추가되는 중
-
-
microcad-viewer를 통해 렌더링 결과 시각화 가능 - 저장소는 codeberg.org에서 개발이 진행되며 crates.io를 통해 배포
예제와 라이브 코딩 자료
- Spirograph, Lego Bricks, Gears, Dome 등 다양한 예제가 공식 블로그에 공개
- 기어 프로파일 생성, 스파이로그래프 모델링, 돔 구조 생성 등 프로그래밍 CAD 활용 사례 제공
- 모든 예제는 코드와 함께 라이브 코딩 영상으로 제공돼 언어 사용 방식을 단계적으로 파악할 수 있음
프로젝트 상태
- 프로젝트는 초기 단계로 계속 확장되는 중
- “The µcad book” 문서화 작업을 통해 언어 전체를 체계화하는 중