SolidCraft 0.6: Rust製のオープンソース・パラメトリックCAD、MCPサポートを内蔵
SolidCraftは、純粋なRustで構築されたオープンソースのパラメトリック3D CADアプリケーションです。デスクトップアプリ、ブラウザ、ヘッドレスCLIとして動作し、Model Context Protocol (MCP) サーバーを内蔵しているため、AIエージェントが人間と同じモデリングコマンドを操作できます。このプロジェクトは、作者の bherbruck によってHacker Newsに「Show HN」として投稿されたもので、ライセンスはMIT OR Apache-2.0です。「初期段階だが単純な部品なら使用可能」と説明されています。
SolidCraftとは
SolidCraftは、拘束スケッチとフィーチャタイムラインのワークフローを備えたパラメトリックCADアプリケーションであり、Rustで記述され、Windows、macOS、Linux、Snap、およびWeb向けに配布されています。設計目標は、Autodesk Fusionのユーザーにとって馴染み深いものにすることです。つまり、拘束スケッチ、ソリッドフィーチャ、編集可能なタイムライン、パラメータ、アセンブリを備えています。
このプロジェクトは独立しており、クリーンルーム方式の貢献ルールに基づいて開発されています。READMEによると、動作は公開ドキュメント、一般的なCADの慣習、ユーザーフィードバックに基づいて設計されており、リファレンステストには解析値とオープンソースツールが使用されています。また、SolidCraftはAutodeskと提携、後援、または承認されているわけではありません。
現在のデモはバージョン0.6とラベル付けされており、空の設計からモデリングされたRaspberry Pi 4ケースが示されています。ボードのパラメータで寸法指定されたスケッチ、押し出し、フィレット、シェル、58 × 49 mmの穴の長方形に配置されたM2.5スタンドオフ、ポートの切り抜き、通気スロット、色付けが行われ、その後、パラメータで高さを24 mmから32 mmに変更することでモデル全体が再構築されます。
精度状況: 76個のリファレンスパーツ中75個が一致
SolidCraftのREADMEによると、76個の公開リファレンスパーツのうち75個が、解析値またはFreeCADで計算された体積、面積、重心、バウンディングボックスと一致しており、残りの1つはバグとして追跡されています。プロジェクトは、これらのチェックが完全な幾何学的またはワークフローの同等性を保証するものではないと明示的に警告しています。
これはプロジェクトのドキュメントの中で最も具体的な品質主張であり、その範囲は限定的です。つまり、一般的なモデリングの正確性ではなく、固定されたリファレンスパーツセットにおける測定の一致をカバーしています。
アーキテクチャ: すべてがコマンド
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に基づく軌跡交差と剛体クラスタ分解を使用して構築によって正確に配置されます。残りはLevenberg–Marquardt法で解決され、ヤコビ行列のランクによって残りの自由度が与えられます。サポートされている拘束には、一致、点曲線、水平/垂直、平行、垂直、接線、曲率 (G2)、等価、同心円、共線、中点、対称、固定が含まれます。さらに、パラメータによって駆動される線形、整列、水平、垂直、点対線、半径、直径、角度、円弧スイープ、円弧長、スロット長の寸法もサポートされています。過剰拘束の編集は拒否され、完全に拘束されたジオメトリは黒色に変わります。
パラメトリックタイムライン上のフィーチャには、押し出し、回転、スイープ、ロフト、フィレット/面取り、シェル、ドラフト、穴、ねじ、パターン、ミラー、分割、結合、移動、構築ジオメトリが含まれます。タイムラインは増分的に再構築され、フィーチャは編集、抑制、名前変更、並べ替え、削除が可能です。
パラメータと構成は、2 * width + 5 mm や angle / 2 といった単位を認識する式、順序付けられたルール、フィーチャの抑制、行ごとのボディの材質と外観をサポートしています。アセンブリは、ネストされたコンポーネントとオカレンス、ジョイント、モーションスタディ、接触セット、干渉、材質を考慮した質量特性をサポートしています。板金サポートは、フランジ、ヘム、折り曲げ/展開/再折り曲げ、材質の切り抜き、フラットパターン、保持された浅い角柱状ポケット、正確な線/円弧/円のDXFアウトライン、曲げテーブルをカバーしています。
ファイル形式と相互運用性
SolidCraftは設計をロスレスのバイナリメッシュペイロードを含む .solidcraft コンテナに保存し、開く、名前を付けて保存、エクスポートにはプレーンなJSONが引き続きサポートされています。
エクスポート形式は、STEP (ボディ名、色、コンポーネントをアセンブリとして、回転面をネイティブの平面、円柱、円錐、球、トーラスとして保持するAP242)、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ラインの制御チャネルも公開しており、ヘッドレス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) としてのLinuxビルド (ARM64バリアントを含む) を提供しています。ブラウザビルドは、?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の議論は、機能よりも3つの質問に集中しました。truck カーネル上での構築が実現可能かどうか、AI支援開発がCADカーネルを成熟させられるか、そしてAI生成されたCADプロジェクトが5年後も存在するかどうかです。
コメント投稿者の bruckie はカーネルを特定し、その難しさを次のように述べました。
「これはTruckモデリングカーネルを使っているようですね... Truckはクールに見えますが、B-repカーネルを作成するのは驚異的な作業量です。それを考えると、SolidCraftがどれだけ早く成熟するのか興味があります。」
同じ投稿者は、ttouchが以前Truck上でブラウザCADツールCADmiumを構築し、その後OpenCASCADE上でCADaraを構築したことにも言及しました。
SolveSpaceの開発者である phkahler は、難しい問題はすぐには解決されないと主張し、別の戦略を提案しました。
「これが急速に進歩するとは思えません。Solvespaceでは最近、ClaudeによるNURBSブーリアンの問題を修正するコミットが多数ありました。分析は非常に印象的で、修正のほとんどはコードの複数の専門家による多くのレビューを経て受け入れられました。このプロジェクトが、彼らが抱えている難しい問題を解決できるとは思えません。個人的には、AIにOCCTカーネルをRustに変換させるか、そのままラップして使うべきだったと思います。」
同じ投稿者は、SolveSpaceはそれらのAI支援による修正を含む3.3リリースの直前であり、ボランティアが以前失敗したClaudeが書いたGTK4ポートブランチがマージに近い状態であると付け加えました。
zamalek は耐久性の懸念を直接提起しました。
「AI生成ソフトウェアに移行することについて懸念しているのは、CADファイルには極めて長い寿命があるということです。このプロジェクトは5年後もアクティブでしょうか?」
複数のコメント投稿者が、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で対処されていない2つのギャップが指摘されました。rts-gordon は3Dプリント機能がサポートされているかを尋ね、androiddrew は単に「CADは素晴らしいが、CAMが欲しい」と書きました。u8080 はプロジェクトが閉鎖されるリスクを提起し、larodi は、このようなエージェント制御可能なオープンツールのより広い価値は、商用ベンダーがライセンスを通じて制限している自動化チェーンのリンクとして機能することだと主張しました。
今後の注目点
READMEでは、SolidCraftが領域ごとに持つコマンドについては docs/features.md を、ステータスと計画については ROADMAP.md を、未解決の作業や既知のバグについてはGitHubのissueを参照するよう案内しています。プロジェクトは、ビルドとテストのプロセス、コードマップ、クリーンルームとライセンスのルール、そして最も助けが必要な場所を文書化した CONTRIBUTING.md を通じて、貢献を明示的に呼びかけています。
Sources
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- Dispatch