Dune3D: 파라메트릭 3D CAD 애플리케이션

Dune3d: A parametric 3D CAD application

요약

FreeCAD와 Solvespace의 한계를 보완하기 위해 개발된 오픈소스 3D CAD 애플리케이션으로 STEP 임포트/익스포트, 필렛, 샤퍼를 지원합니다. Open CASCADE 기하 커널, Solvespace 제약 솔버, Gtk 4 UI를 조합하여 구현되었습니다.

핵심 포인트

  • Open CASCADE를 기하 커널로 사용하여 STEP 호환성과 필렛/샤퍼 기능 제공
  • Solvespace의 제약 솔버를 라이브러리로 활용하고 성능 최적화를 위해 패칭
  • Horizon EDA의 검증된 3D 뷰포트와 에디터 기반시설을 재사용하여 약 3개월 만에 개발

왜 중요한가

오픈소스 3D CAD 도구가 필요한 전자제품 설계자와 취미 개발자들에게 FreeCAD보다 나은 워크플로우를 제공합니다.

📄 전문 번역

Dune 3D

Dune 3D는 STEP 포맷의 가져오기/내보내기, 필렛, 모따기 기능을 지원하는 파라메트릭 3D CAD 애플리케이션입니다.

개발 배경

이미 FreeCAD와 Solvespace 같은 오픈소스 3D CAD 프로그램이 있는데, 굳이 또 다른 CAD 애플리케이션을 만들어야 할까요?

제 경우엔 3D CAD를 주로 전자기기 인클로저를 3D 프린팅으로 제작할 때 사용합니다. 그런데 기존 오픈소스 CAD 프로그램들이 마음에 안 들어서 자꾸 인클로저 설계를 미루곤 했어요.

FreeCAD의 경우는 기술적으로 제가 필요한 기능은 다 있습니다. 다만 구현 방식이 마음에 안 드는데요. 가장 큰 불만점은 모달 스케처가 2D에서만 작동한다는 점, 3D 압출에서 제약 조건을 지정할 수 없다는 점, 그리고 설계 요소를 참조할 때 자주 문제가 생긴다는 것입니다.

Solvespace는 워크플로우 측면에서는 꽤 좋습니다. 하지만 STEP 파일을 가져올 수 없고, 기하학 커널이 필렛과 모따기를 지원하지 않는다는 게 약점이죠.

저는 예전에 PCB CAD 소프트웨어인 Horizon EDA를 개발하면서 비슷한 문제를 해결한 경험이 있습니다. 그래서 같은 방식으로 3D CAD 문제도 풀 수 있을까 생각해보게 됐죠. 결국 3D CAD를 만드는 데 필요한 게 뭘까요?

필요한 기술 요소들

기하학 커널 (압출, 교집합, 모따기 등)

Open CASCADE는 분명 까다로운 라이브러리긴 하지만, STEP 가져오기/내보내기와 필렛, 모따기 기능이 필요하다면 사실상 유일한 선택지입니다. 다행히 저는 Horizon EDA에서 STEP 파일을 다루면서 이미 경험이 있었어요.

3D 뷰포트

3D 기하학을 화면에 표시하고, 줌/팬, 객체 선택 기능이 필요합니다. Horizon EDA의 3D 미리보기가 이미 이 모든 기능을 하고 있으니, 검증된 코드베이스를 재사용할 수 있었어요.

제약 조건 해석기

Horizon EDA와 달리, 3D CAD에서는 제약 조건으로 객체의 위치를 지정하는 방식이 일반적입니다. 다행히 Solvespace의 해석기가 라이브러리 형태로 제공되거든요.

에디터 인프라

마지막으로 도구, 실행 취소/다시 하기 같은 인터랙티브 에디터의 기본 기능들을 담당하는 코드가 필요합니다. 차이점은 있겠지만, Horizon EDA의 인터랙티브 조작 시스템을 재사용하고 개선할 수 있다고 판단했어요.

모든 구성 요소가 준비됐으니, 이들을 조합해서 3D CAD 애플리케이션을 만들기로 했습니다. 약 3개월 후, 어느 정도 형태 있는 결과물이 나왔네요.

빌드 방법

빌드 지침을 참고해주세요.

사용 방법

Horizon EDA처럼 모든 도구와 기능은 스페이스바 메뉴에서 접근할 수 있습니다.

"set workplane" 도구로 그룹의 작업 평면을 설정하면 됩니다. 상세한 내용은 문서를 확인하세요.

질문이 있으신가요?

프로젝트의 소통 채널은 Matrix 룸과 GitHub Discussions입니다.

자주 받는 질문들

샘플 파일은 어디서 찾나요?

샘플 저장소를 참고하세요.

Windows에서도 실행되나요?

빌드 지침에서 Windows 빌드 방법을 확인할 수 있습니다.

macOS에서는 어떤가요?

빌드 지침에서 macOS 빌드 방법을 확인할 수 있습니다.

왜 Horizon EDA에 통합하지 않았나요?

Horizon EDA에는 3D CAD가 들어갈 만한 자리가 없습니다. 또한 몇 가지를 다르게 구현하고 싶었고, Gtk 4를 시도해보고 싶기도 했어요.

기존 프로젝트인 Solvespace나 FreeCAD를 개선하면 안 될까요?

FreeCAD를 3D 환경에서 파라메트릭으로 만들거나, Open CASCADE를 Solvespace에 넣는 건 외부 기여자 입장에선 너무 큰 변화였을 것 같습니다. 그리고 저는 CAD 소프트웨어 개발이 정말 즐거우니까요.


주석

해석기를 직접 사용할 때 제안된 래퍼 코드 대신 solvespace의 해석기를 직접 사용하게 됐는데, 그 이유는 필요한 모든 기능을 노출하지 않았기 때문입니다.

또한 제가 생성하는 방정식의 종류에 맞춰 충분히 빠르게 작동하도록 해석기를 수정해야 했습니다. 가능한 경우 기호적으로 방정식을 풀어서 최적화했어요.