3MF / STL 至 Fusion 360 分析式逆向工程技能
當要求在 Autodesk Fusion 360 中複製、逆向工程或重建 .3mf 或 .stl 檔案時,請遵循此決定性的分析管線。
CAD 逆向工程命令
[!IMPORTANT] 嚴格禁止:絕不可使用 Fusion 360 內建的「將網格轉換為實體」(
MeshToBREP或bRepBodies.addByMesh)。將網格面直接轉換為 BRep 會產生數以萬計的平面三角形面,導致視埠凍結、無法進行圓角或倒角、破壞下游 CAM/工程圖,並摧毀所有參數化設計意圖。
強制執行:從數學上剖析網格(「切片與解析」),擷取其 2D 橫截面與幾何基元(槽孔、外接孔、魚眼孔、車削輪廓、矩形陣列),並在 Fusion 360 時間軸中使用草圖、驅動使用者參數、擠出、旋轉與陣列特徵,建構 100% 原生參數化實體本體。
階段 0:飛行前安全閘門(強制)
在處理檔案前,請確認 Autodesk Fusion 360 及其 MCP 伺服器正在執行:
-
金絲雀探針: 呼叫
fusion-mcp工具的execute_api_script:def run(context): import adsk.core, adsk.fusion app = adsk.core.Application.get() if not app: raise RuntimeError("找不到 Autodesk Fusion 360 應用程式實例。") design = adsk.fusion.Design.cast(app.activeProduct) if not design: raise RuntimeError("未開啟任何有效的 Fusion 360 設計文件。") print("FUSION_MCP_READY") -
快速失敗中止規則:
- 若呼叫失敗或逾時,請立即停止。
- 不要執行萃取腳本或 CAD 指令。
- 指示使用者開啟 Fusion 360,確認附加模組已啟動,並開啟有效文件。
階段 1:切片、解析與分類(計量引擎)
[!IMPORTANT] 工作區隔離規則:切勿將萃取檔案輸出到主要儲存庫根目錄(例如禁止使用
./extracted_cad)。務必確保在models/<NN>_<Model_Name>/下建立專屬模型資料夾(若為新模型,請使用scaffold_text_model.py "<Model_Name>"建立骨架),並將所有切片/解析輸出導向models/<NN>_<Model_Name>/workspace/extracted_cad。
-
在模型隔離的工作區中執行深度計量引擎:
python3 <path_to_skills>/3mf-to-fusion/scripts/inspect_3mf.py <path_to_file.3mf_or_stl> --out-dir models/<NN>_<Model_Name>/workspace/extracted_cad -
讀取
models/<NN>_<Model_Name>/workspace/extracted_cad/manifest.json。 -
檢查每個零件的
archetype與偵測到的特徵:- 類型 A:稜柱 / 階梯式 CAD:平面基底擠出 + 凹槽切割 + 孔洞陣列。
- 類型 T:車削 / 軸對稱:沿 Z 軸的共線圓形切片。使用單一半輪廓草圖 + 360°
RevolveFeature建模。 - 類型 B:多層外殼 / 薄殼:階梯式建構平面 + 薄壁擠出 + 外殼。
- 類型 C:有機自由造型:高度非平面曲率($> 15$ 層)。立即向使用者發出警報:
"此零件為連續有機雕塑,無離散平面或稜柱草圖。使用平面草圖重建將產生階梯式近似模型,而非平滑的有機造形。"
-
向使用者呈現摘要表:
零件 ID 類型 邊界框 ($X \times Y \times Z\text{ mm}$) 層數 偵測到的主要基元 / 陣列
階段 2:計量數學與規則
- 單位轉換(
cm = mm / 10.0):- Fusion 360 內部資料庫(
adsk.core.ValueInput.createByReal())嚴格使用公分(cm)。 - 在每個腳本頂部定義:
def mm(val): return adsk.core.ValueInput.createByReal(float(val) / 10.0)
- Fusion 360 內部資料庫(
- 外接圓補償(弦誤差):
- STL 曲面細分近似圓形孔洞時,會使用內接多邊形,其邊緣沿弦向內切割。
- 絕不可使用內部最小直徑。一律使用
manifest.json["primitives"]["circles"]中的radius_mm(第 95 百分位外接圓半徑),並四捨五入至最接近的 $0.05\text{ mm}$。
- 槽孔 / 扁圓槽辨識:
- 當迴圈包含兩條平行直線與兩個半圓端時,應將其建模為種子槽孔(
sketchLines+sketchArcs),而非多段多邊形。
- 當迴圈包含兩條平行直線與兩個半圓端時,應將其建模為種子槽孔(
- 陣列辨識(網格 / 極座標):
- 當
manifest.json["patterns"]偵測到規則間距 ($\Delta X, \Delta Y$) 時,請建模一個主要種子挖槽,並使用comp.features.rectangularPatternFeatures進行複製。切勿手動繪製重複的相同幾何圖形。
- 當
階段 3:純參數化 Fusion 360 重建
透過 execute_api_script 執行 CAD 生成。使用乾淨的時間軸特徵重建每個零件:
步驟 1:出現事件與使用者參數
transform = adsk.core.Matrix3D.create()
occ = root.occurrences.addNewComponent(transform)
comp = occ.component
comp.name = part_name
# 新增驅動參數
params = design.userParameters
params.add(f"{part_name}_width", mm(width_mm), "mm", "基底寬度")
params.add(f"{part_name}_length", mm(length_mm), "mm", "基底長度")
params.add(f"{part_name}_height", mm(height_mm), "mm", "基底高度")
步驟 2:主要實體幾何
- 若為類型 T(車削):在
comp.xZConstructionPlane上繪製半輪廓,並呼叫comp.features.revolveFeatures.add(prof, comp.zConstructionAxis, adsk.fusion.FeatureOperations.NewBodyFeatureOperation)。 - 若為類型 A/B(稜柱):在
comp.xYConstructionPlane上繪製基底輪廓(以原點為中心),並擠出實體基底。
步驟 3:次要挖槽與陣列
- 繪製主要種子挖槽(槽孔、魚眼孔或凹槽)。
- 使用
adsk.fusion.FeatureOperations.CutFeatureOperation套用comp.features.extrudeFeatures.add。 - 沿
comp.xConstructionAxis與comp.yConstructionAxis套用comp.features.rectangularPatternFeatures.add。
步驟 4:收尾
- 套用角落圓角(
comp.features.filletFeatures)與倒角(comp.features.chamferFeatures)。
階段 4:參考重疊顯示與 CAD 內檢查
為在不汙染最終模型的情況下驗證數學與尺寸對齊:
- 參考網格重疊(選擇性):
若需要詳細的視覺對齊,請將原始網格匯入單獨的暫存參考出現事件:
# 匯入網格作為參考背景 ref_occ = root.occurrences.addNewComponent(transform) ref_occ.component.name = "Reference_Mesh_Ghost" # 設定透明視覺樣式 - 視覺與干涉檢查:
- 確認參數化實體完全包覆並對齊網格範圍。
- 驗證完成後,隱藏或移除
ref_occ。
階段 5:時間軸健康狀態與視覺自我驗證閘門
- 時間軸特徵驗證:
確保重建的零件中不存在網格本體:
assert comp.bRepBodies.count > 0, "未產生任何實體本體!" assert comp.meshBodies.count == 0, "在元件中偵測到禁止的 MeshBody!" assert comp.sketches.count > 0, "在時間軸中找不到草圖!" - 視覺檢查:
呼叫
get_screenshot(view="iso-top-right", width=1024, height=1024)以視覺方式驗證乾淨的參數化實體模型與整潔的時間軸樹。