fusion-360 · diff
git:20260911.25436b5 to git:20261005.2bc0998
48 added, 126 removed. Audit A to A.
---
name: fusion-360
description: "Automate Autodesk Fusion parametric models with the Python API, inspect timeline features, and prepare CAM workflows for review."
category: cad
risk: safe
source: self
source_type: self
date_added: "2026-08-26"
- tags: ["fusion-360", "autodesk-fusion", "adsk-python", "parametric-cad", "cam-toolpaths", "claude"]
+ tags: ["fusion-360", "adsk-python", "parametric", "cam", "batch-export", "cloud-hub"]
tools: ["claude", "cursor", "gemini", "codex"]
---
- # Autodesk Fusion (Fusion 360) AI Skill Guide (Claude)
+ # Autodesk Fusion AI Skill Guide (Claude)
## Overview & Engine Architecture
- Autodesk Fusion (formerly Fusion 360) is a cloud-integrated parametric and direct modeling CAD/CAM/CAE/ECAD ecosystem. Claude operates as a Senior CAD Automation Specialist and Manufacturing Engineer, specializing in **Fusion Python API scripting (`adsk.core`, `adsk.fusion`)**, **Parametric Timeline diagnostic remediation**, **T-Splines organic surface conversion**, and **CAM 2.5D/3D adaptive toolpath optimization**.
- ### Fusion 360 Cloud-Hybrid Architecture
+ Autodesk Fusion (pin **monthly build** — `Help → About`) runs **in-process Python 3.x** via `adsk.core`, `adsk.fusion`, `adsk.cam`. Designs live in **cloud hubs** with local cache. Claude acts as CAD/CAM automation specialist: **parametric timelines**, **STEP/STL export**, **CAM post**, **hub sync recovery**.
+ **License/API:** Scripts run inside Fusion process — no separate headless server API; automation requires Fusion UI or `FusionCoreConsole` limited scenarios. **Personal vs commercial** cloud export terms apply; do not embed Autodesk credentials in scripts.
+
```
┌─────────────────────────────────────────────────────────────┐
- │ Fusion 360 Architecture Core │
- │ │
- │ Design & Manufacturing Workspaces │
- │ ├── Parametric B-Rep Timeline & Direct Modeling Modes │
- │ ├── T-Splines Form Workspace (Subdivision to Solid B-Rep) │
- │ ├── CAM / Manufacturing (Adaptive Clearing & Post-Process) │
- │ └── Electronics (Eagle PCB & 3D Component Packaging) │
- │ │
- │ Developer & Cloud Subsystems │
- │ ├── In-Process Python 3.11 Execution Engine (`adsk` APIs) │
- │ ├── Autodesk Fusion Team Cloud Data Hub (Versioned F3D/F3Z)│
- │ └── Offline Storage & Local Cache Sync Daemon │
+ │ adsk.core.Application → Design/CAM products │
+ │ userParameters → feature timeline → ExportManager │
+ │ Cloud: hub sync / W.Cache — batch blocked if upload stuck │
└─────────────────────────────────────────────────────────────┘
```
---
- ## Operational Capabilities & Agent Directives
-
- 1. **Fusion Python API Development**: Write robust, modular Python add-ins and standalone scripts utilizing `adsk.core` and `adsk.fusion` to automate feature creation, parameter tables, and export pipelines.
- 2. **Timeline Compute Error Remediation**: Diagnose Yellow (Warning) and Red (Compute Failed) timeline icons, resolving lost reference geometry, broken projected edges, and over-constrained sketches.
- 3. **CAM & Post-Processor Configuration**: Generate and inspect 2D/3D adaptive toolpaths, set spindle RPM and feed rates, and configure post-processor JavaScript scripts (`.cps`) for CNC controllers (Haas, Fanuc, GRBL).
- 4. **Cloud Hub & Sync Recovery**: Remediate stuck local upload queues, clear corrupted W.Cache stores, and manage multi-user team hub branching.
-
- ---
-
- ## Production Python Automation: Parametric Enclosure Box Generator
-
- Run this script inside Fusion 360 Script Manager (*Utilities $\rightarrow$ Scripts and Add-Ins*) to procedurally generate a parametric electronic enclosure box with a shell cavity and rounded corner fillets:
-
- ```python
- """
- Autodesk Fusion: Parametric Enclosure Box Generator
- Creates a fully constrained parametric box with Shell and Fillet features.
- """
-
- import adsk.core
- import adsk.fusion
- import traceback
-
- def run(context):
- ui = None
- try:
- app = adsk.core.Application.get()
- ui = app.userInterface
- doc = app.documents.add(adsk.core.DocumentTypes.FusionDesignDocumentType)
- design = app.activeProduct
- root_comp = design.rootComponent
-
- # 1. Setup User Parameters
- user_params = design.userParameters
- p_len = user_params.add("BoxLength", adsk.core.ValueInput.createByString("120 mm"), "mm", "Length")
- p_wid = user_params.add("BoxWidth", adsk.core.ValueInput.createByString("80 mm"), "mm", "Width")
- p_hgt = user_params.add("BoxHeight", adsk.core.ValueInput.createByString("40 mm"), "mm", "Height")
- p_thk = user_params.add("WallThickness", adsk.core.ValueInput.createByString("3 mm"), "mm", "Thickness")
-
- # 2. Create Base Sketch on XY Plane
- sketches = root_comp.sketches
- xy_plane = root_comp.xYConstructionPlane
- sketch = sketches.add(xy_plane)
+ ## When to use / when not to
- # Draw Center Rectangle
- lines = sketch.sketchCurves.sketchLines
- rec = lines.addCenterPointRectangle(adsk.core.Point3D.create(0, 0, 0), adsk.core.Point3D.create(6, 4, 0))
+ **Use when:** parametric generators, drawing exports, CAM toolpath sanity checks, configuration sweeps via parameters.
- # Add Dimensions
- sketch.sketchDimensions.addDistanceDimension(
- rec.item(0).startSketchPoint, rec.item(0).endSketchPoint,
- adsk.fusion.DimensionOrientations.HorizontalDimensionOrientation,
- adsk.core.Point3D.create(0, 5, 0)
- ).parameter.expression = "BoxLength"
+ **Do not use when:** unattended farm without Fusion session; replacing Vault/PLM without Data Management API review.
- sketch.sketchDimensions.addDistanceDimension(
- rec.item(1).startSketchPoint, rec.item(1).endSketchPoint,
- adsk.fusion.DimensionOrientations.VerticalDimensionOrientation,
- adsk.core.Point3D.create(7, 0, 0)
- ).parameter.expression = "BoxWidth"
+ ---
- # 3. Create Extrude Feature
- prof = sketch.profiles.item(0)
- extrudes = root_comp.features.extrudeFeatures
- ext_input = extrudes.createInput(prof, adsk.fusion.FeatureOperations.NewBodyFeatureOperation)
- distance = adsk.core.ValueInput.createByString("BoxHeight")
- ext_input.setDistanceExtent(False, distance)
- extrude_feat = extrudes.add(ext_input)
- body = extrude_feat.bodies.item(0)
+ ## Operational Capabilities & Agent Directives
- # 4. Create Shell Feature (Hollow top face)
- top_face = None
- for face in body.faces:
- if face.geometry.normal.z > 0.9:
- top_face = face
- break
+ 1. **Add-in structure:** `run(context)` entry; `commands.start()` for UI commands; `try/except` + `ui.messageBox(traceback)` only in interactive mode — log to file in batch add-ins.
+ 2. **Parameters:** Drive dimensions via `design.userParameters` — never hardcode magic numbers for production templates.
+ 3. **Export pipeline:** `exportManager.createSTEPExportOptions` / STL — set `meshRefinement` for deterministic STL tessellation when comparing golden files.
+ 4. **Timeline errors:** Red compute → Review Warnings; fix projections before re-ordering features.
+ 5. **CAM:** Verify stock, tool diameter, `minimumCuttingRadius`; post via `.cps` — validate G-code simulator before shop floor.
+ 6. **Sync:** Stuck upload → close Fusion, clear W.Cache lock files per Autodesk KB; do not delete hub data without user confirm.
- if top_face:
- shell_faces = adsk.core.ObjectCollection.create()
- shell_faces.add(top_face)
- shells = root_comp.features.shellFeatures
- shell_input = shells.createInput(shell_faces, False)
- shell_input.insideThickness = adsk.core.ValueInput.createByString("WallThickness")
- shells.add(shell_input)
+ ---
- ui.messageBox("Parametric Enclosure Box Created Successfully!")
+ ## Production Python: export STEP from active design
- except Exception:
- if ui:
- ui.messageBox(f"Execution Failed:\n{traceback.format_exc()}")
+ ```python
+ import adsk.core, adsk.fusion, traceback
+ def run(context):
+ app = adsk.core.Application.get()
+ design = adsk.fusion.Design.cast(app.activeProduct)
+ if not design:
+ raise RuntimeError("Active product is not a Fusion design")
+ export_mgr = design.exportManager
+ file = adsk.core.FileDialog.create()
+ file.isMultiSelectEnabled = False
+ file.filter = "STEP (*.stp)"
+ if file.showSave() != adsk.core.DialogResults.DialogOK:
+ return
+ opts = export_mgr.createSTEPExportOptions(file.filename)
+ opts.meshRefinement = adsk.fusion.MeshRefinementSettings.MeshRefinementMedium
+ export_mgr.execute(opts)
```
- ---
-
- ## Technical Troubleshooting Matrix
-
- | Issue & Failure Signature | Root Cause Analysis | Diagnostic & Resolution Pathway |
- | :--- | :--- | :--- |
- | **Timeline Compute Failed (`Red Warning Icon`) on Extrude** | The underlying sketch profile lost its closed boundary or a referenced projected edge was deleted. | 1. Right-click the red Timeline feature $\rightarrow$ **Review Warnings**.<br>2. Right-click $\rightarrow$ **Edit Sketch**.<br>3. Inspect yellow detached projection points; re-constrain or delete and re-project geometry. |
- | **T-Spline Body Fails to Convert to Solid B-Rep** | Self-intersecting control frame vertices, non-manifold edges, or pinched star points ($>5$ edges). | 1. In Form workspace, run *Utilities $\rightarrow$ Repair Body*.<br>2. Set mode to **Auto Repair** to remove degenerate faces.<br>3. Toggle *Box View (`Alt + 1`)* to locate self-intersecting T-Spline faces. |
- | **CAM Toolpath Fails with `Empty Toolpath` Warning** | Tool geometry is too large to fit inside the pocket geometry, or stock boundary is outside model limits. | 1. In CAM Setup, verify Stock dimensions.<br>2. Reduce **End Mill Diameter** or enable **Rest Machining** with smaller stepover.<br>3. Lower the **Minimum Cutting Radius** in toolpath Passes settings. |
- | **Local Cache Sync Lockup (`Upload Pending` Loop)** | Corrupted offline SQLite cache or broken lock token in Autodesk local data store. | 1. Close Fusion 360.<br>2. Navigate to `%LOCALAPPDATA%\Autodesk\Autodesk Fusion 360\<ID>\W.Cache` and delete `.dirty` or lock files.<br>3. Relaunch Fusion with active internet connection. |
+ Run via **Scripts and Add-Ins** or registered command; for CI-style regression, compare STEP hash after fixed parameter set.
---
- ## Command Line Syntax & Configuration
-
- ```bash
- # Windows CLI: Launch Fusion 360 with Clean Cache / Safe Mode
- "C:\Users\%USERNAME%\AppData\Local\Autodesk\webdeploy\production\<BUILD_ID>\Fusion360.exe" -safeMode
-
- # Launch Service Utility to Repair / Reset Fusion Installation
- "C:\Users\%USERNAME%\AppData\Local\Autodesk\webdeploy\production\<BUILD_ID>\Fusion360ServiceUtility.exe"
-
- # macOS Launch Command
- open /Applications/Autodesk\ Fusion\ 360.app --args -safeMode
- ```
+ ## Failure taxonomy
- ### Essential File & Directory Paths
- - **Windows Python Add-Ins**: `%APPDATA%\Autodesk\Autodesk Fusion 360\API\AddIns`
- - **Windows Python Scripts**: `%APPDATA%\Autodesk\Autodesk Fusion 360\API\Scripts`
- - **Windows Local Offline Cache**: `%LOCALAPPDATA%\Autodesk\Autodesk Fusion 360\<USER_ID>\W.Cache`
- - **macOS Python Add-Ins**: `~/Library/Application Support/Autodesk/Autodesk Fusion 360/API/AddIns`
+ | Symptom | Cause | Fix |
+ | :--- | :--- | :--- |
+ | Red timeline extrude | Open profile / lost proj | Edit sketch, re-project |
+ | T-spline to BREP fail | Non-manifold | Repair Body |
+ | Empty toolpath | Tool too large / bad stock | CAM setup |
+ | Upload pending loop | Cache lock | W.Cache cleanup, relaunch |
+ | API None | Wrong workspace (CAM vs Design) | `activeProduct` cast check |
---
## Agent Operational Directive
- > **MANDATORY**: Python automation in Fusion must always check for valid geometry selections, wrap code in `try...except` blocks with `traceback.format_exc()`, and parameterize dimensions through `design.userParameters` rather than hardcoding magic numbers.
+
+ > **MANDATORY**: Parameterize features. Set explicit mesh refinement for deterministic mesh exports. Handle cloud sync failures before batch export. Never store Autodesk passwords in repo.