世界を動かす技術を、日本語で。

RustによるパラメトリックCAD

2026年1月28日原文(campedersen.com)

概要

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体験

Hackerたちの意見

既に2020年から静かに開発が進んでいるRustでのCADプロジェクト、Fornjotがあることに注意してね: https://www.fornjot.app/

あと、Truckもね https://github.com/ricosjp/truck

FornjotもTruckも、一般的な使用にはまだ準備が整ってないよ、BREP CADカーネルとしてはね。

これ、すごくFidget(https://github.com/mkeeter/fidget)やlibfive(https://github.com/libfive/libfive)に似てるね!マット・キータの素晴らしい作品だよ!

これには出会ったことがなかった、ありがとう!

数年前にKeeterのAntimonyで遊ぶのがめっちゃ楽しかったけど、残念ながらほとんど放置されちゃったね。libfiveが次世代らしいけど、まだ試してないんだ。比較するとどうなのか知ってる?

最初の段落はかなり示唆に富んでるね。著者は市場にあるプロレベルのパラメトリックCADプログラムを理解してないみたい。>「ロボットのために物理的なパーツをデザインし続けてる。モーターマウント、センサーブラケット、ホイールハブ。毎回、ワークフローは同じ:GUI CADプログラムを開いて、1時間くらいクリックして、STLをエクスポートして、ボルトパターンが2mmずれてることに気づいて、また繰り返す。これ、意味がないよね。ボルトパターンが2mmずれてるって気づいたら、その寸法を編集してCADプログラムに再計算させればいいだけ。もう1時間もクリックする必要なんてないんだ。これが、Blenderでモデリングするのとは違う、制約ベースのパラメトリックモデリングの魅力だよ。著者のプログラムは、Publisherの代わりにvimを書くようなもので、全く別の問題を解決してる。しかも、このコードをモデルとして扱うパラダイムはすでに存在する:OpenSCAD」

その通り、全然勉強不足だよ!プルリクエスト大歓迎! :)

批判する前にちょっと読んでみて:>「私が気にしていることの一つは、ほとんどのCADツールが気にしていないこと:vcadはAIコーディングエージェントが使うために設計されている。」

制約ベースのパラメトリックモデリングの魅力って、Blenderでのモデリングとは全然違うよね。私も同じこと考えてた。これって、3DモデリングをCADに近づけるAPIみたいだけど、CADが制約やパラメトリゼーション、もっと色々なことを含んでるってことに気づいてない感じ。

OpenSCADが好きなら、https://modelrift.com をチェックしてみて。これはOpenSCADのブラウザベースのIDEで、LLMを使って.scadを生成し、3Dモデルビューアで即座に.stlの3Dモデル結果を表示してくれるよ。AIモデルはまだOpenSCADには向いてないから、modelriftの便利な機能は「スクリーンショットを使った」反復作業で、人間が視覚的な問題を注釈してAIアシスタントに戻して修正させることができるんだ。すべてホットキーショートカットを使ってね。

これのいいところは、プログラム的なCADができることで、ユーザーの入力に基づいて.stlファイルをダウンロードできるウェブアプリケーションとかが作れることだね。週末にちょっと遊ぶ時間ができるといいな。ちなみに、Microcad(https://microcad.xyz/)で数回週末を過ごしたんだけど、すごく面白かったし、Rustっぽい感じがあったよ。ただ、どうしても3Dエリプスの作り方が分からなかったんだよね。

Hacker Newsで議論の続きを見る