Community编程与开发github.com

3MF/STL 至 Fusion 360 逆向工程

先进的 CAD 逆向工程引擎,用于处理 3MF 和 STL 文件。对原始网格进行切片、分割和数学检测(横截面、真实外接圆半径、扁圆槽、六角凹槽、车削轮廓和阵列图案),并通过 Fusion 360 MCP 服务器在 Autodesk Fusion 360 中合成 100% 可编辑的参数化 BRep 实体。

STL 至 Fusion 360 逆向工程 是什么?

该技能提供了一个严格的分析管道,用于将 3MF 或 STL 网格文件逆向工程为 Autodesk Fusion 360 中完全原生、参数化的实体模型。其核心任务是避免使用 Fusion 的“网格到实体”转换功能,因为该功能会产生成千上万的平面三角形面,从而破坏设计意图和下游工作流。相反,该技能使用专门的 metrology 引擎对网格进行数学分析,识别车削部件(轴对称)、棱柱部件(平面拉伸)或有机形状(自由曲面)等几何原型。然后,它使用清洁的时间轴特征重建实体,包括草图、用户参数、拉伸、旋转和阵列,从而生成完全可编辑且功能强大的 CAD 模型。该技能支持 Autodesk Fusion 360,并通过其 MCP 服务器执行,确保所有 CAD 操作均以编程方式进行,并配备确保 Fusion 环境处于活动状态以及输出文件隔离到专用模型目录的检查机制。

兼容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Kamish76/To-Fusion-Skill-Sets/tree/HEAD/skills/3mf-to-fusion

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

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 服务器是否正常运行:

  1. 金丝雀探测: 调用 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\")
    
  2. 快速失败中止规则:

    • 如果调用失败或超时,立即停止。
    • 不要运行提取脚本或 CAD 命令。
    • 指示用户打开 Fusion 360,确保插件已启动,并打开一个活动文档。

阶段 1:切片、分割与分类(计量引擎)

[!IMPORTANT] 工作空间隔离规则:切勿将提取文件输出到主仓库根目录(例如禁止使用 ./extracted_cad)。始终确保存在专用模型文件夹 models/<NN>_<Model_Name>/(如果新建,可使用 scaffold_text_model.py \"<Model_Name>\" 搭建),并将所有切片/分割输出路由到 models/<NN>_<Model_Name>/workspace/extracted_cad。

  1. 在模型的隔离工作空间中执行深度计量引擎:

    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
    
  2. 读取 models/<NN>_<Model_Name>/workspace/extracted_cad/manifest.json。

  3. 检查每个部件的 archetype(原型)和检测到的特征:

    • 类型 A:棱柱/阶梯 CAD:平面基底拉伸 + 凹槽切割 + 孔阵列。
    • 类型 T:车削/轴对称:沿 Z 轴的共线圆形切片。使用单个半轮廓草图 + 360° RevolveFeature(旋转特征)建模。
    • 类型 B:多层外壳/壳体:阶梯式构造平面 + 薄壁拉伸 + 抽壳。
    • 类型 C:有机自由曲面雕塑:高非平面曲率(超过 15 层)。立即警告用户:

      "此部件为连续有机雕塑,没有离散的平面或棱柱草图。使用平面草图重建将生成阶梯式阶梯近似,而非平滑的有机雕塑。"

  4. 向用户展示汇总表:

    部件 ID原型边界框 ($X \times Y \times Z\text{ mm}$)层数检测到的主要基元/图案

阶段 2:计量数学与规则

  1. 单位转换(cm = mm / 10.0):
    • Fusion 360 的内部数据库(adsk.core.ValueInput.createByReal())严格使用厘米(cm)。
    • 在每个脚本的顶部定义:
      def mm(val): return adsk.core.ValueInput.createByReal(float(val) / 10.0)
      
  2. 外接圆补偿(弦误差):
    • STL 三角剖分近似圆形孔时,使用内接多边形,其边沿弦向内切割。
    • 切勿使用内部最小直径。始终使用 manifest.json[\"primitives\"][\"circles\"] 中的 radius_mm(第 95 百分位外接圆半径),并四舍五入到最接近的 $0.05\text{ mm}$。
  3. 槽/扁圆孔识别:
    • 当环包含两条平行直线和两个半圆端时,将其建模为种子槽(sketchLines + sketchArcs),而不是多段多边形。
  4. 图案识别(网格/极轴):
    • 当 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 内检查

为了验证数学和尺寸对齐,同时不污染最终模型:

  1. 参考网格幽灵(可选): 如果需要详细的视觉对齐,将原始网格导入一个单独的临时参考零件出现:
    # 导入网格作为参考背景
    ref_occ = root.occurrences.addNewComponent(transform)
    ref_occ.component.name = \"Reference_Mesh_Ghost\"
    # 设置透明视觉样式
    
  2. 视觉与干涉检查:
    • 检查参数化实体是否完全包含网格包络并与其对齐。
    • 验证后,隐藏或移除 ref_occ。

阶段 5:时间轴健康与视觉自验证门

  1. 时间轴特征验证: 确保重建部件中不存在网格实体:
    assert comp.bRepBodies.count > 0, \"未生成任何实体!\"
    assert comp.meshBodies.count == 0, \"在部件中检测到禁止的网格体!\"
    assert comp.sketches.count > 0, \"时间轴中未找到草图!\"
    
  2. 视觉检查: 调用 get_screenshot(view=\"iso-top-right\", width=1024, height=1024) 以视觉验证干净参数化实体模型及清晰的时间轴树。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

相关技能