Shpigford/nurb
Agentic CAD for 3D printing
nurb – 3D印刷向けAI駆動CADパートナー
何であるか – nurb はPythonベースのツール(macOSネイティブGUI付き)で、既に契約している大規模言語モデル(LLM)に話しかけ、FDM 3D印刷用に使用可能な本格的なB-Rep CADジオメトリを生成させることができます。AIは小さなPython関数を記述し、@partデコレータで装飾します。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はフラグ1つで可能。 |
| オフライン優先 | すべてのモデリング、チェック、ビューアはローカルで実行。クラウドアカウントは不要。 |
インストール
| プラットフォーム | 方法 |
|---|---|
| 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>– 新しいパーツファイルとMarkdownカードをスケルトン化。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契約をお持ちで、話した設計アイデアを即時フィードバック付きで印刷可能な部品に変換したい方には、すぐに使えるスタックを提供します。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト