3MF / STL 至 Fusion 360 分析性逆向工程技能
当要求在 Autodesk Fusion 360 中复制、逆向工程或重建 .3mf 或 .stl 文件时,请遵循此确定的解析管道。
CAD 逆向工程任务令
[!IMPORTANT] 严格禁止:切勿使用 Fusion 360 内置的"将网格转换为实体"(
MeshToBREP或bRepBodies.addByMesh)。将网格面直接转换为 BRep 会产生数万个平面三角形面,这些面会冻结视口、无法进行圆角或倒角操作、破坏下游 CAM/工程图,并摧毁所有参数化设计意图。
强制要求:以数学方式剖析网格("切片和分割"),提取其二维横截面和几何基元(槽、外接孔、沉头孔、车削轮廓、矩形阵列),并在 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 步:二次切割与图案
- 绘制主种子切割(槽、沉头孔或凹槽)。
- 应用
comp.features.extrudeFeatures.add,配合adsk.fusion.FeatureOperations.CutFeatureOperation。 - 应用
comp.features.rectangularPatternFeatures.add,跨comp.xConstructionAxis和comp.yConstructionAxis进行阵列。
第 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, \"在部件中检测到禁止的网格体!\" assert comp.sketches.count > 0, \"时间轴中未找到草图!\" - 视觉检查:
调用
get_screenshot(view=\"iso-top-right\", width=1024, height=1024)以视觉验证干净参数化实体模型及清晰的时间轴树。