Community画像github.com

ezylevy/3d-stl

2つのエントリポイント(ジオメトリルート、画像ルート)から、水密なSTL、パラメトリックスクリプト、スライサテーブルを出力します。

3d-stl とは?

このスキルは、3DプリンティングのためのSTLファイルを生成する2つの方法を提供します。1つ目の「ジオメトリルート」は、寸法や言葉によるオブジェクトの説明からパラメトリックな3Dモデルを構築します。2つ目の「画像ルート」は、写真や画像を高さフィールド(リソグラフまたはレリーフ)に変換し、水密なメッシュを生成します。どちらのルートも、出力は常に水密なSTL、パラメトリックな生成スクリプト、そしてスライサテーブルがセットになります。このスキルはClaude CodeやClaude.aiで使用でき、`scripts/`フォルダ内のPythonライブラリ(`partlib.py`と`imagelib.py`)を利用します。ジオメトリルートでは、明確な寸法決定、パラメータ化されたスクリプティング、そしてメッシュ検証(水密性、バウンディングボックスの一致)が重視されます。画像ルートでは、ブーリアン演算を使わない堅牢なアルゴリズムで、大きな画像や複雑な画像でも確実に処理できます。最終的には、スライサ設定の推奨、組み立て部品のクリアランス管理、そして出力ファイルの配信までをカバーしています。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ezylevy/ezy-plugins/tree/HEAD/plugins/3d-stl/skills/3d-stl

Installed? Explore more 画像 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

3D STL

2つのエントリポイント、1つの出力標準:水密なSTL、それを再生成するパラメトリックスクリプト、そして印刷を成功させるスライサテーブル。

入力ルートライブラリ
寸法、記述されたオブジェクト、言葉によるスケッチジオメトリルートscripts/partlib.py
写真または画像ファイル画像ルートscripts/imagelib.py

ジオメトリルートのセットアップ:

pip install trimesh shapely manifold3d --break-system-packages -q

画像ルートはPillowとnumpyのみ必要です — メッシュライブラリもブーリアンも不要です。


ジオメトリルート

1. モデリング前に寸法を確定する

ここでの手戻りのほとんどは、悪い形状が原因ではなく、曖昧さが原因です。パーツの情報を簡潔なテーブル(寸法 → 値 → 出典)にまとめ、仮定した事項には印を付けます。特に以下の点に注意してください:

  • 外形サイズ vs. 取り付け中心。「幅87 mm」と「ネジ間87 mm」は異なるパーツです — 壁厚1つ分だけ異なります。確認してください。
  • 不足している3次元。プロファイル+厚さは3次元のうち2つしかありません。適切な奥行きを選び、その旨を述べ、フラグにします。
  • ファスナーの意図。「5 mmネジ」は、金属M5ネジ用のクリアランス穴、印刷されたねじピン、またはヒートセットインサートのいずれかを意味します。3つの異なるモデルがあります。
  • 既存のハードウェア。パーツが既存のものと組み合わさる場合、その穴間隔と材料厚は優先事項ではなく制約です。

形状を変更するであろう質問は最大1〜2つに絞り、残りは仮定し、仮定を明記して進めます。

2. ライブラリを使ってモデリングする

scripts/partlib.pyは、プロファイルビルダー、extrude、threaded_rod、threaded_pin、hex_nut、place、finishを提供します。メッシュ計算を再実装するのではなく、これをインポートします — らせんねじ山は微妙に間違えやすいです。

scripts/example_handle.pyは完全な動作サンプルパーツ(ブリッジハンドル+一体型ねじピン+対応ナット)です。これを新しいパーツの骨格としてコピーします。

モデルはargparseフラグを持つパラメトリックスクリプトとして書き、ハードコードされた数値は使用しません。ユーザーは数分以内にバリエーションを要求するでしょう。その答えは新しいモデルではなく、1つのコマンドラインであるべきです。STLと一緒にスクリプトも提供します。

3. 一般的なパーツのレシピ

