Community编程与开发github.com

文本转Fusion 360纯参数化CAD模型

将自然语言描述的机械对象、修改需求、紧固件BOM清单、爆炸装配图和运动动画自动转化为100%原生、参数化的3D CAD模型和装配体(基于Autodesk Fusion 360和Fusion 360 MCP服务器)。

文本转Fusion 360纯参数化CAD模型 是什么?

该技能能够将用户的自然语言描述(如机械零件、修改、紧固件、爆炸图或运动动画)直接转化为Fusion 360中完全参数化的CAD模型。它遵循严格的六阶段工作流程:Phase 0进行MCP会话检测和工作区初始化;Phase 1将模糊描述转化为明确的工程约束和用户参数;Phase 2支持多方案对比与无损选择;Phase 3自动生成标准紧固件和硬件BOM;Phase 4创建爆炸视图和正交技术图解;Phase 5通过场景图变换和smoothstep缓动函数高速渲染装配动画GIF;Phase 6进行数学自验证和知识同步。此技能借助Fusion 360 MCP服务器执行原生API脚本(Sketch、Extrude、Joint、UserParameters),而非生成网格体。支持多个Fusion 360项目模板和CAD参数化毛坯文件。

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

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

在你喜欢的 AI 中提问

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

文档

文本转Fusion 360纯参数化CAD模型技能

当用户用自然语言描述机械对象、零件、修改、配件托盘、紧固件规格、爆炸装配图或运动动画,且未提供参考3D文件(.3mf/.stl → 使用 3mf-to-fusion)或视觉媒体(.png/.mp4 → 使用 media-to-fusion),请遵循以下6阶段确定性CAD工作流程。

严格的CAD指令:

  • 所有几何体必须使用原生草图、构造平面、用户参数和拉伸/旋转/接合特征在Fusion 360时间轴中重建。绝不能生成原始网格体(root.meshBodies.add)或经过面片转换的网格。
  • 所有代码必须在 execute_api_script 内干净执行,使用厘米单位(cm = mm / 10.0)。
  • 始终使用 get_screenshot 视觉验证每个生成或修改的实体。

阶段0:预飞行探测与工作区对齐

  1. 验证活着的Fusion 360 MCP会话: 通过 fusion-mcp 工具 execute_api_script 执行金丝雀探测:

    def run(context):
        import adsk.core, adsk.fusion
        app = adsk.core.Application.get()
        if not app or not adsk.fusion.Design.cast(app.activeProduct):
            raise RuntimeError("未打开活动的Fusion 360设计文档。")
        print("FUSION_MCP_READY")
    

    快速失败规则:如果探测失败,停止执行并提示用户打开Autodesk Fusion 360。

  2. 工作区与单仓库路由:

    • 主仓库:活跃的CAD单仓库或项目根目录(CAD_MONOREPO_ROOT 或当前工作区)。
    • 严格隔离保证:绝对不要在仓库根目录下创建临时文件、脚本或渲染文件,也不得修改 shared/。
    • 如果创建全新模型,请为其搭建专用文件夹:
      python3 <路径到技能>/text-to-fusion/scripts/scaffold_text_model.py "<模型名称>"
      
    • 将模型脚本存储在 models/<NN>_<模型名称>/scripts/ 中,视觉渲染存储在 models/<NN>_<模型名称>/renders/ 中,中间工作区文件存储在 models/<NN>_<模型名称>/workspace/ 中。
    • 从 ../../shared/ 导入通用CAD辅助模块(fusion_client、cad_primitives、hardware_library、scene_animator)。
  3. 领域参考资料: 在编写自定义几何体之前,请查阅本地参考库:

    • references/prompt-to-geometry-patterns.md — 将自然语言转化为参数化草图约束。
    • references/exploded-view-guidelines.md — 爆炸向量、金色导杆和正交构图。
    • references/assembly-animation-pipeline.md — Matrix3D出现变换动画和GIF编译。
    • references/variant-management-and-undo.md — 安全的A/B变体展示与无损隐藏。

阶段1:消歧与参数化规范

当用户以对话方式描述几何体时,识别并形式化缺失的工程约束:

  1. 包络与关键尺寸:
    • 整体边界框($W \times D \times H$,单位mm)。
    • 最小壁厚(结构件默认 2.0 - 2.5 mm,内部分隔件 1.6 mm)。
    • 3D打印平台限制(如 220 × 220 × 250 mm)。
  2. 注册主用户参数(design.userParameters): 始终将关键尺寸暴露为用户参数,使用户能够一键缩放:
    def set_user_param(design, name, expr_str, units="mm", comment=""):
        existing = design.userParameters.itemByName(name)
        if existing:
            existing.expression = expr_str
            return existing
        return design.userParameters.add(
            name, adsk.core.ValueInput.createByString(expr_str), units, comment
        )
    

阶段2:变体分阶段展示与可逆探索

