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
v1.9.18: honest tour design side
4 files changed
+34−10
BRIDGE_VERSION+1−1@@ -1 +1 @@-1.9.15+1.9.18
adom-bridge-fusion-manifest.json+4−4@@ -1,10 +1,10 @@ { "manifest_version": 1, "name": "fusion360",- "version": "1.9.15",- "url": "https://wiki.adom.inc/download/adom/fusion-bridge/1.9.15/adom-bridge-fusion-v1.9.15.zip",- "sha256": "dc52de09c7277e17ee595100112e0defc9796cc0c348c534d7575820a54ee7cd",- "size": 360197,+ "version": "1.9.18",+ "url": "https://wiki.adom.inc/download/adom/fusion-bridge/1.9.18/adom-bridge-fusion-v1.9.18.zip",+ "sha256": "1eaa480c6c410aa41143e01dd2edcb580093a38dcbf1d093ff2c70632c95e558",+ "size": 360521, "verbPrefixes": [ "fusion_" ],
bridge.json+1−1@@ -2,7 +2,7 @@ "manifest_version": 1, "name": "fusion360", "displayName": "Autodesk Fusion 360",- "version": "1.9.15",+ "version": "1.9.18", "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.",
server.py+28−4@@ -5679,22 +5679,46 @@ def _orchestrate_demo_tour(args: dict) -> dict: _dismiss_dialogs_bg() except Exception: pass+ # Close the Package3D generator doc so it cannot linger as the+ # active view and pollute the design-side screenshots (2026-08-15:+ # shots 6-9 were four copies of this screen).+ _proxy_to_addin("close_document", {"save": False}, timeout=30)+ time.sleep(1) else: state.setdefault("warnings", []).append("3d-package step skipped: " + str(cp.get("error"))) state.setdefault("failedSteps", []).append(key) elif key == "open-design":- r = dispatch_command("open_cloud_file", {"query": query, "wait": False})+ dispatch_command("open_cloud_file", {"fileName": query, "wait": False}) deadline = time.time() + 170+ design_open = False while time.time() < deadline: st = _proxy_to_addin("get_app_state", {}, timeout=10) if query.lower() in str((st.get("data") or {}).get("activeDocument", "")).lower():+ design_open = True break time.sleep(5)- _snap(label)+ if design_open:+ time.sleep(3)+ _snap(label)+ else:+ # A screenshot of NOT-the-design is worse than an honest failure:+ # record it and let the dependent view steps skip themselves.+ state.setdefault("failedSteps", []).append(key)+ state.setdefault("warnings", []).append(+ "open-design: %r never became the active document within 170s" % query)+ state["designOpenFailed"] = True elif key in ("schematic", "2d-board", "3d-board"):+ if state.get("designOpenFailed"):+ state.setdefault("failedSteps", []).append(key)+ continue cmd = {"schematic": "show_schematic", "2d-board": "show_2d_board", "3d-board": "show_3d_board"}[key]- dispatch_command(cmd, {})- _snap(label)+ r = dispatch_command(cmd, {})+ if r.get("success"):+ time.sleep(2)+ _snap(label)+ else:+ state.setdefault("failedSteps", []).append(key)+ state.setdefault("warnings", []).append("%s: %s" % (key, str(r.get("error"))[:120])) done_est += dur state.update(percent=int(100 * done_est / est), elapsedSec=int(time.time() - state["started"]))