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。它涵蓋了層方向強度、可列印螺紋輪廓、配合公差、圖像衍生零件以及值得命名的故障模式。
回覆應包含:
- 一個尺寸表格,包括假設的數值。
- 任何替使用者做出的決定及其原因。如果請求的功能在機械上較弱,請按照他們的要求構建並且指出該弱點,並提供具體的替代方案 — 絕不要默默地替換。
- 一個切片設定表:層高、壁厚、填充、支撐(確切位置)、材料,以及哪個面朝下放置及其原因。
- 用不同數值重新生成的單行命令。
- 在列印前需要與現有硬體確認的任何事項。
將 STL 檔案交付到 claude.ai 上的 /mnt/user-data/outputs/,或交付到 Claude Code 中當前工作目錄的 stl_output/ 資料夾,並將其與生成器腳本一起呈現。腳本位於此技能的 scripts/ 資料夾中;透過完整路徑呼叫它們,或將它們複製到零件腳本旁邊。在 Windows 上使用 python 而不是 python3。
多零件組件
當零件需要配合時(銷和螺母、蓋子和盒子、鉸鏈兩半):
- 兩個零件都從一個腳本中的共享參數生成 — 存在於兩個檔案中的間隙值會隨著時間推移而產生偏差
- 從與公零件相同的函式推導出母零件,並偏移一個間隙值,這樣它們就不可能不一致
- 說明每種零件需要列印多少個,並為較小的零件建議一個備用件
- 當配合不確定時,提供一個公差測試:以兩種間隙值列印小零件,並保留轉動順暢的那個