SolidCraft 0.6: Rust로 작성된 오픈 소스 파라메트릭 CAD, 내장 MCP 지원
SolidCraft는 순수 Rust로 작성된 오픈 소스 파라메트릭 3D CAD 애플리케이션으로, 데스크톱 앱, 브라우저, 헤드리스 CLI 환경에서 실행됩니다. 또한 내장된 MCP(Model Context Protocol) 서버를 제공하여 AI 에이전트가 사람이 사용하는 것과 동일한 모델링 명령을 수행할 수 있습니다. 작성자 bherbruck가 Hacker News에 Show HN으로 게시한 이 프로젝트는 MIT 또는 Apache-2.0 라이선스를 따르며, "초기 단계이지만 간단한 부품을 만드는 데는 사용할 수 있다"고 설명합니다.
SolidCraft란 무엇인가
SolidCraft는 구속 조건이 있는 스케치와 피처 타임라인 워크플로우를 갖춘 파라메트릭 CAD 애플리케이션으로, Rust로 작성되어 Windows, macOS, Linux, Snap 및 웹용으로 배포됩니다. 설계 목표는 Autodesk Fusion 사용자에게 익숙한 환경(구속된 스케치, 솔리드 피처, 편집 가능한 타임라인, 매개변수 및 어셈블리)을 제공하는 것입니다.
이 프로젝트는 독립적이며 클린룸 기여 규칙에 따라 개발되었습니다. README에 따르면 동작은 공개 문서, 일반적인 CAD 관례 및 사용자 피드백을 기반으로 설계되었으며, 참조 테스트는 분석 값과 오픈 소스 도구를 사용하고, SolidCraft는 Autodesk와 제휴, 후원 또는 보증을 받지 않는다고 명시되어 있습니다.
현재 0.6 버전 데모는 빈 설계에서 모델링된 Raspberry Pi 4 케이스를 보여줍니다. 보드의 매개변수로 치수가 지정된 스케치, 돌출(extrude), 필렛(fillet), 쉘(shell), 58 × 49 mm 구멍 직사각형에 패턴화된 M2.5 스탠드오프, 포트 컷아웃, 통풍구 슬롯 및 색상이 포함되어 있으며, 매개변수에서 높이를 24 mm에서 32 mm로 변경하면 전체 모델이 재구성됩니다.
정확도 상태: 75개의 참조 부품 중 76개 일치
SolidCraft의 README는 76개의 공개 참조 부품 중 75개가 분석 또는 FreeCAD로 계산된 부피, 면적, 질량 중심 및 경계 상자와 일치하며, 나머지 하나는 버그로 추적 중이라고 보고합니다. 프로젝트는 이러한 확인이 완전한 기하학적 또는 워크플로우 동등성을 보장하지는 않는다고 명시적으로 경고합니다.
이는 프로젝트 문서에서 가장 구체적인 품질 주장이며, 범위가 좁습니다. 즉, 일반적인 모델링 정확도가 아닌 고정된 참조 부품 세트에 대한 측정 일치도를 다룹니다.
아키텍처: 모든 것은 명령이다
SolidCraft는 계층화된 크레이트로 구성되어 있으며, README는 "모든 것은 명령이다"라고 명시합니다. UI가 실행하는 것과 동일한 명령 레지스트리를 스크립트와 MCP 클라이언트가 호출합니다.
| 계층 | 크레이트 | 역할 |
|---|---|---|
| L0 | geom |
벡터, 평면, 프로파일, 메쉬 및 측정값 |
| L1 | sketch, kernel, render |
구속 조건 솔버 및 프로파일; B-rep 커널 경계(truck); 뷰 수학 및 CPU 래스터라이저 |
| L2 | doc |
매개변수, 표현식, 피처 타임라인 및 증분 평가 |
| L3 | io |
설계 파일, STL/OBJ/STEP/3MF 내보내기, STEP 및 3MF/STL 가져오기 피처 |
| L4 | engine |
세션 및 명령 레지스트리 |
| L5 | ui-egui, mcp |
교체 가능한 데스크톱 프론트엔드; MCP 서버 |
| apps | solidcraft, solidcraft-cli |
데스크톱 앱, 헤드리스 CLI |
B-rep 커널 경계는 기존 오픈 소스 Rust 모델링 커널인 truck 크레이트입니다. 데스크톱 프론트엔드는 egui와 wgpu를 사용합니다.
스케치, 구속 조건 및 피처 타임라인
스케치는 원점 평면, 오프셋 평면 또는 평면형 면에 배치할 수 있으며, 선, 직사각형, 원, 호, 다각형, 슬롯, 타원, 맞춤/제어 스플라인, 원뿔 곡선 및 텍스트와 구성 기하학, 투영, 자르기, 필렛 및 모따기를 지원합니다.
구속 조건과 치수는 SolidCraft 자체 솔버에 의해 해결됩니다. 알려진 기하학적 구조에 상대적으로 구속 조건이 고정하는 점은 Owen 1991 및 Fudos–Hoffmann 1997에 따라 Loci 교차 및 강체 클러스터 분해를 사용하여 정확하게 배치됩니다. 나머지는 Levenberg–Marquardt로 해결되며, 자코비안의 순위가 남은 자유도를 나타냅니다. 지원되는 구속 조건에는 일치, 곡선 위의 점, 수평/수직, 평행, 수직, 접선, 곡률(G2), 동일, 동심, 공선, 중간점, 대칭 및 고정이 포함되며, 매개변수에 의해 구동되는 선형, 정렬, 수평, 수직, 점-선, 반지름, 지름, 각도, 호 스윕, 호 길이 및 슬롯 길이 치수가 포함됩니다. 과도하게 구속된 편집은 거부되며, 완전히 구속된 기하학적 구조는 검은색으로 바뀝니다.
파라메트릭 타임라인의 피처에는 돌출, 회전, 스윕, 로프트, 필렛/모따기, 쉘, 구배, 구멍, 나사산, 패턴, 대칭, 분할, 결합, 이동 및 구성 기하학이 포함됩니다. 타임라인은 증분적으로 재구성되며, 피처는 편집, 억제, 이름 변경, 순서 변경 및 삭제가 가능합니다.
매개변수와 구성은 2 * width + 5 mm 및 angle / 2와 같은 단위 인식 표현식, 정렬된 규칙, 피처 억제, 행별 바디 재질 및 외관을 지원합니다. 어셈블리는 중첩된 구성 요소와 발생, 조인트, 모션 연구, 접촉 세트, 간섭 및 재질 인식 질량 속성을 지원합니다. 판금 지원은 플랜지, 헴, 접기/펴기/다시 접기, 재질 컷아웃, 평면 패턴, 유지된 얕은 각기둥형 포켓, 정확한 선/호/원 DXF 윤곽선 및 굽힘 테이블을 포함합니다.
파일 형식 및 상호 운용성
SolidCraft는 손실 없는 바이너리 메쉬 페이로드가 포함된 .solidcraft 컨테이너에 설계를 저장하며, 열기, 다른 이름으로 저장 및 내보내기를 위해 일반 JSON도 계속 지원됩니다.
내보내기 형식은 STEP(바디 이름, 색상 및 어셈블리로서의 구성 요소, 기본 평면, 실린더, 원뿔, 구 및 토러스로서의 회전된 면 포함), IGES 5.3, 3MF, STL(바이너리 및 ASCII) 및 OBJ입니다. 가져오기는 STEP(AP203/AP214/AP242 솔리드, 어셈블리, 단위, 이름, 색상) 및 IGES(매니폴드 솔리드 B-rep 또는 솔리드로 봉합된 다듬어진 경계 표면)를 기본 피처로 지원하며, 이후 피처가 이를 기반으로 구축됩니다. 3MF, STL 및 OBJ는 렌더링, 측정, 이동 및 내보내기가 가능한 메쉬 바디로 가져오지만, 솔리드 피처에는 B-rep 바디가 필요합니다. '메쉬 변환' 명령은 지원되는 닫힌 상수 단면 부품을 평면 및 원형 원통형 면을 가진 파라메트릭 솔리드로 재구성합니다.
MCP 서버: AI 에이전트가 동일한 명령을 구동
solidcraft-cli mcp는 stdio를 통한 Model Context Protocol 서버입니다. 헤드리스로 실행하면 자체 설계 세션을 시작하고, --connect 127.0.0.1:PORT와 함께 실행하면 solidcraft --control PORT로 시작된 앱을 구동하므로 사용자가 실행 중인 UI에서 에이전트가 모델링하는 것을 볼 수 있습니다.
노출된 도구는 list_commands, execute, batch, inspect_design, measure, body_topology, set_parameter, screenshot(이미지 반환), export, undo, redo, new_design, open 및 save입니다. Claude Code는 claude mcp add solidcraft -- solidcraft-cli mcp로 이를 등록할 수 있습니다.
데스크톱 앱은 에이전트와 테스트가 구동할 수 있도록 JSON-lines 제어 채널도 노출하며, 헤드리스 CLI solidcraft-cli는 명령 스크립트를 실행하고, 부피, 면적, 질량 중심 및 면/모서리/정점 개수를 측정하고, 내보내고, PNG 스냅샷을 렌더링하고, 참조 레시피를 재생할 수 있습니다. 스크립트는 UI가 실행하는 것과 동일한 명령의 JSON 목록입니다:
{"commands": [
{"command": "sketch.create", "params": {"plane": "XY"}},
{"command": "sketch.rectangle.two_point", "params": {"p0": [0, 0], "p1": [40, 30]}},
{"command": "solid.extrude", "params": {"distance": 20}},
{"command": "solid.fillet", "params": {"edges": [[0, 0, 10]], "radius": 3}}
]}
플랫폼 및 설치
SolidCraft는 Windows(x64, ARM64, 32비트 및 휴대용 zip), Apple 실리콘 및 Intel용 범용 macOS 디스크 이미지, AppImage, .deb, .rpm, Flatpak 및 Snap(sudo snap install solidcraft)(ARM64 변형 포함) 형태의 Linux 빌드용 설치 프로그램을 제공합니다. 브라우저 빌드는 ?webgl 쿼리 매개변수를 통해 WebGPU 또는 WebGL2를 사용하여 설치 없이 bherbruck.github.io/solidcraft/app/에서 실행됩니다.
다운로드는 아직 서명되지 않았습니다. Windows에서 SmartScreen은 추가 정보를 선택한 다음 실행을 선택해야 합니다. macOS에서 처음 실행할 때는 앱을 마우스 오른쪽 버튼으로 클릭하고 열기를 선택해야 합니다.
Windows 및 Linux에서 SolidCraft는 다축 HID 인터페이스를 통해 연결된 3Dconnexion SpaceNavigator 또는 SpaceMouse를 감지합니다. Linux에서는 /dev/hidrawN을 직접 읽으므로 로그인한 사용자에게 장치 액세스 권한이 필요합니다. README는 예를 들어 공급업체 ID 256f와 일치하는 /etc/udev/rules.d/70-3d-mouse.rules와 같이 uaccess 태그를 추가하는 udev 규칙을 제안합니다. Flatpak 샌드박스는 hidraw 장치를 노출하지 않으므로 3D 마우스는 거기서 네이티브 빌드로만 작동합니다.
커뮤니티 반응: 커널 선택, AI 작성 코드 및 수명
Hacker News 토론은 기능보다는 세 가지 질문에 집중되었습니다. truck 커널 기반 구축이 실행 가능한지, AI 지원 개발이 CAD 커널을 성숙 단계로 이끌 수 있는지, AI 생성 CAD 프로젝트가 5년 후에도 존재할 것인지입니다.
댓글 작성자 bruckie는 커널을 식별하고 어려움을 다음과 같이 표현했습니다:
"이것은 Truck 모델링 커널을 사용하는 것 같네요... Truck은 멋져 보이지만, b-rep 커널을 만드는 것은 엄청난 작업입니다. 이를 고려할 때 SolidCraft가 얼마나 빨리 성숙해질지 궁금합니다." — @bruckie
같은 댓글 작성자는 ttouch가 이전에 Truck에서 브라우저 CAD 도구 CADmium을 구축한 다음, 나중에 OpenCASCADE에서 CADara를 구축했다고 언급했습니다.
SolveSpace 개발자인 phkahler는 어려운 문제가 빨리 해결되지 않을 것이라고 주장하며 대안 전략을 제안했습니다:
"이게 빨리 진행될 것 같지는 않습니다. Solvespace에서 최근 Claude가 NURBS 부울 문제를 해결하기 위해 많은 커밋을 했습니다. 분석은 실제로 매우 인상적이었고 대부분의 수정 사항은 코드에 대한 여러 전문가의 많은 검토 끝에 수락되었습니다. 이 프로젝트가 여전히 안고 있는 어려운 문제들을 해결하며 멀리 갈 것 같지는 않습니다. 제 생각에는 AI가 OCCT 커널을 Rust로 변환하게 하거나, 그냥 래핑해서 그대로 사용하는 것이 나았을 것입니다." — @phkahler
같은 댓글 작성자는 SolveSpace가 그러한 AI 지원 수정 사항을 포함한 3.3 릴리스에 근접해 있으며, 자원봉사자들이 이전에 실패했던 Claude가 작성한 GTK4 포트 브랜치가 병합에 가까워졌다고 덧붙였습니다.
zamalek은 내구성 문제를 직접 제기했습니다:
"AI 생성 소프트웨어로 이동하는 것에 대해 걱정되는 점은 CAD 파일이 극도로 긴 수명을 가진다는 것입니다. 이 프로젝트가 5년 후에도 활발할까요?" — @zamalek
여러 댓글 작성자가 SolidCraft를 기존 오픈 소스 옵션과 비교했습니다. mijoharas는 에이전트와 함께 FreeCAD MCP 및 OpenSCAD를 시도해 보았지만 둘 다 수동 모델링보다 느리다는 것을 발견했으며, AI 생성 기하학적 구조는 나중에 편집하기 쉽지 않다는 핵심 불만을 제기했습니다. InsidiousWombat은 MCP를 완전히 건너뛰고 LLM이 FreeCAD Python을 직접 작성하게 하는 것이 더 나은 결과를 얻었다고 보고했습니다. wccrawford는 SolidCraft가 매개변수가 변경될 때 발생하는 오랜 FreeCAD 문제를 피할 수 있는지 물었습니다. 전직 Fusion 360 헤비 유저인 jpettersson은 SolidCraft에서의 취미 수준 모델링이 매우 유능해 보인다고 말했습니다.
포지셔닝에 대해 carra는 UI가 Autodesk Inventor나 Solid Edge와 유사하다고 언급했고, Fabricio20은 이 프로젝트가 유사한 이름의 CadCraft와는 별개라고 지적했습니다. brunoborges는 제목에 "in Rust"가 없었다면 이 게시물이 그만큼 주목을 받았을지 물었습니다. maidaman은 브라우저 빌드를 실질적인 승리로 강조했습니다: "IT 부서에 요청하지 않고도 직장에서 실제로 사용할 수 있습니다."
README에서 다루지 않는 두 가지 격차가 제기되었습니다. rts-gordon은 3D 프린팅 기능이 지원되는지 물었고, androiddrew는 간단히 "CAD는 훌륭하지만 CAM이 필요하다"고 썼습니다. u8080은 프로젝트가 중단될 위험을 제기했고, larodi는 이와 같은 에이전트 제어 가능한 오픈 도구의 더 넓은 가치는 상업적 공급업체가 라이선스를 통해 제한하는 자동화 체인의 연결 고리로서의 가치라고 주장했습니다.
주목할 점
README는 SolidCraft가 영역별로 가진 명령에 대해서는 docs/features.md를, 상태 및 계획에 대해서는 ROADMAP.md를, 열린 작업 및 알려진 버그에 대해서는 GitHub 이슈를 참조하도록 안내합니다. 프로젝트는 빌드 및 테스트 프로세스, 코드 맵, 클린룸 및 라이선스 규칙, 가장 도움이 필요한 곳을 문서화한 CONTRIBUTING.md를 통해 기여를 명시적으로 요청합니다.
Sources
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- Dispatch