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
1.9.151: Z-up orientation check for new users
7 files changed
+68−15
BRIDGE_VERSION+1−1@@ -1 +1 @@-1.9.150+1.9.151
adom-bridge-fusion-manifest.json+4−4@@ -1,10 +1,10 @@ { "manifest_version": 1, "name": "fusion360",- "version": "1.9.150",- "url": "https://wiki.adom.inc/download/adom/fusion-bridge/1.9.150/adom-bridge-fusion-v1.9.150.zip",- "sha256": "bd0dc44eb9bb3cff7b8116b12e0ad6cc65bb2bf1133ac4af17160628d5a7817d",- "size": 482346,+ "version": "1.9.151",+ "url": "https://wiki.adom.inc/download/adom/fusion-bridge/1.9.151/adom-bridge-fusion-v1.9.151.zip",+ "sha256": "1d99bee775a1cef979bfc883ea6c30779759561da2f7560c511daaa69e0fbeda",+ "size": 483104, "verbPrefixes": [ "fusion_" ],
bridge.json+1−1@@ -2,7 +2,7 @@ "manifest_version": 1, "name": "fusion360", "displayName": "Autodesk Fusion 360",- "version": "1.9.150",+ "version": "1.9.151", "description": "Drive Autodesk Fusion 360 from the cloud: 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 plus browse/recent/file-info/versions, cloud file download/upload and folder creation, and in-app parametric modeling (fusion_run_modeling_script). Never-charge: APS calls are capped to the free tier.", "homepage": "https://wiki.adom.inc/adom/fusion-bridge", "author": "Adom Inc.",
package.json+1−1@@ -1,6 +1,6 @@ { "slug": "fusion-bridge",- "version": "1.9.173",+ "version": "1.9.174", "type": "app", "description": "This package installs the bridge's SKILLS into your container so your AI knows how to drive it; Adom Bridge loads the bridge runtime itself from the release zip.", "dependencies": {
page.json+10−7@@ -1,6 +1,6 @@ { "slug": "fusion-bridge",- "version": "1.9.173",+ "version": "1.9.174", "type": "app", "description": "This package installs the bridge's SKILLS into your container so your AI knows how to drive it; Adom Bridge loads the bridge runtime itself from the release zip.", "dependencies": {@@ -11,6 +11,10 @@ "uninstall": "./uninstall.sh" }, "tags": [+ "ab",+ "bridge",+ "fusion",+ "desktop-app", "fusion360", "autodesk", "cad",@@ -75,7 +79,10 @@ "build a basic parts library", "add a 3d model to a component", "make a fusion 360 library with 3d",- "set up the fusion bridge"+ "set up the fusion bridge",+ "fusion dashboard",+ "fusion status page",+ "open the fusion launch page" ], "discovery_pitch": "Use the Adom Bridge Fusion 360 bridge when the user wants to DRIVE Autodesk Fusion 360 from the cloud: open/search their team's Fusion cloud designs, lay out a PCB or do electronics, export STEP/IGES/STL/Gerbers/BOM, or build a component library with real rendering 3D. It runs Fusion on the user's own machine via Adom Bridge. NOT for web/browser/login/form-filling (that's the native-browser extension) and NOT for KiCad (that's the kicad bridge).", "brief": "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.",@@ -104,9 +111,5 @@ "label": "Part volume", "prompt": "How much material does each printed part in this assembly use?" }- ],- "author": {- "name": "John Lauer",- "email": "[email protected]"- }+ ] }
server.py+36−1@@ -581,6 +581,32 @@ def _ensure_fusion_user_async(): _thu.Thread(target=_fetch, daemon=True).start() +def _fusion_modeling_orientation(user_id=None):+ """The current Fusion user's Default Modeling Orientation, read from Fusion's LOCAL+ options file (sceneUpOptionId in NGlobalOptions.xml): 'zup' (the ADOM standard), 'yup'+ (Fusion's factory default, which a FRESH Autodesk account gets), or None if unknown.++ Disk-only - the bridge runs on the same box, so this needs NO add-in and never disturbs a+ running Fusion. John, 2026-08-23: a fresh account (jlauer12) came up Y-up while his other+ account was Z-up; Adom is a Z-up world, so the bridge flags Y-up (especially on new users)+ so it can be corrected with fusion_set_preference {"modelingOrientation":"zup"}."""+ try:+ import os as _os+ uid = user_id or _FUSION_USER.get("userId")+ if not uid:+ return None+ path = _os.path.join(_os.environ.get("APPDATA", ""), "Autodesk",+ "Neutron Platform", "Options", uid, "NGlobalOptions.xml")+ if not _os.path.exists(path):+ return None+ import re as _re+ m = _re.search(r'sceneUpOptionId[^>]*Value="(\d)"',+ open(path, "r", encoding="utf-8", errors="ignore").read())+ return {"0": "yup", "1": "zup"}.get(m.group(1)) if m else None+ except Exception:+ return None++ def _addin_round_trip_ready(tries: int = 2, gap: float = 1.5) -> bool: """Can the add-in actually EXECUTE a command, twice in a row? @@ -1830,6 +1856,11 @@ def _handle_fusion_readiness(fusion_info: dict, args: dict) -> dict: pass elif not running and _FUSION_USER: _FUSION_USER.clear() # account switch shows the NEW identity after restart+ _orient = _fusion_modeling_orientation()+ _orient_note = ("" if _orient != "yup" else+ " ⚠ Default Modeling Orientation is Y-UP on this account, but Adom is a "+ "Z-UP environment (a fresh Autodesk account defaults to Y-up). Set it with "+ "fusion_set_preference {\"modelingOrientation\":\"zup\"} - no restart needed.") result = { "success": True, "hostApp": "Fusion 360",@@ -1846,9 +1877,13 @@ def _handle_fusion_readiness(fusion_info: dict, args: dict) -> dict: # first ready poll, so readiness never waits on a modeling script) "fusionUser": ({"user": _FUSION_USER.get("user"), "userId": _FUSION_USER.get("userId")} if _FUSION_USER.get("user") else None),+ # ADOM IS A Z-UP WORLD (John, 2026-08-23): a fresh Autodesk account defaults to Y-up,+ # so surface the current account's Default Modeling Orientation and flag Y-up - most+ # relevant on a NEW user. Disk read, no add-in, never disrupts a driven session.+ "modelingOrientation": _orient, "bridgeVersion": BRIDGE_VERSION, **stale_info,- "_hint": (hint + " NOTE: " + result_note) if result_note else hint,+ "_hint": (((hint + " NOTE: " + result_note) if result_note else hint) + _orient_note), } # MEASURED PROGRESS WHILE LAUNCHING (issue #32): the poll verb must render the same # bar the launch verb started, or the caller is back to a spinner with no end.
skills/fusion-onboarding/SKILL.md+15@@ -145,3 +145,18 @@ charged). `API/AddIns`, but re-verify with `fusion_addin_status`; re-run `install_addin` if it drifted. - Verify the current installer URL / flags if Autodesk changes them (Sources: silentinstallhq, Autodesk deploy docs).++## Step 5.5 — Set Z-UP (Adom standard) on a NEW account++A FRESH Autodesk account comes up with **Y-up** as the Default Modeling Orientation (Fusion's+factory default), but **Adom is a Z-up environment** (John, 2026-08-23: jlauer12's new account+defaulted to Y-up while his other account was Z-up). Check and fix it as part of onboarding:++- `fusion_readiness` now reports **`modelingOrientation`** ("yup"/"zup") and flags Y-up in its+ `_hint` (read straight off Fusion's local options file - no add-in, never disturbs a running+ session, so you can check it even mid-driving).+- If it is `yup`, set it: **`fusion_set_preference {"modelingOrientation":"zup"}`** - a live+ preference change, applies immediately, no restart. (Do NOT hand-edit the options XML while+ Fusion is RUNNING - it can overwrite on exit; the verb goes through Fusion's own API.)+- Do this for every new user by default: a Z-up world where a part imports Y-up is the kind of+ silent-wrong that wastes an EE's afternoon.