Community影像github.com

ezylevy/3d-stl

兩個進入點,一個輸出標準:一個水密STL、一個參數化腳本,以及讓列印成功的切片表格。

3d-stl 是什麼?

這個 AI 助手技能提供了一個標準化的工作流程,用於從兩種不同的輸入(幾何描述或圖像文件)生成水密 STL 檔案。它具有雙重路由架構:對於幾何路由,它使用 `scripts/partlib.py` 和一個參數化腳本範本,該腳本從明確的尺寸表格和常見零件配方(如橋接手柄、螺紋銷或外殼)開始建模。對於圖像路由,`scripts/imagelib.py` 將照片或標誌直接轉換為高度場,無需布林運算即可產生網格,非常適合浮雕或 lithophane 效果。該技能強制要求生成一個與其一起交付的參數化生成器腳本,以便使用者只需一個命令即可調整尺寸。它還包括關鍵的品質檢查:`finish()` 和 `check()` 函式會驗證水密性、邊界框尺寸和網格拓撲,以防止切片錯誤。支援的平台包括 Claude Code (透過完整腳本路徑或將腳本複製到工作目錄) 和 claude.ai (將 STL 傳遞到 `/mnt/user-data/outputs/`)。最佳實踐包括建立切片參數表、注意機械弱點,以及為適配零件提供間隙公差測試。

相容平台✓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 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

3D STL

兩個進入點,一個輸出標準:一個水密STL、一個參數化腳本(可再生該模型),以及一個確保列印成功的切片設定表。

輸入路線函式庫
尺寸、描述性的物件、文字描述的草圖幾何路線scripts/partlib.py
照片或圖片檔案圖片路線scripts/imagelib.py

設定幾何路線:

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

圖片路線只需要 Pillow 和 numpy — 不需要網格函式庫,也不需要布林運算。


幾何路線

1. 建模前先確定尺寸

這裡大部分需要重工的原因來自於模糊不清,而不是糟糕的幾何。用一個簡短的表格(尺寸 → 數值 → 來源)重新說明零件,並標記任何你假設的數值。特別注意:

  • 外部尺寸 vs. 安裝中心。 「87 mm 寬」和「螺絲間距 87 mm」是兩種不同的零件 — 它們相差一個壁厚。要去問清楚。
  • 缺少第三個維度。 一個輪廓加上厚度只提供了三個維度中的兩個;選擇一個合理的深度,說明原因,並將其設為一個參數標記。
  • 緊固件的意圖。 「5 mm 螺絲」可能意味著金屬 M5 螺絲的貫穿孔、列印的螺紋銷,或者熱壓螺紋嵌件。這是三種不同的模型。
  • 現有硬體。 如果零件要與現有物件配合,那麼該物件的孔距和材料厚度是約束條件,而不是偏好選項。

最多問一兩個會影響幾何形狀的問題;其餘部分做出假設,說明假設內容,然後繼續進行。

2. 使用函式庫建模

scripts/partlib.py 提供了輪廓建造器、extrude、threaded_rod、threaded_pin、hex_nut、place 和 finish。直接匯入它,而不是重新推導網格數學 — 螺旋螺紋很容易在細節上出錯。

scripts/example_handle.py 是一個完整的範例零件(橋式把手 + 一體式螺紋銷 + 配套螺母)。將其複製作為新零件的骨架結構。

將模型編寫為一個帶有 argparse 標誌的參數化腳本,絕不要使用硬編碼的數字。使用者可能在幾分鐘內就需要一個變體,答案應該是一個命令列,而不是一個新模型。將腳本與 STL 檔案一起交還。

3. 常見零件配方

零件由什麼構建
橋式把手,⊓ 形支架bridge_profile + extrude
帶孔平板shapely 多邊形(含內環)+ extrude
銷、柱、螺栓threaded_pin,然後 place 到其軸線上
螺母、螺紋座hex_nut,或減去 threaded_rod(clearance=…)
墊圈、襯套兩個同心圓 + extrude
掛鉤、L形支架側視圖的多邊形 + extrude,平放在列印平台上
外殼外盒減去內盒;帶 0.15 mm 間隙的唇邊

列表中未提到的仍然是多邊形、擠出和布林運算的組合。


圖片路線

scripts/imagelib.py 將圖片轉換為高度場,並拼接出一個明確的頂點-網格實體 — 頂面、平坦底面、四個側面。它不使用布林引擎,這正是它不會在大尺寸或奇怪圖像上失敗的原因。

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/樣本 是浪費的 — 噴嘴無法列印出來,且檔案會急劇膨脹。僅在大型列印時提高它。
  • 對比度會在載入時自動拉伸;一張平淡、低對比度的照片會產生平淡、令人失望的列印件。要說明這一點,而不是直接列印它。
  • Lithophane 適合臉部和高對比度的主題。風景和雜亂的場景會變成一團糟。
  • check() 驗證每一條邊是否恰好出現兩次且方向相反。僅靠計數會漏掉一個反向縫合的牆面,這會產生一個「有效」的 STL,但切片軟體會將其內外翻轉。執行此檢查並報告結果。

收尾工作(兩條路線通用)

首先驗證:finish()(幾何路線)和 check()(圖片路線)會報告邊界框、水密性和三角面數量。將邊界框與要求的尺寸進行比較 — 這能立即捕捉到正負號錯誤和單位錯誤。永遠不要提供非水密的網格。

對於任何視覺上不明顯的東西 — 螺紋、曲線、組件 — 渲染一個快速的 matplotlib 預覽圖並查看它。花二十秒鐘檢查,好過花六小時列印錯誤的形狀。

在選擇方向、螺距或間隙之前,請閱讀 references/design-rules.md。它涵蓋了層方向強度、可列印螺紋輪廓、配合公差、圖像衍生零件以及值得命名的故障模式。

回覆應包含:

  1. 一個尺寸表格,包括假設的數值。
  2. 任何替使用者做出的決定及其原因。如果請求的功能在機械上較弱,請按照他們的要求構建並且指出該弱點,並提供具體的替代方案 — 絕不要默默地替換。
  3. 一個切片設定表:層高、壁厚、填充、支撐(確切位置)、材料,以及哪個面朝下放置及其原因。
  4. 用不同數值重新生成的單行命令。
  5. 在列印前需要與現有硬體確認的任何事項。

將 STL 檔案交付到 claude.ai 上的 /mnt/user-data/outputs/,或交付到 Claude Code 中當前工作目錄的 stl_output/ 資料夾,並將其與生成器腳本一起呈現。腳本位於此技能的 scripts/ 資料夾中;透過完整路徑呼叫它們,或將它們複製到零件腳本旁邊。在 Windows 上使用 python 而不是 python3。

多零件組件

當零件需要配合時(銷和螺母、蓋子和盒子、鉸鏈兩半):

  • 兩個零件都從一個腳本中的共享參數生成 — 存在於兩個檔案中的間隙值會隨著時間推移而產生偏差
  • 從與公零件相同的函式推導出母零件,並偏移一個間隙值,這樣它們就不可能不一致
  • 說明每種零件需要列印多少個,並為較小的零件建議一個備用件
  • 當配合不確定時,提供一個公差測試:以兩種間隙值列印小零件,並保留轉動順暢的那個

相關技能