概要
vcad は、Rustで記述できるパラメトリックCADライブラリ プリミティブ、ブーリアン演算、トランスフォーム を組み合わせて部品設計 型安全性とバージョン管理 による再現性と修正性の向上 マルチマテリアル・エクスポート やAIエージェントとの連携も想定 GUIのクリック作業から脱却し、 コードで設計 する新しいワークフロー
vcad: Rustで書くパラメトリックCAD
- 毎回同じ作業 を繰り返すGUI CADツールからの脱却
- Rust で部品形状を記述し、 型安全性・バージョン管理 ・パラメトリック設計を実現
- 数値を一つ変えるだけ で全体を再生成できる設計フロー
基本の使い方
- プリミティブ形状 (cube, cylinderなど)を生成
- ブーリアン演算 (+は和集合、-は差集合、&は積集合)で形状を合成
- 例: プレートに中心穴とボルトパターンを開ける
- let plate = centered_cube("plate", 120.0, 80.0, 5.0);
- let bore = centered_cylinder("bore", 15.0, 10.0, 64);
- let bolts = bolt_pattern(6, 50.0, 4.5, 10.0, 32);
- let part = plate - bore - bolts;
- part.write_stl("plate.stl").unwrap();
APIの特徴
- APIは意図的に小規模 :プリミティブ、ブーリアン、トランスフォーム、パターンのみ
- 組み合わせにより複雑な部品も記述可能
- L字ブラケット
- フランジ付きハブ
- 放射状ベンチレーションパターン
パラメトリック設計
- 全ての部品がパラメトリック
- ボルト数や半径、厚みなど 数値一つで全体が変化
- 手作業のやり直し不要、再コンパイルのみ
マルチマテリアル・エクスポート
-
STL出力 だけでなく、 glTFシーン もエクスポート可能
-
TOMLでマテリアル定義 し、PBRマテリアルを設定
- Materials::parseで色や金属度、粗さを設定
- Scene::addで複数部品を統合
- export_scene_glbでGLBファイル出力
-
CSGだけでマスコットキャラも作成可能
- 8種のマテリアル、17部品、1つのGLBファイル
Rust採用の理由
-
manifoldエンジン によるウォータタイトメッシュ生成保証
-
C++コアのラッパー としてRustバインディングを利用
-
ゼロコスト抽象化、ガーベジコレクション無し、型安全性
-
cargo test/cargo clippy による自動テスト・静的解析
-
型による誤用防止 (半径と直径の取り違え等)
-
CADファイルもコードで管理
- コードならテスト・レビュー・差分・CIが可能
- STLファイルは単なるバイト列
AIエージェント対応
-
AIコーディングエージェント による自動設計・エクスポートを想定
-
READMEに全API表、レシピ集、Blender MCP連携 解説あり
-
エージェントが生成・エクスポート・Blenderインポート・レンダリングまで自動化可能
-
Claude による自動レンダリング事例
-
フィードバックループ
- 部品を記述 → コード生成 → メッシュ出力 → プレビュー → 反復設計
- 全てターミナル上で完結
vcadを試すには
- cargo add vcad で導入
- ドキュメント: docs.rs/vcad
- ソース: github.com/ecto/vcad
- サイト: vcad.io
- MITライセンス、バージョン0.1
- 今後の予定:フィレット、面取り、ねじ、Web GUIなど
- コアは既に堅牢 :プリミティブ・ブーリアン・トランスフォーム・エクスポート
- クリック作業から脱却し、コードで設計 する新時代のCAD体験