app
Fusion - the Fusion 360 Bridge
Public Made by Adomby adom
Drive Autodesk Fusion 360 from the cloud via Adom Bridge: component libraries, IPC package generation, board layout, exports (STEP/Gerbers/BOM/CPL), fast APS cloud search, and parametric modeling.
← Commit history
README.md+3@@ -8,6 +8,9 @@ language; the bridge drives Fusion for you. Every section below is a **real screenshot of the bridge in action**, with the kind of prompt you would actually type to your AI. +Looking for the full API? See the **[complete verb reference](README_VERBS.md)**: all 68 verbs+by category, with descriptions, arguments, and example input/output.+ --- ## Find any design and open it, just by asking
README_VERBS.mdadded+567@@ -0,0 +1,567 @@+# Fusion Bridge - Verb Reference++Every verb the Adom Desktop Fusion 360 Bridge exposes, by category, with what it does, its arguments, and an example call. Invoke any verb as `adom-desktop <verb> '<json-args>'` (Adom Desktop proxies the `fusion_*` prefix to the bridge).++Back to the [main README](README.md).+++---++## Lifecycle: launch, documents, windows++### `fusion_activate_document`++Switch to an open document tab by name or type++**Args:** `documentType` (optional: Electronics|PCB|FusionDesign|Drawing), `name` (optional substring match)+++### `fusion_close`++Close Fusion 360 gracefully+++### `fusion_close_all_documents`++Close all open documents++**Args:** `saveChanges` (optional bool (default: false))+++### `fusion_close_document`++Close a document without save dialog (avoids modal blocking)++**Args:** `name` (optional (default: active)), `save` (optional bool (default: false))+++### `fusion_close_window`++Close a specific Fusion dialog window by sending WM_CLOSE (equivalent to clicking its X button). Works on dialogs that Escape doesn't close - e.g. 'Recovered Documents'.++**Args:** `hwnd` (required - HWND from fusion_window_info or fusion_dismiss_blocking_dialogs remaining[])+++### `fusion_dismiss_blocking_dialogs`++First-class blocking-dialog killer. Enumerates all Fusion Qt windows, matches them against a known list of blocking/picker patterns ('What do you want to design?', error toasts, recovery prompts, etc.), and sends Escape to each offending HWND until the add-in main thread reports responsive. Whenever any fusion_* command returns errorCode 'fusion_addin_not_responding', call this FIRST before retrying.++**Args:** `extraPatterns` (optional array of case-insensitive title substrings to also treat as blocking), `maxAttempts` (optional int (default 5) - retry loop cap)+++### `fusion_document_info`++List all open document tabs with cloud metadata for active doc+++### `fusion_get_app_state`++Query open documents, active workspace, Electronics status+++### `fusion_start`++First-class Fusion 360 startup. Discovers Fusion360.exe via glob (so version-indirected webdeploy hashes don't matter), verifies it exists BEFORE spawning (no 'Windows cannot find' GUI dialogs), launches it if not already running, waits for the AdomBridge add-in to come online, and auto-dismisses any blocking dialogs via fusion_dismiss_blocking_dialogs. Returns when Fusion is fully ready.++**Args:** `dismissBlockingDialogs` (optional bool (default true) - auto-clear the 'What do you want to design?' picker, error ), `timeoutSeconds` (optional int (default 120) - total wait for add-in + dialog dismissal)++```+adom-desktop fusion_start '{}'+-> { "addinReady": true, "status": "ok" }+```++++---++## Cloud search & files (APS)++### `aps_auth`++Interactive Autodesk sign-in (opens the system browser, 3-legged PKCE OAuth). One-time per device; tokens cached in ~/.adom/aps_tokens.json and auto-refreshed. Requires aps_client_id to be configured.+++### `aps_hubs`++List the Autodesk hubs (teams) the signed-in account can see.+++### `aps_projects`++List projects in a hub (default: first hub).++**Args:** `hubId` (optional - default first hub (aps_hubs lists ids))+++### `aps_search`++FAST indexed cloud-file search via Autodesk Platform Services (APS) Data Management API. ~Instant server-side index - NOT folder-walking. Works even when Fusion is CLOSED. Prefer this over fusion_search_cloud_files whenever APS is configured.++**Args:** `hubId` (optional - exact APS hub id (default: first hub); aps_hubs lists ids), `projectId` (optional - exact APS project id (overrides projectName); aps_projects lists ids), `projectName` (optional - substring match against your project names (default: search all projects, up to), `query` (required case-insensitive substring of the file's displayName)+++### `aps_status`++Is native APS cloud search available on this box? Non-prompting discovery check - call this FIRST to decide between aps_search (fast) and fusion_search_cloud_files (slow fallback).+++### `fusion_check_recovery`++Check if a cloud file has crash recovery data++**Args:** `fileName` (required), `folderPath` (optional), `projectName` (optional)+++### `fusion_create_cloud_folder`++Create folder (idempotent)++**Args:** `folderName` (required), `parentPath` (optional), `projectName` (optional)+++### `fusion_delete_cloud_file`++Delete a cloud file (must not be open)++**Args:** `fileName` (required), `folderPath` (optional), `projectName` (optional)+++### `fusion_export_cloud_file`++Export active document to local file (step/stl/f3d/iges/sat/smt)++**Args:** `format` (optional (default: step)), `outputPath` (required)+++### `fusion_list_cloud_files`++List files and subfolders in a cloud project/folder++**Args:** `folderPath` (optional), `projectName` (optional)+++### `fusion_list_cloud_projects`++List all cloud projects in user's hub+++### `fusion_open_cloud_file`++Open a cloud file by name. STOPS if recovery exists - you must specify recovery='open' or recovery='discard'++**Args:** `fileName` (required), `folderPath` (optional), `projectName` (optional), `recovery` (optional: open|discard)+++### `fusion_save_to_cloud`++Save active document to Fusion cloud++**Args:** `description` (optional), `folderPath` (optional), `name` (required), `projectName` (optional)+++### `fusion_search_cloud_files`++Search a cloud project / subfolder by file-name substring. Returns matches + a detailed scope analysis. Use this for targeted lookups; for exhaustive whole-cloud walks prefer fusion_walk_cloud_tree.++**Args:** `folderPath` (optional starting subfolder (default: project root). NARROW THE SCOPE HERE - naming the ri), `folderTimeout` (optional int seconds per-folder cloud-API timeout (default 30)), `maxDepth` (optional int (default 2, no upper cap)), `maxFolders` (optional int (default 10, no upper cap). For exhaustive 100+ folder searches consider walk), `maxResults` (optional int (default 20, no upper cap)), `projectName` (optional (defaults to active project)), `query` (required case-insensitive substring of the file name), `recursive` (optional bool (default false). false = root folder only (fast); true = descend into subfol), `searchTimeout` (optional int seconds overall wall-clock timeout (default 120). If you set this >180, also )+++### `fusion_walk_cloud_tree`++Walk a cloud folder tree iteratively (BFS) and return a flat list of folders + files with full paths.++**Args:** `extensions` (optional list of extensions to include, e.g. ["f3d","fprj"]), `folderPath` (optional starting folder (defaults to root)), `includeFiles` (optional bool (default true) - set false for folder-only tree), `maxDepth` (optional int (default 10)), `maxFolders` (optional int (default 500, truncates if exceeded)), `nameContains` (optional case-insensitive substring filter on file names), `projectName` (optional (defaults to active))++++---++## Electronics: schematic, board, library++### `fusion_board_info`++Get structured board data: components, nets, traces, DRC violations++_Prerequisite: Board open in PCB Editor_++```+adom-desktop fusion_board_info '{}'+-> { "rawXml": "<pcb>... copper / arcs / lines geometry ...</pcb>" }+```+++### `fusion_electron_run`++Execute EAGLE command (WINDOW FIT, DISPLAY ALL, RATSNEST, DRC, etc.)++**Args:** `command` (required EAGLE command string)+++### `fusion_execute_text_command`++Low-level Fusion app.executeTextCommand() access++**Args:** `command` (required Fusion text command)+++### `fusion_export_eagle_source`++Export active electronics document as plain EAGLE .sch or .brd XML - extracts from Fusion's .fsch/.fbrd ZIP container++**Args:** `outputPath` (required - full path ending in .sch or .brd)++_Prerequisite: MUST have correct editor active: PCB Editor / Board Layout for .brd, Schematic Editor for .sch_+++### `fusion_export_lbr`++Export library as .scr script (no 3D refs)++**Args:** `outputPath` (optional)+++### `fusion_export_source`++Export active electronics document as .fsch (schematic), .fbrd (board), or .flbr (library) source file++**Args:** `outputPath` (required - full path with extension (.fsch, .fbrd, or .flbr))++_Prerequisite: MUST have correct editor active: Board Layout for .fbrd, Schematic Editor for .fsch_+++### `fusion_import_electronics`++Import Fusion-native .fsch/.fbrd/.flbr file as new local electronics project++**Args:** `filePath` (required Windows path to .fsch, .fbrd, or .flbr file)+++### `fusion_list_text_commands`++List available EAGLE text commands in current context+++### `fusion_open_board`++Open .brd in Board Layout editor++**Args:** `filePath` (required)+++### `fusion_open_electronics`++Check if Electronics workspace is active+++### `fusion_open_lbr`++Open .lbr library in Electronics Library editor++**Args:** `filePath` (required)++```+adom-desktop fusion_open_lbr '{"filePath":"C:/.../nRF52840-CKAA.lbr"}'+-> { "success": true, "postOpenScreenshot": { "savedTo": "C:/tmp/...png" } } // library opens in the Electronics library editor+```+++### `fusion_open_schematic`++Open .sch in Schematic Editor++**Args:** `filePath` (required)+++### `fusion_show_2d_board`++Switch back to 2D board layout from 3D view++```+adom-desktop fusion_show_2d_board '{}'+-> { "activeWorkspace": "Electronics Design" }+```+++### `fusion_show_3d_board`++Switch to 3D PCB view (board needs outline on layer 20)++_Prerequisite: Board must be open in PCB Editor_++```+adom-desktop fusion_show_3d_board '{}'+-> { "activeWorkspace": "3D PCB", "screenshots": [ { "savedTo": "C:/tmp/...png" } ] }+```++++---++## CAD & 3D export++### `fusion_export_3mf`++Export active design as 3MF++**Args:** `outputPath` (required)++_Prerequisite: Active 3D design_+++### `fusion_export_dwg`++Export active design as DWG++**Args:** `outputPath` (required)++_Prerequisite: Active 3D design_+++### `fusion_export_dxf`++Export active design as DXF++**Args:** `outputPath` (required)++_Prerequisite: Active 3D design_+++### `fusion_export_f3d`++Export active design as Fusion 360 archive (.f3d)++**Args:** `outputPath` (required)++_Prerequisite: Active 3D design_+++### `fusion_export_fbx`++Export active design as FBX++**Args:** `outputPath` (required)++_Prerequisite: Active 3D design_+++### `fusion_export_iges`++Export active design as IGES (.igs)++**Args:** `outputPath` (required)++_Prerequisite: Active 3D design_+++### `fusion_export_obj`++Export active design as OBJ++**Args:** `outputPath` (required)++_Prerequisite: Active 3D design_+++### `fusion_export_sat`++Export active design as SAT (.sat, ACIS solid model)++**Args:** `outputPath` (required)++_Prerequisite: Active 3D design_+++### `fusion_export_skp`++Export active design as SKP (SketchUp)++**Args:** `outputPath` (required)++_Prerequisite: Active 3D design_+++### `fusion_export_step`++Export active design as STEP++**Args:** `outputPath` (required)++_Prerequisite: Active 3D design (not Electronics)_++```+adom-desktop fusion_export_step '{"outputPath":"C:/tmp/board.step"}'+-> { "format": "step", "fileSizeKB": 8890 } // requires the 3D view active (fusion_show_3d_board)+```+++### `fusion_export_stl`++Export active design as STL++**Args:** `outputPath` (required)++_Prerequisite: Active 3D design_+++### `fusion_export_usdz`++Export active design as USDZ (best for digital twins + GLB)++**Args:** `outputPath` (required)++_Prerequisite: Active 3D design_+++### `fusion_get_design_info`++Get active design metadata (bodies, components)++_Prerequisite: Active 3D design_+++### `fusion_get_parameters`++List user parameters from active design+++### `fusion_import_step`++Import STEP/STL/IGES/SAT/OBJ/F3D file into Fusion++**Args:** `filePath` (required Windows path)+++### `fusion_set_parameter`++Modify a user parameter++**Args:** `name` (required), `value` (required)+++### `fusion_take_screenshot`++Capture Fusion viewport as PNG with camera orientation control++**Args:** `height` (optional (default 1080)), `orientation` (optional: home, front, back, top, bottom, left, right), `outputPath` (required), `width` (optional (default 1920))++++---++## Manufacturing: gerbers, BOM, CPL, design rules++### `fusion_detect_layers`++Auto-detect PCB copper layer count (2 or 4) using ULP + CAM comparison+++### `fusion_export_board_image`++Export PNG image with layer presets (top_copper, assembly_top, fabrication, etc.)++**Args:** `dpi` (optional int (default: 300, max: 600)), `layers` (optional int[] - custom layer numbers (overrides preset)), `listPresets` (optional bool - returns preset list instead of exporting), `monochrome` (optional bool), `outputPath` (optional (default: C:/tmp/adom-board.png)), `preset` (optional: all|top_copper|bottom_copper|top_silkscreen|bottom_silkscreen|top_soldermask|bot)+++### `fusion_export_bom`++Export Bill of Materials as CSV (grouped by value+package)++**Args:** `grouped` (optional bool (default: true) - false for one row per component), `outputPath` (optional (default: C:/tmp/adom-bom.csv))++```+adom-desktop fusion_export_bom '{"outputPath":"C:/tmp/bom.csv"}'+-> { "componentCount": 13, "grouped": true } // CSV: Comment,Designator,Footprint,Quantity,Library+```+++### `fusion_export_cpl`++Export Component Placement List (pick-and-place) as CSV++**Args:** `outputPath` (optional (default: C:/tmp/adom-cpl.csv)), `side` (optional: all (default) | top | bottom)++```+adom-desktop fusion_export_cpl '{"outputPath":"C:/tmp/cpl.csv"}'+-> { "topCount": 12, "bottomCount": 1 } // CSV: Designator,Mid X,Mid Y,Layer,Rotation+```+++### `fusion_export_gerbers`++Export Gerber RS-274X + Excellon drill files as ZIP (auto-detects layers, selects CAM job)++**Args:** `boardName` (optional (default: from active doc name)), `layers` (optional: auto | 2 | 4), `outputDir` (optional (default: C:/tmp/adom-gerbers/))++```+adom-desktop fusion_export_gerbers '{}'+-> { "boardName": "LEDStrip_WS2812B-BT_v12", "fileCount": 11, "files": [ {"name":"...GTL","size":24922}, {"name":"...GBL"}, ... {"name":"...XLN"}, {"name":"gerber_job.gbrjob"} ] }+```+++### `fusion_set_design_rules`++Apply Adom/JLCPCB design rules (.edru files) - auto-detects 2/4 layer++**Args:** `action` (optional: apply (default) | export | show), `layers` (optional: auto (default) | 2 | 4), `outputPath` (optional, for export action)++```+adom-desktop fusion_set_design_rules '{"action":"apply","layers":"2"}'+-> { "activeWorkspace": "PCB Editor", "description": "board thickness 1.6mm, 1oz copper, ... (JLCPCB profile)" }+```++++---++## UI interaction++### `fusion_click_fusion`++Click at coordinates in Fusion window or a specific dialog++**Args:** `hwnd` (optional - target a specific dialog HWND instead of main window), `relative` (optional bool (default: true, 0.0-1.0)), `x` (required float), `y` (required float)+++### `fusion_screenshot_all`++Screenshot main window + list all dialog windows with HWNDs+++### `fusion_screenshot_fusion`++Capture Fusion main window or a specific dialog as PNG++**Args:** `hwnd` (optional - dialog HWND to screenshot instead of main window)+++### `fusion_send_key`++Send keyboard input to Fusion or a specific dialog++**Args:** `hwnd` (optional - target a specific dialog HWND), `key` (required string)+++### `fusion_window_info`++Get main window HWND, title, rect, and all Qt dialog windows++++---++## Recovery++### `fusion_dismiss_recovery`++Dismiss recovery dialogs + relocate recovery files to ~/.adom/recovery/+++### `fusion_relocate_recovery`++Move crash recovery files to ~/.adom/recovery/fusion/ (call before launch to prevent dialogs)++++---++_68 verbs. Generated from the live Adom Desktop verb catalog; headline verbs show real captured output._
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "adom-desktop-fusion-bridge",- "version": "1.5.1",+ "version": "1.6.0", "type": "app", "description": "Drive Autodesk Fusion 360 from the cloud via Adom Desktop: launch Fusion, electronics board layout, design rules, exports (STEP/IGES/STL/3MF/USDZ/OBJ/DXF/DWG/Gerbers/BOM/CPL), fast APS server-indexed cloud search with browse/recent/versions, cloud download/upload and folder creation, and in-app parametric modeling. Never-charge: APS calls are capped to the free tier.", "dependencies": {},
page.json+1−1@@ -1,6 +1,6 @@ { "slug": "adom-desktop-fusion-bridge",- "version": "1.5.1",+ "version": "1.6.0", "type": "app", "description": "Drive Autodesk Fusion 360 from the cloud via Adom Desktop: launch Fusion, electronics board layout, design rules, exports (STEP/IGES/STL/3MF/USDZ/OBJ/DXF/DWG/Gerbers/BOM/CPL), fast APS server-indexed cloud search with browse/recent/versions, cloud download/upload and folder creation, and in-app parametric modeling. Never-charge: APS calls are capped to the free tier.", "dependencies": {},