solidcraft-modeling について
solidcraft-modelingは、SolidCraftで部品を計画、作成、検証するためのスキルです。段階的なバッチ処理でパラメトリックCADを構築し、計算した測定値と照合します。
主な機能
- 01形状と予想測定値の計画
- 02段階的なバッチで部品を作成
- 03パラメトリックなスケッチとフィーチャー
- 04体積、境界ボックス、エラーの確認
- 05CAD、印刷、ロボット形式へのエクスポート
活用シーン
- 01計算した寸法から部品を作成
- 02穴、切り欠き、フィーチャー位置の検証
- 03パラメーター変更による設計への影響を確認
MCP 対応
SolidCraftのチャットまたはMCPクライアントから、このスキルを使ってSolidCraftサーバーとアプリを操作できます。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ tangency-labs/ solidcraft --skill solidcraft-modelingインストール後、Claude Code で/solidcraft-modelingを入力して読み込まれたか確認します。
同梱ファイルreference.md
詳細
SolidCraft モデリング
概要
まず数値を使って部品を設計します。次に、少数の大きな batch 呼び出しで作成し、各段階で、自分で計算した値と照らし合わせながら measure で確認します。スムーズに作成するには、ビルドの batch 呼び出しが3~4回、確認を含めて約10~13回の呼び出しが必要です。コマンドの形式、平面の軸、ID、応答サイズ、既知の注意点は、このファイルの隣にある reference.md に記載されているため、コマンドカタログを調べる必要はありません。
最初の呼び出しの前に
- SolidCraft 独自のチャットまたは任意の MCP クライアントで、
skill_reference {"skill":"solidcraft-modeling"}を呼び出します。それ以外の環境では、reference.mdを読みます。 - セッションが空だと思っている場合でも、
inspect_design {"measure":false,"sketches":false}を実行します。- SolidCraft サーバーがユーザーの開いているアプリを操作している場合、サーバーの指示は
Backend: connected to the SolidCraft appで終わります。それ以外の場合はBackend: headlessで終わります。 - デザインにタイムラインフィーチャーがある場合、
new_designまたはopenを呼び出す前に確認してください。どちらも未保存の作業を破棄するためです。開いているデザインに追加で作成することもできます。
- SolidCraft サーバーがユーザーの開いているアプリを操作している場合、サーバーの指示は
- 計画を書きます。
- パラメーター
- 配置:パターンやミラーを平面から作成できるよう、部品の中心を原点に合わせます
- すべてのフィーチャーと、エッジまたは面を選択する際に使うワールド座標上の点
- 予想される体積とバウンディングボックス
ビルド
-
ステージ: ステージごとに1つのバッチを使用します。
- パラメーター、スケッチ、寸法、仕上げ、最初のフィーチャー
- フィレットとシェル
- 穴、カット、パターン
-
失敗: バッチは全件成功するか、全件失敗するかのどちらかです。失敗した場合は、
failed.indexとfailed.errorを確認し、そのステップだけを修正してバッチを再送信します。 -
リスクのあるステップ: 周囲の作業がロールバックされないよう、リスクのあるステップは単独のバッチに入れます。これには、接触する曲面間のブーリアン演算や、これまでに実行したことのない操作が含まれます。
-
応答サイズ: 大きな設計では、
batchとexecuteに"verbose": falseを渡します。 -
スケッチ ID は予測可能なため、 同じバッチ内の後続ステップで使用できます。
- スケッチごとに、各種類の要素は1から数えます(
l1、c1、a1、p1)。 - そのスケッチの先行ステップで作成された要素を数えます。たとえば、
rectangle.centerはl1〜l6とp1〜p5を作成します。 - IDを確認するためだけにバッチを分割しないでください。
- スケッチごとに、各種類の要素は1から数えます(
-
パラメーターに追従する必要がある位置は、次の方法で指定します。
- スケッチ寸法を式の値(
"w/2 - wall - 6")を使って"origin"に指定する solid.cylinder base:["w/2-6","d/2-6","wall"]のような式フィールドを使う
単なる数値はパラメーターに追従しません。
- スケッチ寸法を式の値(
-
繰り返し:
solid.pattern.rectangularは式による間隔を受け取り、solid.mirrorはXY/XZ/YZ、構築平面、または{origin, normal}を受け取ります(原点の座標には["half", 0, 0]のような長さの式を指定できます)。ミラーまたはパターンのフィーチャーを、さらにミラーまたはパターン化することはできません。 -
エッジと面の選択では、最も近いエッジまたは面にスナップします。エッジから本体サイズの5%を超えて離れたエッジ選択は拒否されます(
the nearest edge is 15.000 mm away)。大きな本体ではこの許容範囲も広くなります(949 mmのボードでは約48 mmです)。そのため、ジオメトリから正確な中点を計算してください(中央に配置したボックスの垂直な角のエッジは[w/2, d/2, h/2]です)。- 選択位置には単なる数値を指定してください。
- 選択は一度だけ解決され、その後パラメーターが変更されても、選択したエッジに追従します。
- 点の代わりに面名を指定できます(
faces:["F1:+z"]、sheet.convertのface)。body_topologyには、各面のname、その上に位置するpoint(穴のある面では面の重心が穴の中にある場合があります)、および円柱の場合は{origin, axis, radius}が一覧表示されます。
-
プロファイル: 押し出しでは既定ですべての領域が対象となり、別の領域の内側にある領域は穴になります。2つの同心円はリングになり、リングの内側に3つ目の円を置くと、別の円盤状のボディになります。領域を選択するには
profilesを渡します。 -
順序: シェルを作成する前に外側のエッジをフィレットし、シェルがフィレットに沿うようにします。例外は2つあります。
- シェルで取り除く面のエッジ(開いた箱の縁など)は、シェルの作成後に丸めます。シェル作成前に丸めると失敗する場合があるためです。
- 球と円柱の接合部のように、2つの曲面間にフィレットを作成すると、シェルは
offset: only bodies with planes, cylinders, cones, spheres and toriで失敗します。先にシェルを作成してください。内側の角は鋭いままになるため、その部分の壁はthicknessより薄くなります。
確認
- 各ステージ:
measure {}を実行します(ボディごとに約 0.9 KBです。{"summary":true}を指定すると、ボディごとに名前、体積、バウンディングボックス、面数、closedのみが返されます)。体積、バウンディングボックス、面数を計算値と比較してください。体積が変わらない切り取りや穴は、成功と報告されても処理に失敗しています。 - タイムラインの状態:
inspect_design {"measure":false,"sketches":false}で各フィーチャーのerrorとwarningが表示されます。 - パラメーターのテスト:
set_parameterを実行します。errors: []が返ることを確認してから、もう一度measureを実行します。COM とバウンディングボックスが計算した量だけ移動しているはずです。値を反映せずに試すには、check_parameters {"set": {"L": "140 mm"}}を実行します。体積、エラー、円柱の軸が返され、設計は元の状態に戻ります。 - 位置:
measureではフィーチャーの位置は分かりません。- 非対称な部品では、計算した COM の変化を確認します。
- 対称な部品(鏡映またはパターン配置)では COM は移動しないため、上面図のスクリーンショットを撮り、既知のサイズを基準にピクセル単位の距離を比較します。
- 穴やボスの場合は、
body_topology {"body":"Body1","faces":"cylinders"}を使います。円柱ごとのエントリー(radius、origin、axis、軸方向のextent、統合された面のnames)が数行で返されます。 - 全情報を返す
body_topologyは最終手段です。25~45 KB を消費し、円柱が半円柱面に分割されます。
- 最終確認:
screenshot {"source":"model","view":"iso","width":480,"height":320}を 1 回実行します。アイソメ表示では隠れる壁の内側のフィーチャーには、"view":"top"を使います。widthとheightはモデルのレンダリングにのみ適用されます。- サーバーがブリッジ接続されている場合、
sourceのデフォルトはアプリウィンドウ全体で、viewはユーザーのカメラも動かします。そのため、"source":"model"を渡し、ユーザーがカメラの移動を希望しない限りviewは省略します。
完了
export {path} は CAD 用の .step、印刷用の .3mf/.stl、またはロボットシミュレーター用の .urdf(ジョイントを含むアセンブリ)を書き出します。save {path} は .sc を書き出します(以前のリリースで作成された .solidcraft ファイルも引き続き開けます)。
注意点
| 考え方 | 代わりに行うこと |
|---|---|
| 「最初にすべてのコマンドを一覧表示する」 | reference.md を参照するか、list_commands {"filter":"<distinctive word>"} を実行します。フィルターなしの一覧は 100 KB を超えます。 |
「body_topology で位置を確認する」 | measure の COM とバウンディングボックスを計算値と比較します。 |
| 「スケッチを調べる」 | sketch.solve なら 100 バイト未満で自由度とプロファイル数が返されます。sketch.inspect は単独で実行し、大きなバッチには決して含めないでください。 |
「最初から作り直すために new_design を使う」 | サーバーがブリッジ接続されている場合は、まず確認してください。 |
| 「成功と報告されたから、処理もうまくいった」 | 計算値と一致する measure の結果だけが成功の根拠になります。 |