Community影像github.com

max-model: 從構想到可列印的 3D 模型工作室

將您的想法轉化為經過驗證、可直接用於 FDM 列印機的 STL 檔案。支援從文字到 3D 建模、機構設計、檔案修復、預先檢查列印可行性等完整流程。

max-model: 從構想到可列印的 3D 模型工作室 是什麼?

這是一個強大的 AI Agent 技能,專為將使用者的創意(無論是文字描述、圖片還是現有模型)轉換為可直接用於 FDM 列印機的經過驗證的 STL 檔案而設計。它涵蓋了從最初的構思到最終列印準備的完整工作流程。核心功能包括:1) **多種建模路徑**:內建程式化 CAD (build123d/OpenSCAD)、文字轉 3D 生成、以及標準模型庫搜尋與修改。2) **可靠的機構設計**:整合了 MechKit 庫,用於設計如鉸鏈、齒輪、可動關節等經過運動模擬驗證的列印即用 (print-in-place) 機構,確保首次列印即成功。3) **自動化品質控制**:內建「預飛安檢 (preflight)」功能,可在切片前預測列印失敗並決定支撐材需求,有效避免材料浪費。4) **自適應工作流程**:支援檔名、照片測量 (photofit)、GRIDFINITY 整理盒、AR 預覽等多種輸入與輸出模式。此技能可在 Claude Code、Cursor 等支援 MCP 的代理環境中運作,並透過命令列工具 `forge` 管理所有操作。它特別強調數據驅動的驗證流程,所有幾何宣稱都必須來自工具輸出而非記憶,並且會自動記錄每次的設定檔和經驗教訓,以持續優化列印品質。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/marklkasdorf-del/max-model/tree/HEAD

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

在你喜歡的 AI 中提問

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

說明文件

max-model: 想法 -> 經過驗證、可列印的零件

需求: 使用者在 /max-model 後輸入的任何內容(或他們描述的事物)。 FORGE = 此技能的目錄(例如 ~/.claude/skills/max-model);以下每個路徑都是相對於此目錄。一個 CLI 指令: $FORGE/bin/forge <cmd>(底部有清單)。 環境(請參閱 README):CAD 虛擬環境 $FORGE/.venv-cad(包含 build123d, trimesh, manifold3d, usd-core, opencv, sdf;可透過 FORGE_CAD_PY 覆蓋),可選的 AI 虛擬環境 $FORGE/.venv-ai(包含 torch, diffusers, CLIP;可透過 FORGE_AI_PY 覆蓋)用於 text3d 和 looks 功能。 印表機:knowledge/printer.json(列印床、噴嘴、層高;範例在 knowledge/printers/ 目錄中)。切片是使用者選擇的切片軟體:forge 的最終產出是經過驗證的 STL 檔案加上預飛安檢報告(是否需支撐材)。可選的 slicer_cmd 掛鉤讓 forge 能回報列印時間和耗材克數。

2026-10-17 基準測試顯示 (knowledge/benchmark-2026-10-17.md): 對於完全指定的零件,與真實 STEP 檔案的體素 IoU 可達 0.96,但在細節需猜測的部分僅有 0.41-0.82;列印即用機構在首次構建時通過了運動掃描,且無任何熔合間隙(尚未在作者的印表機上以真實列印驗證);用手工建模的標誌性/有機物體的外觀是弱點(手工建模的頭盔最後看起來像一顆蛋)。text3d / looks / remix 流程的存在就是為了用工具而非毅力來彌補這個弱點:參考圖片比對 + 外觀評分、用於有機角色的本地文字轉 3D、在雕刻模型上套用 flexify、搜尋並修改標誌性道具。

永不妥協的規則

  1. 數字優先,圖片第二。 除非幾何資訊來自工具輸出(verify/selftest/preflight/grade JSON)或你在此次迭代中讀取的渲染圖,否則不得對幾何形狀做出任何聲明。絕對不要憑記憶描述 STL 檔案。
  2. 訂製零件先規格再建模: 先建立 spec.md + spec.json 並包含數值化的成功標準。
  3. 每次迭代只做一個變更,保留每個 iter_NN/ 目錄,每個階段最多 6 次迭代,然後重新規劃。
  4. 任何會動的零件必須附帶通過的自檢(掃描無碰撞 + 必卡控制 + 測量間隙)。沒有例外;這是本技能在機構設計上強而有力的原因。
  5. 每次列印前都必須執行 forge preflight,其結果決定是否使用支撐材。NO-GO = 先修正幾何/方向。列印即用 / 多本體零件也需執行 forge export <stl>,然後交給使用者 3MF 檔案,而非 STL:切片軟體的自動支撐會填充間隙並焊接零件(CYCLO-11 的首次列印就是這樣失敗的),而且 STL 無法承載「關閉支撐材」的資訊。
  6. 環境: Blender、OpenSCAD 和 GPU torch (text3d, looks) 可能會在某些隱藏 GPU 的代理沙箱中崩潰(Blender 退出碼 139)。如果某步驟發生段錯誤,請在沙箱外執行。純 Python (build123d, manifold3d, trimesh) 則可在任何地方執行。
  7. 簡短回報里程碑(選擇的路線、首次渲染、可列印狀態含時間/克數/安檢報告、阻礙):每個一行,說明使用者需做出的決定。當頻道支援檔案時,傳送關鍵圖片 (sheet.png, poster.png) 和 AR 檔案。
  8. 未經使用者明確許可,切勿開始列印或花費金錢。下載的模型:尊重其授權條款(CC BY-NC = 不得販售)。

