cad について
`cad`は、Python、build123d、cadgenを使った3D CADモデルの作成、編集、出力、検査向けスキルです。モデリングから検証、ビューアでの確認までを扱い、継続的に生成する出力と単発変換を区別します。
主な機能
- 01Python CADモデルの作成と編集
- 02子モデルを使ったアセンブリ構築
- 03STEP、STL、3MF、GLBへの出力
- 04形状と保存済み文書の検査
- 05スナップショットによるモデル確認
活用シーン
- 01部品やアセンブリの作成・修正
- 02保存済みSTEPのメッシュ形式への変換
- 03形状の測定やクリアランス確認
- 04編集後のモデル確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ earthtojake/ text-to-cad --skill cadインストール後、Claude Code で/cadを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEagents/openai.yamlreferences/animation-deformation.mdbuild123d-modeling.mdcad-brief.mdinspection-and-validation.mdkinematics.mdmigrations.mdpositioning.mdproject-layout.mdproject-template.mdrepair-loop.mdsnapshot-review.mdstep-generation.mdsupported-exports.md詳細
CAD モデリングと検査
出典: earthtojake/text-to-cad で保守されています。 現在のインターフェースについては、インストール済みのローカルスキルファイルを使用してください。
タスクから始める
依頼に必要なリファレンスだけを読んでください。
| タスク | 最初のアクション | リファレンス |
|---|---|---|
| 部品またはアセンブリを作成または編集する | 既存の Python モデルを探すか、以下のようにデコレーター付きモデルを作成します。ソースを編集して python <model>.py を実行します。 | モデルの契約、形状の構築。アセンブリの場合は配置 |
| CAD プロジェクトを整理する | 既存のレイアウトに従います。複数モデルを含む新規プロジェクトでは、src/、形式別の出力フォルダー、モデルカタログを使用します。 | プロジェクトのレイアウト、最小限のひな形 |
| STL、3MF、または GLB にエクスポートする | 維持する出力にはメッシュデコレーターを追加するか、単発のエクスポートには形式の build INPUT.step OUT コマンドを実行します。 | メッシュのエクスポート |
| プロンプトから参照を解決する | 保存済みの STEP/STP ドキュメントを特定し、read_scene で開いて、以下のように scene.resolve(ref) を呼び出します。 | 参照の構文と検査 |
| 形状を測定または確認する | ネイティブの build123d 形状と、必要に応じて cadgen.geometry を使って、Python で確認処理を記述します。 | 検査と検証 |
| 画像または図面からモデリングする | 指定された寸法を抽出し、重要な仮定を記録します。 | 依頼内容の解釈 |
| 既存の STEP/STP、STL、3MF、または GLB を開く | ユーザーに表示します。 | モデルを表示する |
| 外観または動きを確認する | 保存済みドキュメントのスナップショットを取得します。ポーズやクリップには、宣言されたキネマティクスまたはアニメーションを使用します。 | スナップショット、キネマティクス |
| 失敗の原因を調べる | エラーを読み、関連するモデル、形状、またはコマンドの契約を確認します。 | 修復ループ、バージョン移行 |
| 移行を促すメッセージが表示された | 今すぐ移行してください。移行していないモデルでは、キネマティクス、マテリアル、アニメーションが警告なしに失われます。 | バージョン移行 |
2D DXF 図面には $dxf を使用してください。このスキルは、図面が投影する 3D 部品を担当します。
URDF、SRDF、または SDF には、対応するロボット記述スキルを使用してください。
セットアップとパス
cadgen は uv 経由で実行します。これにより、このスキルのコマンドは CAD アプリのサーバーと同じインストール環境およびウォームビルドデーモンを共有します。
- 以下でいう
cadgenはuvx --no-config --managed-python --python 3.13 --from cadgen==0.7.26 cadgenを意味します。 - 以下でいう
pythonはuvx --no-config --managed-python --python 3.13 --from cadgen==0.7.26 pythonを意味します。
初回実行時にはそのインストール環境がダウンロードされ、最初のスナップショット取得時にはヘッドレスブラウザーがダウンロードされます。以降の実行では、どちらも再利用されます。
cadgen doctor <skill-dir> は、使用中のインストール環境を報告し、それがこのスキルで固定されているものと一致するか、CAD カーネルが読み込まれるかを確認します。インストールまたはカーネル読み込みのエラーには、これを使用してください。追加のフラグについては、該当するサブコマンドの --help を使用してください。
プロジェクトのコマンドは、CAD プロジェクトのルートから実行してください。CLI の入力/出力パスと read_scene/read_step のパスは、作業ディレクトリを基準とします。デコレーターの out= パスは、モデルスクリプトを基準とします。モデルをどのディレクトリからでも実行できるようにするには、__file__ を基準に入力ファイルを指定してください。
モデルの作成または編集
モデルは、build123d のシェイプを返す、引数のないデコレーター付き関数を含む通常の Python スクリプトです。エントリーポイントごとにモデルを 1 つ用意し、スクリプトと宣言する出力のファイル名のベース部分を一致させます。たとえば、src/bracket.py の場合:
from cadgen import build123d as bd
from cadgen import step
WIDTH = 40.0
@step(out="../STEP/bracket.step")
def bracket():
body = bd.Box(WIDTH, 20, 6)
body.label = "bracket"
return body
if __name__ == "__main__":
bracket()
python src/bracket.py
- モデルのソースが存在する場合は編集してから実行し、出力を再生成します。ドキュメントのエクスポートコマンドとスナップショットコマンドは保存済みファイルを使用し、ソースは実行しません。
- 意味のある寸法は明示します。タスクやプロジェクトで別の規約が指定されていない限り、ミリメートルと XY/+Z を使用し、機能上有用な基準点を選びます。物理部品では、表面や構築用ジオメトリの要求を尊重しつつ、閉じた正の体積を持つソリッドを優先します。
- パラメーター化されたジオメトリは通常のファクトリー関数に記述し、デコレーター付きモデルで構成を選択します。モジュール本体の処理は軽量に保ちます。ジオメトリの作成と CAD 入力の読み込みは、モデルまたはそのヘルパー内で行います。上記の遅延
bdインポートを使用し、アノテーションでbd型に言及する場合は、アノテーションの評価を遅延します。 - アセンブリモデル内で子モデルを呼び出します。共有ジオメトリを維持するには、その結果を
.moved()またはLocation * shapeで配置します。意味のあるインスタンスラベルとソースで定義した配置を使用します。子モデルを変更した場合は、親アセンブリを再実行して変更を反映します。 - ベンダー提供の STEP 入力は
cadgen.read_stepで読み込みます。ビルドで開くすべてのファイルは、読み込み方法(json.load、np.load、bd.import_step、プロジェクトのフォントなど)にかかわらず、それぞれ独立した入力です。入力は宣言されません。モデル自身の出力を入力として読み込んではいけません。ジオメトリは、追跡されていない時刻、乱数、環境変数、作業ディレクトリに依存させてはいけません。 - 購入可能な部品を名称で指定する必要がある場合は、代替部品を作る前に
$step-partsを検索します。検索して見つからなかった場合と、代替部品に関する前提を記録します。
不明な寸法やインターフェースについては、モデリングと検証に必要な前提を記録します。結果に大きく影響する情報が不足している場合は、確認を求めます。検査やエクスポートの依頼には、モデリングの概要は必要ありません。
メッシュのエクスポート
実行のたびに維持する出力には、モデルに @stl、@threemf、または @glb を重ねて指定します。モデルではメッシュのみを宣言でき、STEP は任意です。既存の生成済みまたはインポート済み STEP から一度だけエクスポートする場合:
cadgen stl build STEP/bracket.step STL/bracket.stl
cadgen 3mf build STEP/bracket.step 3MF/bracket.3mf
cadgen glb build STEP/bracket.step GLB/bracket.glb
OUT を省略すると、指定した拡張子のファイルが同じディレクトリに 1 つ書き込まれます。宣言されたモデルのバリエーションは検出されません。デコレーターの使用例、メッシュの許容誤差、アニメーション付き GLB については、メッシュのエクスポートを参照してください。
プロンプトの参照と検査
/work/robot/STEP/assembly.step#o1.2.f7 のような参照は、特定の保存済みドキュメント内のジオメトリを示します。ファイル部分は、CAD ビューアーがコピーしたドキュメントの絶対パスで、実際のファイル名と拡張子が含まれます(スペースまたは # を含む場合は引用符で囲まれます)。複数のエンティティを選択した場合、参照をカンマで区切ったものが1行としてコピーされます(/work/robot/STEP/assembly.step#o1.2.f7,o1.2.f8)。そのパスを read_scene で開き、行全体を resolve() に渡すと、参照ごとの選択を順番に並べたタプルが返されます。
from cadgen import read_scene
scene = read_scene("/work/robot/STEP/assembly.step")
for selection in scene.resolve("/work/robot/STEP/assembly.step#o1.2.f7,o1.2.f8"):
face = selection.shape() # owned native geometry, in document world coordinates
print(selection.ref, face.area)
(selection,) = scene.resolve("/work/robot/STEP/assembly.step#o1.2.f7") # one ref
Quick Edit プロンプトでは、ドキュメントは File: の下に、選択したエンティティは References: の下に記載され、スナップショットのコンテキストはインライン JSON または .snapshot.json のパスとして示されます。レンダリングするには、インライン JSON を一時的な .snapshot.json に保存し、cadgen snapshot --job <snapshot file> を実行します(--job にはファイルパスを指定します)。編集の前に、提供された注釈を確認してください。注釈がない場合、キャプチャされたビューは任意のコンテキストです。依頼に役立つ場合はレンダリングしてください。編集後、関連するビューを再生して変更を確認してください。パケットのスキーマとキャプチャの動作については、
注釈と Quick Edit のビュー
を参照してください。
STEP 以外のファイルへの参照は、そのファイル内でビューアーが選択した対象を、そのファイル独自の用語で示します(read_scene が解決する STEP セレクターはありません)。
| ファイル | 参照 | 意味 |
|---|---|---|
| URDF、SRDF、SDF | /work/arm/arm.urdf#upper_arm | リンク upper_arm |
| GLB | /work/out/model.glb#n12 | glTF ノード nodes[12](0始まり、ファイル独自のインデックス) |
| 3MF | /work/out/plate.3mf#o2.1 | 2番目の <build><item> の1番目の <component>(1始まり);#o3 は3番目の build item |
| STL | File: にあるファイルのみ | 1つのメッシュ:ファイル内の何も選択されていません |
単独の #o1.2.f7 の場合は、特定された対象ファイルを使用してください。曖昧なファイルやラベルの中から推測してはいけません。数値参照は、その保存済みリビジョンに対応します。再ビルド後は、開き直して再選択してください。検査リファレンスでは、ラベルの別名、列挙、測定、再利用可能な小規模オペレーションについて説明しています。
inspect CLI はありません。探索的な確認は、プロジェクトの Git 管理対象外の tmp/(またはシステムの /tmp/)に置き、再利用する確認は checks/ または既存のテストディレクトリに保持してください。モデルソースや生出力のフォルダーには置かないでください。
検証と引き継ぎ
依頼された寸法、クリアランス、トポロジーに応じて確認項目を選んでください。STEP 出力の場合は、read_scene または read_step で保存済みの成果物を確認してください。メッシュのみのモデルの場合は、返されたモデルのネイティブジオメトリを確認してメッシュ出力をレビューしてください。ワークフローを満たすことだけを目的に STEP を追加してはいけません。単位、しきい値、選択したジオメトリ、未検証の要件を報告してください。計算の失敗を合格として扱ってはいけません。
ジオメトリを作成または目に見える形で変更した後は、結果の STEP またはメッシュのスナップショットを少なくとも1つ生成してレビューしてください。スナップショットは自分でレビューします。必ず自分でレンダリングして読み取り、ビューアーに任せてはいけません。レビュー対象の特徴が見える追加ビューを選んでください。スナップショットのポリシーとオプションを参照してください。
cadgen step snapshot STEP/bracket.step tmp/review.png
cadgen stl snapshot STL/bracket.stl tmp/mesh.png
失敗した場合はソースを修正し、影響を受ける確認を再実行してください。CAD の比較にはジオメトリと画像を使用してください。パスを指定した git status は記録管理にすぎず、ジオメトリの証拠にはなりません。cadgen store why <model>.py は予期しない再ビルドの理由を説明します。python <model>.py --force は1つのモデルを強制的に再ビルドし、cadgen daemon status はビルドの進行状況を表示します。その他の診断については、モデルの契約を参照してください。
最終回答には、出力ファイル、実際に実行した確認、および材料に関する前提や制約を含めてください。ユーザーはビューアーでモデルを確認できる(モデルを表示する)ため、画像を求められない限りスナップショットを添付しないでください。スナップショットを省略または生成できなかった場合は、スナップショットのリファレンスに記載されたケースを使って説明してください。
モデルを表示する
作成または変更した各ファイルと、ユーザーから表示を求められたファイルを表示します。スナップショットや検証で代用することはできません。
-
ツールに
cad_show(ホストによっては接頭辞が付く場合があります)が含まれている場合は、ファイルの絶対パスを指定して使用し、再度呼び出すタイミングについてはその説明に従ってください。cad_viewはユーザーが選択した内容を読み取り、cad_screenshotはユーザーに表示される内容を示します。どちらも自分の作業をレビューするものではありません。 -
それ以外の場合は、任意のフォルダーから CAD Viewer を実行します。
cadgen viewer --host 127.0.0.1 --json --detach--detachを指定すると、ビューアーがリクエストに応答するようになった時点で戻り、バックグラウンドで実行し続けます。フォアグラウンドのビューアーは終了せず、出力をtailにパイプすると URL が表示されなくなる可能性があるため、必ず指定してください。マシン上のビューアーを起動するか、すでに起動している場合は再利用します。1 行の JSON からurlを読み取り(ポートを推測しないでください)、ファイルごとにurl?file=<そのファイルの URL エンコード済み絶対パス>を返します。起動に失敗した場合は、その旨を伝えてください。
変更した成果物を先に生成してください。ビューアーはモデルのスクリプトを実行しません。既存の STEP ファイルは、必要に応じて開くとコンパイルされます。正確なトポロジーの選択と測定には STEP が必要です。対応するメッシュビューアーでは、三角形上のおおよその測定も行えます。