Download

Fusion 360 bridge verbs

Drive Fusion 360: CAD export, cloud docs, EAGLE electronics, manufacturing, UI.

Part of the Adom Desktop verb reference. Invoke as adom-desktop <verb> '<json>'.

Note: Two-tier architecture: bridge (port 8773) handles launch/detection; AdomBridge add-in (port 8774) handles exports/queries inside Fusion.

Workflow: fusion_start -> fusion_open_cloud_file or fusion_open_board -> work -> fusion_close

cad_3d

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

Note: Not available via API (dialog only). Use fusion_export_step or fusion_export_dxf instead.

Prerequisite: Active 3D design

fusion_export_dxf

Export active design as DXF

Args:

  • outputPath — required

Note: Not available via API (dialog only). Use fusion_export_step or fusion_export_iges instead.

Prerequisite: Active 3D design

fusion_export_f3d

Export active design as Fusion 360 archive (.f3d)

Args:

  • outputPath — required

Note: Native Fusion format — preserves parametric features, history, component references

Prerequisite: Active 3D design

fusion_export_fbx

Export active design as FBX

Args:

  • outputPath — required

Note: FBX only — no fallback. Not available in current Fusion builds. Use fusion_export_usdz or fusion_export_step instead.

Prerequisite: Active 3D design

fusion_export_iges

Export active design as IGES (.igs)

Args:

  • outputPath — required

Note: Legacy CAD interchange. STEP is preferred for modern workflows.

Prerequisite: Active 3D design

fusion_export_obj

Export active design as OBJ

Args:

  • outputPath — required

Note: Not available via API (dialog only). Use fusion_export_stl or fusion_export_usdz instead.

Prerequisite: Active 3D design

fusion_export_sat

Export active design as SAT (.sat, ACIS solid model)

Args:

  • outputPath — required

Note: ACIS kernel format — opens in SolidWorks, SpaceClaim.

Prerequisite: Active 3D design

fusion_export_skp

Export active design as SKP (SketchUp)

Args:

  • outputPath — required

Note: Not available via API (dialog only). Use fusion_export_step or fusion_export_stl instead.

Prerequisite: Active 3D design

fusion_export_step

Export active design as STEP

Args:

  • outputPath — required

Prerequisite: Active 3D design (not Electronics)

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

Note: Preserves component hierarchy, PBR materials, named nodes. Ideal for Blender→GLB or direct iOS/macOS AR viewing.

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)

Note: Uses Fusion's render API (Capture Image) — not a window screenshot. Supports all standard views for product images/icons.

cloud

fusion_check_recovery

Check if a cloud file has crash recovery data

Args:

  • fileName — required
  • folderPath — optional
  • projectName — optional

Note: Check BEFORE opening files to avoid blocking recovery dialog

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 right subfolder can reduce search time 10-50x.
  • 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_cloud_tree.
  • 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 subfolders.
  • searchTimeout — optional int seconds overall wall-clock timeout (default 120). If you set this >180, also pass timeout: to the bridge so the HTTP waiter doesn't give up first.

Returns: data{files[], totalFound, foldersSearched, foldersSkipped, filesSkipped, searchComplete, truncated, folderLimitReached, searchTimedOut, elapsedSeconds, costAnalysis{foldersPerSecond, estimatedSecondsPer100Folders}, hint}

Note: All defenses (per-folder timeout, doEvents, per-file try/except, watchdog) make hard caps unnecessary. Defaults are conservative; raise maxFolders/maxDepth/maxResults for thorough searches.

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)

Returns: folders[], files[] (each with path), stats{foldersVisited, filesFound, truncated}

Note: Single add-in call does the entire walk. No sleeps, no batching. For targeted finds use nameContains; for exports use extensions.

electronics

fusion_board_info

Get structured board data: components, nets, traces, DRC violations

Note: Much richer than a screenshot — exact coordinates and connectivity

Prerequisite: Board open in PCB Editor

fusion_electron_run

Execute EAGLE command (WINDOW FIT, DISPLAY ALL, RATSNEST, DRC, etc.)

Args:

  • command — required EAGLE command string

Returns: activeWorkspace, fusionOperations[] (diff of internal log), _hint

Note: Fire-and-forget: never returns output. Use fusion_board_info for data. Full command reference with safe/blocking split: skills/eagle-commands.md (ships next to this CLI binary). Avoid blocking commands: WRITE, ADD, SHOW, MOVE, CHANGE, EDIT.

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

Note: Produces valid EAGLE XML (<?xml>) parseable by standalone EAGLE, KiCad import, or any XML tool. For Fusion-native format use fusion_export_source instead.

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)

Note: Always export .fbrd FIRST (from board view), then switch to schematic for .fsch. If file not created, wrong workspace is active — screenshot to check.

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