工作階段開始 (30 秒)

ls $FORGE/knowledge/; cat $FORGE/knowledge/{fit-log.md,lessons.md,printer.json}; $FORGE/bin/forge fit show
$FORGE/bin/forge doctor                # 紅字 -> 在建模前修正或回報

如果 forge fit show 顯示 pip_gap 仍為 [R](研究預設值,未在此印表機上量測):提醒使用者一次,Fit Card(forge mech build fitcard,約需 1 小時,~16 g)可校準所有活動零件的間隙,並提議列印它。


階段 0 — 路線規劃 (選擇流程,而非工具)

優先比對第一個符合的選項。用一行告訴使用者路線。

使用者想要路線工具
修改一個下載的模型:在上面加名字/文字、鑰匙圈環、磁鐵、加厚牆壁、縮放到頭部尺寸、平底、鏡像REMIX (先下載,再升級)`forge remix text
根據使用者提供的尺寸做一個實用物品:盒子(滑蓋/按壓蓋)、姓名鑰匙圈、標誌、手機架、物品收納盒、光浮雕MAKE (生成器;間隙來自 fit.json;盒子會經運動檢查)`forge make box
在單次列印中製作多個副本 / 整個專案(用於販售)PLATE (裝滿列印床,計算單個成本)`forge plate <stl...> --fill
一個知名的現有物品(電影頭盔、道具、熱門玩具、熱門裝置的保護殼)FIND (自行搜尋模型網站如 Printables/Thingiverse),然後 REMIX (縮放、分割、加磁鐵、調整)網路搜尋, forge split, forge preflight --orient
一個原創可穿戴頭盔(「一個別人從未有過的頭盔」)TEXT3D --helmet:頸部切口、根據你指定的頭部尺寸(預設 160x190 + 襯墊)、3 mm 外殼、面罩 + 4 個磁鐵座、沿接縫分割的切片forge text3d "<風格> helmet" --helmet
某種會動的東西(指尖陀螺、鉸鏈、齒輪、陀螺儀、蝴蝶刀、貫通件、按壓器)MECHKIT 如果模組吻合,否則使用 Mech API 建模forge mech list/build, lib/mechkit/core.py
一個柔性動物設計一個 SDF 本體 (lib/sculpt.py) 或取得一個雕刻模型(模型網站/text3d)-> FLEXIFYforge flexify, forge sculpt
一個人偶 / 吉祥物 / 生物 / 雕像TEXT3D (本地、免費、約需 3.5 分鐘) 或搜尋;提供兩種選擇forge text3d "<點子>" [--base NAME]
一個訂製的、需要密合的功能性零件(支架、固定座、轉接器、針對使用者物品的保護殼)MODEL (下方的階段 1-6)build123d 路線, forge run, forge parts-find
整理抽屜 / 為某物品製作收納盒GRIDFINITY (+ PHOTOFIT 用於精確凹槽)forge gridfinity, forge photofit
超過列印床尺寸SPLIT 包含定位銷和接縫標籤forge split
「這個能列印嗎 / 為什麼失敗了」PREFLIGHT (+ 熱力圖)forge preflight, forge heat
展示 / 販售它SHOWCASE + ARforge showcase, forge ar

關於路線規劃的誠實品質備註(作者於 2026-10-17 量測):text3d 生成的人物可清楚辨識(蠑螈、龍、鬼魂吉祥物、鯊魚),但在 60 mm 大小下細節模糊且需要支撐材;透過浮雕法從文字生成的柔性模型看起來很笨重(細腿融合在一起)-> 對於柔性模型,建議使用 SDF 設計的本體或人工雕刻模型;手工建模的有機形狀看起來仍然像團塊 -> 絕不要手工建模頭盔/角色,請使用 FIND+REMIX 或 TEXT3D。

階段 1 — 簡報 (訂製零件): 帶有數字的規格

  1. 使用者已經告訴你的關於該物體的任何資訊(裝置型號、測量值、照片)。 1b. 對於任何有名字的物體進行參考圖片比對:搜尋 6-9 張該真實物體的參考圖片 / 最高評價的設計,仔細觀察它們;在 spec.md 中寫下「## 外觀」章節(比例、2-3 個特徵、屬於哪個變體)。跳過此步驟曾導致蝴蝶刀像根扁平棍子,螺旋指尖陀螺變成錯誤的玩具。
  2. 尺寸:查詢它們,切勿憑記憶(基準測試:憑記憶回憶的滑輪 IoU 僅 0.41)。使用 forge parts-find "<零件>" [--download] + forge step2stl;透過網路獲取資料表;搜尋參考圖片。在 spec.md 中註明來源。對於使用者擁有的、無法查詢的物體:PHOTOFIT (forge photofit mat -> 以 100% 列印校準墊 -> 拍照 -> 輪廓辨識,精度約 0.3 mm) 比要求使用游標卡尺更好。
  3. 只詢問無法查到的資訊:一次訊息,最多 4 個問題,每個附帶預設值。
  4. 寫下 out/<名稱>/spec.md + spec.json(使用 templates/ 目錄中的範本)。對於配合面的尺寸估計,需標記為 estimate。
  5. 發送「規格就緒:<一行描述> -- 可以開始建構嗎?」;如果風險低且使用者未回應,則使用陳述的預設值繼續。

階段 2 — 路線選擇 + 計劃

路線用途
b123d (預設)功能性 / 有尺寸要求的 / 需密合的零件、外殼、MechKit 模組
scad簡單零件或單一 BOSL2 圖元(螺紋)
sdf (lib/sculpt.py)你自己設計的有機本體:平滑結合、平坦底部、始終水密(壁虎配方)
mesh (lib/meshkit.py, manifold3d)編輯下載的模型/AI 產生的網格、大型布林運算、flexify、分割(OCC 無法處理 10 萬個三角面的雕刻模型)
bpy渲染、體素網格重建、文字密集的藝術品

在零件檔案頂部的註解中規劃:將功能寫成函數,參數區塊使用公釐為單位,間隙從 fit.get("pip_gap"/"slide_gap"/...) 讀取(絕不要硬編碼 0.3),原點位於 Z=0 的底部中心,設計時考慮列印方向(最大平坦面朝下、懸垂 <= 45 度、橋接 < 18 公釐、牆壁厚度 >= 2.0 公釐),建構順序,斷言檢查列表。

階段 3 — 逐步構建

每次迭代:一個變更 -> forge run part.py --lane <路線> --spec spec.json --name <名稱> -> 讀取 verify.json/REPORT.md(體積/包圍盒的變化是否與預期變更相符?無變化 = 布林運算失敗) -> 讀取 sheet.png 一次 -> 批判性審視 -> 下一個變更。

  • 活動零件 = 使用 Mech API (lib/mechkit/core.py): Mech(名稱, 零件列表, 固定零件列表, [Motion(名稱, 驅動零件, [Move...], control=[...])]) -> selftest() 掃描所有姿勢,沿其整個路徑執行必卡控制,精確測量間隙。透過設計來保證無碰撞優於事後檢查:以樞軸為中心的圓弧/球面可保持間隙恆定(陀螺儀、柔性關節);將每個活動件的掃掠體保持在平面的同一側(蝴蝶刀樞軸)。齒輪:lib/gears.py。量測而非宣告:forge mech ratio <名稱> [--motion M --driven 零件 --driver 零件] 使機構處於特定姿勢,釋放輸出端並進行二分法以找到無接觸區間 -> 量測到的減速比 + 背隙(輸出 ratio.json,若與宣告的減速比不一致則退出碼為 3)。擺線減速器:forge mech build cyclo11 (lib/cycloid.py 精確輪廓 + 根切檢查)。工作室渲染:forge showcase <目錄> --style studio --still hero|cutaway|exploded, --ghost, --annotate。
  • 在迴圈中進行預飛安檢:對於任何有懸垂結構的零件:forge preflight out/<名稱>/<名稱>.stl。
  • 具名物體:外觀評分:在力學驗證完成後執行:forge looks out/<名稱>/<名稱>.stl --target "<物體>"(基於乾淨渲染圖的 CLIP 評分;已驗證:它能正確區分蝴蝶刀的人類設計版 > v2 > v1)。< 30% = 迭代「外觀」(比例、特徵),而不是力學。用它來比較 v1 和 v2,而不是瞎猜。
  • 硬性規則:絕不從單一視圖判斷;重疊切割器 0.05 mm(共面表面會產生零厚度的外皮,會焊接定位銷:量測到的間隙為 0.0 而非 0.3);相同失敗兩次 -> 列印子零件編號並重新診斷;每個階段上限為 6 次迭代,然後重新規劃或轉向 FIND 路線。

當 verify 通過所有規格鍵、selftest 通過(活動件)、preflight 結果為 GO/GO+SUPPORTS、視覺檢查清單全部為「是」時完成。

階段 4 — 密合度

  • 首先進行校準: 列印即用間隙來自 fit.json。在 pip_gap 被驗證為 [V] 之前,每個 PIP 設計都帶有 preflight 的 CAUTION 警告。Fit Card 在一次列印中量測 pip_gap(旋轉件 .15-.40)和 pip_vgap(鉸鏈 .25-.45):完成後,詢問「在用力扭一下後,能自由旋轉的最小數字是多少?」-> forge fit set pip_gap <n> --from "fitcard <日期>"(以及 pip_vgap)。每個 MechKit/flexify/gridfinity 構建都會自動讀取它。
  • 配合零件 / 圍繞使用者物體的零件:組合姿勢檢查 bin/verify --assembly a.stl b.stl --clearance <fit值> --move-b=x,y,z;透過 photofit/parts-find 建立物體的假模型。
  • 僅針對 Fit Card 未涵蓋的介面類型(螺紋、卡扣、壓配)或估計的尺寸進行測試件列印:<= 10 分鐘,3 個變體,帶有凸起的標籤。

階段 5 — 列印準備 + 交接

  1. forge preflight <stl> [--slice] -> 安檢報告 + 支撐材決定。有機/傾斜零件:forge preflight <stl> --orient(嘗試多種傾斜角度;某個頭盔需要約 20 度)。forge heat <stl> 產生紅/黃色支撐熱力圖來展示給使用者看。
  2. 支撐材 = 聽從 preflight 的決定:GO -> 關閉;GO+SUPPORTS -> 開啟/自動;NO-GO -> 先修正(刀刃狀接觸、熔合間隙、不合 -> forge split)。「支撐材:關閉 (必要)」= 自動支撐陷阱(一個與水平面夾角小於 30 度的平坦底面,懸在另一個不同本體上方不到 2 mm 處; support_angle / support_trap_gap 在印表機設定檔中):支撐材必須保持關閉,否則會焊接間隙。 2b. 始終,在將列印即用 / 多本體檔案交給使用者之前:執行 forge preflight <stl> 然後執行 forge export <stl>(自動遵循安檢報告;檔名結尾為 _SUPPORTS-OFF.3mf / _SUPPORTS-ON.3mf)。給他們 3MF 檔案並告知:開啟此檔案,檢查支撐材設定是否與檔名相符,不要更改其他任何設定。如果 preflight 為 NO-GO,因為它需要支撐材但支撐材又會焊接,請在導出前先修正幾何形狀(將平坦底面導 45 度角、重新定向)。
  3. 在你選擇的切片軟體中,使用步驟 2 的支撐材決定和你的一般設定檔,對匯出的 3MF(或單一本體零件的 STL)進行切片;forge 僅透過 3MF 設定支撐材的核取方塊。(可選:在 knowledge/printer.json 中設定 slicer_cmd,以便 preflight --slice / plate --slice 能回報時間和耗材克數。)
  4. 向使用者展示:sheet 或 showcase 海報 + 時間/克數(如果已設定鉤子)+ 安檢報告 + 單行配方。當尺寸/密合度是個問題時,提供 forge ar <stl>(USDZ:可在 iPhone/Vision Pro 上以真實尺寸預覽;GLB 用於 Quest)。
  5. 未經使用者許可,切勿開始列印:「列印床空了嗎?開始列印 <名稱>,約需 <時間>, 克。」
  6. 回報「<名稱> 已可列印:<時間>, 克,<安檢報告>。」用於販售?forge showcase <目錄> 會寫出 mp4/gif + listing.md(成本、建議售價、授權提醒)。

階段 6 — 回饋 + 學習

  1. 列印完成後發送一行訊息:「哪裡有問題?(密合度 / 外觀 / 強度 / 列印品質 / 都沒問題)」。檢視任何回傳的照片。
  2. 間隙 -> forge fit set ...(同時在 fit-log.md 中新增一行)。其他數值 -> 記錄在 fit-log.md / print-tolerances.md 中並標記為 [V]。
  3. 在 knowledge/lessons.md 中寫下 1-3 行(日期 · 專案 · 學到的教訓 · 所屬階段)。新技巧 -> knowledge/<主題>.md (<= 40 行,包含可執行的程式碼片段)。
  4. 保留 part.py + spec 使其可重新執行。提供一個相關的衍伸想法(腦力激盪),但不要開始執行。
  5. 任何技能/工具變更 -> 執行 tests/run_suite.sh(已知答案檢查),對於能力聲明,執行基準測試(forge grade, forge looks)——證明它確實變得更好了。

相關技能