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.
master
| Name | Last updated |
|---|---|
| bq25792 | 2d ago |
| crossbar | 1mo ago |
| evidence | 1mo ago |
| fixture | 1mo ago |
| obstacles | 1mo ago |
| screenshots | 1mo ago |
| videos | 1mo ago |
| call.py | 1mo ago |
| live_panel.py | 1mo ago |
| make_fixture.py | 1mo ago |
| prepare_live_panel.py | 1mo ago |
| README.md | 1mo ago |
| render_showcase.py | 1mo ago |
| run_demo.py | 1mo ago |
Live Fusion trace routing
Development branch feature/per-net-trace-routing, based on wiki
adom/fusion-bridge commit 3e27d7f04743fef7a864bbc84bc0abc7bbabbe86
(version 1.9.366). Initial runtime version: 1.10.0-dev.routing.1.
The 24-net crossover extension uses 1.10.0-dev.routing.2.
This adds three bridge verbs that edit and inspect the live Fusion board. The caller supplies the paths. This is explicit copper creation, not an obstacle-avoiding autorouter or a production PCB design.
| Verb | Purpose |
|---|---|
fusion_routing_state |
Fresh export: document creation ID, geometry revision, pad coordinates, net membership, traces, vias and remaining airwires. Requires expectDocument. |
fusion_route_net |
Validate and add one net's explicit path(s). Requires expectDocument, boardId, expectedRevision, net, and points or paths. Returns verified copper and the new revision. dryRun:true does preflight only. |
fusion_routing_drc |
Recompute airwires, run Autodesk DRC and read its native error objects through ULP. Reports errors, warnings, approved violations and airwires. Does not clear or approve errors. |
Coordinates and dimensions are millimetres. Layers are 1 (top) and 16
(bottom). A waypoint is [x,y], {pad:"J1.1"} or {x,y,layer}. A layer marker
changes the outgoing layer at that point and creates a through via. Defaults:
0.25 mm width, 0.6 mm via diameter, 0.3 mm drill, 0.2 mm clearance lower bound.
Board and net-class minimums can make the required clearance larger.
Each call reads the board on Fusion's main thread, checks identity and revision, preflights all requested geometry, creates copper with complete EAGLE commands, recalculates airwires, repaints and exports again to verify the entire copper delta. Fusion can split an existing wire when a branch attaches to its middle; comparison uses occupied centerline intervals to tolerate that without accepting a different route. The test's 20 requested segments therefore become 21 stored segments when Fusion inserts the branch junction.
The Rust executable embeds rust/bridge/src/routing_script.py and sends it
through the already installed add-in's script transport. Developing these verbs
does not require restarting Fusion or replacing its loaded Python modules.
The Python server has a compatibility handler for source-based installations.
Current limits
The conservative geometric preflight supports two-layer boards with rectangular outlines, straight copper, through vias and embedded pads/SMDs. It refuses polygons, curved copper, restrict/copper artwork, milling and footprint holes it cannot model. Pad obstacles use bounding circles, so some legal routes are conservatively rejected. This is not a complete implementation of Autodesk's rules; use native DRC to establish the final result. Arbitrary bend preferences may change the route generated by LINE; exact read-back rejects that result. The verified demo uses horizontal and vertical segments.
A call is not an atomic transaction. A via and its drill change can occupy two native Undo steps. On execution failure or read-back mismatch, copper may already exist; the result reports that and the caller must inspect state before retrying. There is no blind retry, automatic rollback, file rewrite, fake canvas or simulated animation. The exported schematic accompanies the board fixture but the live test opens the local board directly; it does not claim a cloud-linked schematic/project was created.
Build and test
python3 demo/routing/make_fixture.py demo/routing/fixture
python3 -m unittest discover -s tests -p test_routing.py -v
cargo test --manifest-path rust/Cargo.toml -p adom-fusion-bridge routing::tests
cargo build --manifest-path rust/Cargo.toml -p adom-fusion-bridge \
--target x86_64-pc-windows-gnu --release
For development installation, stage the compiled exe on the host, pin
fusion360 with bridge_dev_mode, pause the bridge's routing, stop only its
service, and run tools/install-routing-dev.ps1 -Cache <cache> -Staged <exe>.
It requires the pin, backs up the current exe and manifest, preserves unrelated
manifest fields, and verifies the copied executable's hash. Resume the bridge,
wait for it to answer, and verify the actual bridgeVersion returned by a new
routing verb. The host application's documents stay open. Keep the pin until the
development build is deliberately retired.
Reproduce the demo
Stage both fixture files to a fresh host directory. Open fusion-routing.brd
with fusion_open_board and verify the PCB Editor, three elements and 13 pads.
Do not overwrite an open file. The original source fixture contains no copper.
Resolve the real Fusion HWND with desktop_list_windows. Foreground only if the
user asked to watch; window capture also works in the background.
python3 demo/routing/run_demo.py --target AdomLapper --hwnd <Fusion HWND> \
--record --output demo/routing/evidence/new-take
The script refuses pre-existing copper and preflights the complete plan before
recording. It commits one trace or via per request and runs native DRC after
each net. --per-net exercises a whole net per request instead. It captures
only the Fusion window, finalizes even on a failure, and stores every call's
arguments, elapsed time and response. There is a deliberate 0.2-second pause
between traces to keep changes readable. Geometry comes from the accompanying
explicit plan, adapted from the KiCad Astra test coupon. It is not a claim that
Astra independently solved a congested board during this take.
Live acceptance — AdomLapper, 2026-09-05
The recorded per-trace run connected six nets and 13 pads with 21 stored copper segments and two vias. Native Autodesk DRC returned zero errors, zero warnings, zero airwires. Wrong-net, wrong-board, stale-revision and crossing-clearance rejections passed without mutation; dry-run left the revision unchanged. Native Undo removed the last segment and restored one airwire; Redo restored exactly the final geometry revision.
Whole-net mode also passed with the same final counts and a clean native DRC.
The original MP4 is retained locally in videos/ (excluded from the branch);
the recorder reported 806 frames at
2564 x 1540. Detailed acceptance is in evidence/final-take/result.json;
per-call evidence is in the same directory. The native and EAGLE board exports
are in evidence/boards/ and on the host under
C:/Users/john/Documents/fusion-routing-dev/.
Autodesk's primary references: LINE, VIA, DRC, UL_ERROR.
The final take explicitly repaints the unrouted board before recording. The
share copy videos/fusion-live-trace-routing.mp4 is resized to 1920 pixels wide
and H.264-compressed with original timestamps; there are no editorial cuts or
playback-speed changes. Raw recorder elapsed time and encoded duration are
reported separately in evidence/final-video-recording.json and
evidence/final-video-probe.json. The first and final video frames were inspected
and the full share copy decoded successfully.
The shareable video is also saved on AdomLapper at
C:/Users/john/Documents/fusion-routing-dev/fusion-live-trace-routing.mp4.
Captioned showcase
python3 demo/routing/render_showcase.py creates
videos/fusion-routing-showcase-3x.mp4 from the preserved final raw take.
It keeps the full sequence, plays routing at a labeled 3x speed, and adds a
five-second final hold. No idle intervals are removed from this already short
take. ASS captions identify Codex Astra in Adom Hydrogen, explicit planned
waypoints, the Fusion verbs and this board's measured DRC result.
The adjacent .ass and .edit.json preserve captions and edit provenance.
The renderer checks the output dimensions and duration and fully decodes it;
results are in evidence/showcase-video-validation.json. Delivery target:
C:/Users/john/Documents/Adom Routing Demos/fusion-routing-showcase-3x.mp4.
Obstacle-aware planning extension
Development build 1.10.0-dev.routing.4 adds fusion_plan_route, a bounded
read-only orthogonal A* planner using the same two-layer clearance model.
It calculates waypoints from live pads and existing copper. See
obstacles/README.md for inputs, limits, native insertion regression and
the three-case live demonstration. This extends the explicit-route APIs above.