Adom Desktop - Fusion 360 Bridge
Public Made by Adomby adom
Drive Autodesk Fusion 360 from the cloud via Adom Desktop: component libraries, IPC package generation, board layout, exports (STEP/Gerbers/BOM/CPL), fast APS cloud search, and parametric modeling.
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.
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.
# 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._