当用户要求设计选项(“给我方案二”、“尝试一个没有盖子的版本”):

  1. 展示厅模式:
    • 在专用组件中建模实验性选项(例如 Sample_Options_Showroom:1)。
    • 在虚拟工作台地面上并排放置变体(例如 $Y = -350\text{ mm}$ 或 $X = -200\text{ mm}$),并赋予独特外观(Rack_Desert_Tan、Rack_Matte_White)。
    • 捕获带有标签的并排概览截图。
  2. 无损采纳:
    • 当用户选定优胜方案后,将选中的实体克隆到活动装配体中(InSitu_Tier3_Option2)。
    • 通过 bRepBody.isLightBulbOn = False 隐藏被拒绝的展示体。
    • 绝对不要调用 body.deleteMe() 删除可能破坏下游时间轴引用的对象。

阶段3:标准紧固件与硬件BOM合成

当用户要求螺丝、螺母或装配硬件时:

  1. 硬件标准化:
    • 所有枢轴和结构接头默认使用 DIN 7991 M3沉头螺丝 和 DIN 934 M3六角螺母。
  2. 标准口袋尺寸:
    • 六角螺母口袋:对边距离(AF)建模为 5.70 mm(在 5.50 mm 螺母基础上增加 +0.20 mm FDM间隙),深度 2.50 mm。
    • 螺丝孔:$x 3.20\text{ mm}$ 通孔,带90°锥形沉头口袋($x 6.20\text{ mm} \times 1.80\text{ mm}$)。
    • 保持垫圈:3D打印垫圈(外径 $x 9.50\text{ mm}$,内径 $x 3.20\text{ mm}$,厚度 1.80 mm,90°沉头),夹紧枢轴凸台尖端,同时允许连杆自由旋转。
  3. 模板停放规则:
    • 主硬件模板(Template_DIN_7991_M3x10、Template_DIN_934_M3)必须保持 isLightBulbOn = True。
    • 将模板停放在远地面下(Z = -500.0 cm),使装配体中的子实例保持可见,而模板完全远离屏幕。

阶段4:爆炸视图与技术图解

当用户要求说明零件如何装配时:

  1. 线性爆炸偏移:
    • 将连杆沿主轴向+X方向偏移(35 - 50 mm)。
    • 将结构支架或框架沿Y向后偏移(+45 - 60 mm)。
    • 将模块化插入件沿Z向上偏移(+40 - 50 mm)。
  2. 金色对齐导杆:
    • 拉伸细圆柱杆($x 1.2 - 1.4\text{ mm}$,外观 Rack_Mustard_Yellow 或 Gold - Polished),穿过每个螺丝/枢轴接头轴,从最内螺丝头到最外螺母。
    • 将所有导杆分组到专用组件中:Opened_Explosion_Guides。
  3. 正交相机设置: 设置 cam.cameraType = OrthographicCameraType,并定位边界范围,以确保平行轴且无透视畸变。

阶段5:高速装配动画流水线

当用户要求展示零件动画安装的GIF时:

  1. 基于出现的场景图绑定:
    • 将每个运动装配体分组到其专用 Occurrence 中(Anim_Bars、Anim_Stand、Anim_Fasteners)。
    • 不要在帧循环中使用 features.moveFeatures.add()(会导致每帧约2.2秒的时间轴重建)。
    • 直接重新分配 occ.transform = Matrix3D(每帧 0.005 s)。
  2. 多阶段交错Smoothstep缓动: 应用smoothstep缓动函数 $s(\tau) = 3\tau^2 - 2\tau^3$,在分阶段子装配体区间($t \in [0.0, 1.0]$)内:
    • 底座对接:$t \in [0.00, 0.40]$
    • 连杆就位:$t \in [0.15, 0.60]$
    • 保持垫圈就位:$t \in [0.30, 0.70]$
    • 紧固件夹紧:$t \in [0.40, 0.92]$
    • 导杆淡出:guides_occ.isLightBulbOn = (t < 0.88)
  3. 脚本内批量渲染与往返编译:
    • 直接将帧渲染到磁盘:vp.saveAsImageFile('/tmp/frames/frame_%03d.png', 800, 800)。
    • 使用 PIL.Image 编译:28个正向帧(45ms)→ 28个保持帧已装配(50ms)→ 26个反向帧(45ms)→ 20个保持帧已爆炸(50ms)。
    • 使用128种自适应颜色和Floyd-Steinberg抖动进行量化(约 2.3 MB)。
    • 使用唯一/带版本的文件名(例如 _final.gif)以避免浏览器聊天图像缓存。

阶段6:数学自验证与开发大脑同步

  1. 数学验证配合边界:
    • 如果某个零件出现意外间隙(“看起来滞后”),检查世界坐标: delta = target_face.x - moving_face.x。
    • 应用精确的数学增量;切勿猜测调整量。
  2. 执行收尾与内存同步:
    • 将局部更改提交到活跃的CAD仓库。
    • 如果发现了新机制、公差规则或API技巧,将其记录在 references/ 中,并在 CHANGELOG.md 中记录更改。

Individual skills in this repo

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

相关技能