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.31: tour idle gate
4 files changed
+22−6
BRIDGE_VERSION+1−1@@ -1 +1 @@-1.9.30+1.9.31
adom-bridge-fusion-manifest.json+4−4@@ -1,10 +1,10 @@ { "manifest_version": 1, "name": "fusion360",- "version": "1.9.30",- "url": "https://wiki.adom.inc/download/adom/fusion-bridge/1.9.30/adom-bridge-fusion-v1.9.30.zip",- "sha256": "7ab9fde1f6ca13dbb6c792460d5e5346b4c54bbe5dd54532936bc7078e52feb4",- "size": 380901,+ "version": "1.9.31",+ "url": "https://wiki.adom.inc/download/adom/fusion-bridge/1.9.31/adom-bridge-fusion-v1.9.31.zip",+ "sha256": "747295223d124465a0a477f6f3e01b8ceaedd9e0e16bae78fba1cf4ab246db52",+ "size": 381112, "verbPrefixes": [ "fusion_" ],
bridge.json+1−1@@ -2,7 +2,7 @@ "manifest_version": 1, "name": "fusion360", "displayName": "Autodesk Fusion 360",- "version": "1.9.30",+ "version": "1.9.31", "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+16@@ -5663,6 +5663,20 @@ def _orchestrate_demo_tour(args: dict) -> dict: with _DEMO_TOURS_LOCK: _DEMO_TOURS[demo_id] = state + def _wait_idle(max_s=180):+ """Fusion's main thread keeps grinding long ops after our proxy timeout returns+ (Create3DPackage on a cold session ran 120s+ and broke the next step's open,+ issue #30 cold-start validation). Gate on app-state responding again."""+ deadline = time.time() + max_s+ while time.time() < deadline:+ try:+ if _proxy_to_addin("get_app_state", {}, timeout=8).get("success"):+ return True+ except Exception:+ pass+ time.sleep(5)+ return False+ def _snap(label): # {title, image} is the ab web-control harness's gallery item contract (issue #29 # reply, harness live in ab 2.0.39) - label kept as an alias.@@ -5738,6 +5752,7 @@ def _orchestrate_demo_tour(args: dict) -> dict: state.setdefault("warnings", []).append("3d-package step skipped: " + str(cp.get("error"))) state.setdefault("failedSteps", []).append(key) elif key == "make-project":+ _wait_idle() r = _orchestrate_make_test_project({"libraryPath": state["sampleLbr"]}) if r.get("success"): time.sleep(3)@@ -5747,6 +5762,7 @@ def _orchestrate_demo_tour(args: dict) -> dict: state.setdefault("warnings", []).append("make-project: " + str(r.get("error"))[:120]) state["designOpenFailed"] = True elif key == "open-design":+ _wait_idle() dispatch_command("open_cloud_file", {"fileName": query, "wait": False}) deadline = time.time() + 170 design_open = False