UNPKG

major-ai-skills

Version:

Installable agentic skills / AI agent skills (SKILL.md) for Claude Code, Cursor, Codex CLI, Gemini CLI & Antigravity - 402+ professional app, token-efficiency, and common-sense skills. SEO/GEO ready.

168 lines (132 loc) 9.43 kB
--- 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"] tools: ["claude", "cursor", "gemini", "codex"] --- # Autodesk Fusion (Fusion 360) 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 ``` ┌─────────────────────────────────────────────────────────────┐ 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 └─────────────────────────────────────────────────────────────┘ ``` --- ## 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) # Draw Center Rectangle lines = sketch.sketchCurves.sketchLines rec = lines.addCenterPointRectangle(adsk.core.Point3D.create(0, 0, 0), adsk.core.Point3D.create(6, 4, 0)) # 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" 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) # 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 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!") except Exception: if ui: ui.messageBox(f"Execution Failed:\n{traceback.format_exc()}") ``` --- ## 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. | --- ## 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 ``` ### 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` --- ## 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.