Shpigford/nurb
Agentic CAD for 3D printing
nurb – 3D 프린팅을 위한 AI 기반 CAD 파트너
무엇인가요 – nurb은 Python 기반 도구(맥OS 네이티브 GUI 포함)로, 이미 구독 중인 대규모 언어 모델(Large Language Model)과 대화하여 FDM 3D 프린팅에 사용 가능한 실제 B-Rep CAD 기하학을 생성할 수 있습니다. AI는 @part 데코레이터가 붙은 작은 Python 함수를 작성합니다. nurb은 이 코드를 Open CASCADE (OCCT) 커널에서 실행하고, 생성된 실체를 13개의 인쇄 가능성 규칙에 따라 검사하며, three.js 뷰어에서 실시간으로 모델을 표시하고, 슬라이서 설정을 내장한 인쇄 준비 완료된 3MF(또는 STL/STEP/GLB)로 내보낼 수 있습니다.
핵심 아이디어
| 요소 | 작동 방식 (README에 설명됨) |
|---|---|
| 프롬프트 → 모델 | 자연어 요청을 입력합니다 (예: "내 쇼프락 호스를 테이블 사의 먼지 포트에 연결하는 어댑터를 만들어줘"). AI는 기존 구독(GPT-4, Claude 등)을 사용하여 @part 데코레이터가 붙은 Python 함수를 생성합니다. |
| 실제 CAD 커널 | 생성된 함수는 build123d와 OCCT 커널 위에서 작동하므로, 메시가 아니라 진짜 B-Rep 실체가 생성됩니다. |
| 실시간 뷰어 | 내장된 three.js 뷰어는 모델이 변경될 때마다 즉시 업데이트되며, 카메라 위치는 고정되고, 단면 평면으로 모델을 절단할 수 있습니다. |
| 파라미터 슬라이더 | 부품 함수의 기본 인수가 UI 슬라이더로 변환되며, 슬라이더를 움직이면 모델이 업데이트되고 AI는 새로운 값을 인식합니다. |
| 인쇄 가능성 검사 | 13개의 하드코딩된 규칙(오버행, 얇은 벽, 떠 있는 섬, 왜곡 위험, 안정성 등)이 정확한 실체에 대해 실행됩니다. 위반된 면에 결과가 표시됩니다. |
| 비용 및 시간 추정 | 이미 설치된 슬라이서(OrcaSlicer 또는 Bambu Studio)를 호출하여 인쇄 시간과 필라멘트 무게를 추정합니다. |
| 강도 시뮬레이션 | 복셀 기반 응력 분석을 통해 파손 무게 추정치를 제공하고 하중 집중을 시각화합니다. |
| 현실 세계 적합성 | 스캔 데이터나 측정값을 가져올 수 있으며, AI는 추측 대신 이 차원을 강제로 사용합니다. |
| 내보내기 | 기본 내보내기는 내장된 인쇄 설정이 포함된 3MF이며, STL, STEP, GLB는 플래그 하나로 가능합니다. |
| 오프라인 우선 | 모든 모델링, 검사, 뷰잉은 로컬에서 실행되며, 클라우드 계정은 필요하지 않습니다. |
설치 방법
| 플랫폼 | 방법 |
|---|---|
| macOS (Apple Silicon 또는 Intel) | 최신 GitHub 릴리스에서 서명된 .dmg를 다운로드합니다. |
| 명령줄 (모든 OS) | `curl -fsSL https://nurb.dev/install.sh |
| 대체 방법 | uv tool install nurb 또는 pip install nurb로 Python 패키지를 설치한 후, npx skills add shpigford/nurb --skill nurb로 스킬을 선택한 AI 에이전트 프레임워크에 등록합니다. |
일반적인 워크플로우
- 시작 – GUI를 실행(
nurb dev)하거나 CLI(nurb new <name>)를 사용합니다. 프로젝트는 단순히parts/디렉터리를 포함하는 폴더입니다. 2. 프롬프트 – 내장 채팅 또는 자체 터미널 기반 에이전트를 통해 AI에게 말합니다. AI는parts/<name>.py에@part함수를 생성합니다. 3. 반복 – 슬라이더로 파라미터를 조정하고 실시간 뷰어를 확인하며,nurb check를 다시 실행하여 인쇄 가능성 경고를 확인합니다. 4. 검증 – 선택적으로nurb stress로 강도 추정 또는nurb slice로 시간/필라멘트를 확인합니다. 5. 내보내기 –nurb export <part>는 슬라이서에 바로 넣을 수 있는 3MF(또는 다른 형식)를 작성합니다. 6. 프린트 – 내보낸 파일을 OrcaSlicer 또는 Bambu Studio에서 열고 인쇄합니다.
주요 명령어 (CLI)
nurb new <name>– 새로운 부품 파일과 마크다운 카드를 스텐실화합니다.nurb dev– 핫리로딩 뷰어를 시작합니다.nurb check [part]– 13개의 인쇄 가능성 규칙을 실행합니다 (--strict로 CI 실패 설정).nurb slice [part]– 연결된 슬라이서에서 인쇄 시간/필라멘트를 조회합니다.nurb stress [part]– 복셀 기반 하중 시뮬레이션입니다.nurb export [part]– 3MF / STL / STEP / GLB를 작성합니다.nurb scan <file>– 스마트폰 스캔 또는 외부 메시를 가져와 차원을 기록합니다.nurb skill– AI 에이전트 스킬 파일을 표시하거나 동기화합니다.
왜 "AI 중심"인가요?
- 모델 독립성 – 이미 구독 중인 모든 LLM과 호환됩니다. README에는 실제 부품 설계 작업에서 모델을 평가하는 벤치마크 페이지 링크가 포함되어 있습니다.
- 에이전트 스킬 – 작은 "스킬" 파일(
npx skills add ...)은 선택한 AI가nurb명령을 호출하는 방법을 알려주며, 언어 모델을 인터랙티브 CAD 어시스턴트로 전환합니다. - 프롬프트 기반 기하학 – AI가 실제 CAD 코드를 작성합니다. 수동으로 스케치할 필요가 없습니다.
제한 사항 및 현재 부족한 점 (README 기준)
- 뷰어의 측정 도구는 아직 TODO입니다.
- 호스팅된 공유 가능한 구성기기는 아직 구축되지 않았습니다.
- 얇은 벽 탐지 기능은 샘플링 알고리즘이 타겟하지 않는 극히 좁은 특징을 놓칠 수 있습니다.
- 응력 분석은 단순한 복셀 시뮬레이션입니다. 빠른 검증에는 유용하지만, 완전한 유한요소 분석의 대체물은 아닙니다.
- 이 도구는 FDM 스타일 프린터만 지원합니다 (OrcaSlicer/Bambu Studio를 호출). 레진 또는 산업용 기계는 다루지 않습니다.
라이선스 및 출처
- FSL-1.1-MIT (각 릴리스 후 2년 후에 일반 MIT로 전환되는 허용성 높은 라이선스)로 소스 공개. 라이선스는 경쟁 상용 제품 구축을 명시적으로 금지합니다.
- 핵심 기하학은
build123d및OCPPython 바인딩을 통해 Open CASCADE Technology (LGPL-2.1 + 예외)에 의존합니다. - 뷰어 자산에는 three.js (MIT) 및 JetBrains Mono (OFL 1.1)가 포함되어 있습니다.
결론
nurb은 아마추어 및 소규모 작업장용 FDM 3D 프린팅을 위한 실용적이고 로컬에서 실행 가능한 AI 강화 CAD 시스템입니다. 자연어 설계, 실제 B-Rep 기하학, 프린터 전용 검증을 클라우드 서비스 없이 통합합니다. 이미 LLM 구독이 있고, 말로 한 설계 아이디어를 즉각 피드백과 함께 인쇄 가능한 부품으로 전환하고 싶다면, nurb은 바로 사용 가능한 스택을 제공합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트