Note: Creates a NEW local document via Document.newDesignFromLocal. Use fusion_save_to_cloud to persist afterward. For legacy EAGLE files use fusion_open_schematic (.sch), fusion_open_board (.brd), or fusion_open_lbr (.lbr).

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

fusion_open_schematic

Open .sch in Schematic Editor

Args:

  • filePath — required

fusion_show_2d_board

Switch back to 2D board layout from 3D view

Note: EAGLE commands only work in 2D view

fusion_show_3d_board

Switch to 3D PCB view (board needs outline on layer 20)

Prerequisite: Board must be open in PCB Editor

lifecycle

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)

Note: Call before force-killing Fusion to prevent recovery files

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[]

Note: Does NOT force-kill — the dialog can still prompt for confirmation. Use when fusion_dismiss_blocking_dialogs reports remaining dialogs that Escape couldn't clear.

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

Returns: dismissed[{hwnd,title,pattern}], remaining[], mainThreadResponsive, attempts

Note: Idempotent. Safe to call any time. Returns immediately with empty dismissed[] when no blocking dialogs are present.

fusion_document_info

List all open document tabs with cloud metadata for active doc

Returns: openDocuments[], activeDoc cloud details (project, folder, version)

fusion_get_app_state

Query open documents, active workspace, Electronics status

Returns: workspace, openDocuments[], electronicsActive

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 toasts, and other known blocking modals
  • timeoutSeconds — optional int (default 120) — total wait for add-in + dialog dismissal

Returns: resolvedPath, pid (null if already running), addinReady, dialogsDismissed[], elapsedMs, alreadyRunning

Note: ALWAYS use this instead of launching Fusion by hand. It's idempotent — safe to call when Fusion is already running. Process-detection gate means it will NEVER trigger Autodesk's 'Multiple instances are not supported' dialog.

manufacturing

detect_layers -> set_design_rules -> DRC -> export_gerbers -> export_bom -> export_cpl -> pull_file

Board must be open in PCB Editor (use fusion_open_board or fusion_show_2d_board)

fusion_detect_layers

Auto-detect PCB copper layer count (2 or 4) using ULP + CAM comparison

Returns: layerCount, is4Layer, method, copperLayers[], nextSteps[]

Note: Run first — informs gerber CAM job selection and design rule choice

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|bottom_soldermask|top_paste|bottom_paste|board_outline|drill|assembly_top|assembly_bottom|fabrication

Returns: outputPath, dpi, preset, fileSize, nextSteps[]

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)

Returns: outputPath, componentCount, uniquePartCount, nextSteps[]

Note: Format: 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

Returns: outputPath, totalPlacements, topCount, bottomCount, nextSteps[]

Note: Format: Designator, Mid X, Mid Y, Layer, Rotation (mm). Compatible with JLCPCB/PCBWay.

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/)

Returns: zipPath, zipSizeKB, layerCount, files[], nextSteps[]

Note: ZIP contains GTL, GBL, GTS, GBS, GTP, GBP, GTO, GBO, GKO, XLN. Ready for fab upload.

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

Returns: edruFile, layerCount, description, nextSteps[]

Note: Run DRC after applying rules to check for violations

recovery

fusion_dismiss_recovery

Dismiss recovery dialogs + relocate recovery files to ~/.adom/recovery/

Note: Handles both 'Recovered Documents' list and 'Open recovery instead?' prompts

fusion_relocate_recovery

Move crash recovery files to ~/.adom/recovery/fusion/ (call before launch to prevent dialogs)

Note: Files preserved, not deleted. User can manually restore if needed.

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

Note: Relative coords (0.0-1.0) are scale-independent — estimate position as percentage from screenshot. Prefer fusion_send_key for dialogs (enter/escape/tab covers most cases).

fusion_screenshot_all

Screenshot main window + list all dialog windows with HWNDs

Note: Use fusion_screenshot_fusion with dialog HWND, or desktop_screenshot_window

fusion_screenshot_fusion

Capture Fusion main window or a specific dialog as PNG

Args:

  • hwnd — optional — dialog HWND to screenshot instead of main window

Returns: savedTo file path

Note: Image is downscaled to max 1568px. Use relative coords (0.0-1.0) for clicking — they map to actual window size regardless of image scale.

fusion_send_key

Send keyboard input to Fusion or a specific dialog

Args:

  • hwnd — optional — target a specific dialog HWND
  • key — required string

Note: Preferred way to dismiss dialogs: 'enter' to confirm, 'escape' to cancel, 'tab' to cycle buttons. Use click only if tab order doesn't reach the right button.

fusion_window_info

Get main window HWND, title, rect, and all Qt dialog windows

Returns: hwnd, title, rect, dialogs[{hwnd, title, className, rect}]

Note: Essential for detecting blocking dialogs after operations