パーツ構築元
ブリッジハンドル、⊓ブラケットbridge_profile + extrude
穴付き平板内部リング付きshapelyポリゴン + extrude
ピン、スタッド、ボルトthreaded_pin、その後軸上にplace
ナット、ねじ付きソケットhex_nut、またはthreaded_rod(clearance=…)の減算
スペーサー、ブッシング2つの同心円 + extrude
フック、Lブラケット側面図のポリゴン + extrude、ベッドに平置き
エンクロージャ外箱から内箱を減算、リップに0.15 mmクリアランス

リストにないものでも、ポリゴン、押し出し、ブール演算です。


画像ルート

scripts/imagelib.pyは画像を高さフィールドに変換し、明示的な頂点グリッドソリッド(上面、平底、4つの側面)を生成します。ブーリアンエンジンを使用しないため、大きな画像や奇抜な画像でも失敗しません。

python3 imagelib.py photo.jpg --mode lithophane --width 100 \
    --out stl_output/lithophane.stl
python3 imagelib.py logo.png --mode relief --width 80 --base 2 \
    --out stl_output/relief.stl
モードマッピング典型的なz
relief明るいピクセルが隆起0.6 → 4.0 mm、しばしば--baseプレート上
lithophane暗いピクセルが厚くなり、バックライトで光る0.8 → 3.0 mm、ベースなし
  • --resは長辺のサンプル数を設定します(デフォルト200)。サンプルあたり約0.4 mmを超える解像度は無駄です — ノズルで印刷できず、ファイルサイズが肥大化します。大きな印刷の場合にのみ上げてください。
  • コントラストは読み込み時に自動的に引き伸ばされます。平坦でコントラストの低い写真は、平坦でがっかりする印刷結果になります。印刷せずにそう伝えてください。
  • リソグラフは顔や高コントラストの被写体に向いています。風景や込み入ったシーンは泥のようになります。
  • check()は、すべてのエッジが反対方向に正確に2回出現することを検証します。カウントだけでは逆に縫合された壁を見逃し、「有効な」STLがスライサで裏返しになります。実行し、報告してください。

仕上げ(両ルート共通)

最初に確認:finish()(ジオメトリ)とcheck()(画像)は、バウンディングボックス、水密性、三角形の数を報告します。バウンディングボックスを要求された寸法と比較します — 符号エラーや単位の間違いを即座に捕捉します。水密でないメッシュを決して提供しないでください。

視覚的に明白でないもの(ねじ山、曲線、アセンブリ)については、簡単なmatplotlibプレビューをレンダリングして確認します。20秒で、6時間の誤った形状の印刷を防げます。

向き、ねじピッチ、クリアランスを選択する前に、references/design-rules.mdを読んでください。これには、層方向の強度、印刷可能なねじプロファイル、はめ合い公差、画像由来パーツ、および名前を付ける価値のある故障モードが含まれています。

返信には以下を含める必要があります:

  1. 仮定値を含む寸法テーブル。
  2. ユーザーに代わって行われた決定とその理由。要求された機能が機械的に弱い場合は、要求されたものを作成すると同時に、弱点を具体的な代替案とともに名前を挙げます — 決して黙って代替しないでください。
  3. スライサテーブル:層高、壁、インフィル、サポート(正確な場所)、材料、およびどの面をベッドに置くかとその理由。
  4. 異なる数値で再生成するための1行コマンド。
  5. 印刷前に既存のハードウェアと確認すべき事項。

STLファイルは、claude.aiでは/mnt/user-data/outputs/に、Claude Codeではカレントワーキングディレクトリのstl_output/フォルダに配信し、生成スクリプトと一緒に提示します。スクリプトはこのスキルのscripts/フォルダにあります。フルパスで呼び出すか、パーツスクリプトの隣にコピーします。Windowsではpython3の代わりにpythonを使用します。

マルチパーツアセンブリ

パーツが組み合わさる場合(ピンとナット、蓋と箱、ヒンジの半分):

  • 両方を1つのスクリプト内の共有パラメータから生成します — 2つのファイルにクリアランス値があるとずれます
  • オスとメスを同じ関数から導出し、クリアランス分だけオフセットして、矛盾が生じないようにします
  • それぞれの印刷数を明記し、小さい方のスペアを提案します
  • はめ合いが不確かな場合は、公差テストを提供します:2つのクリアランスで小さいパーツを印刷し、うまく回る方を採用します

関連スキル