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
panel refusal names the editor; battery uses Browser
3 files changed
+5−2
CHANGELOG.md+3@@ -5,6 +5,9 @@ Canonical: https://wiki.adom.inc/adom/fusion-bridge ยท GitHub backup: `adom-inc/ ## 1.13.38 (unreleased) +- `fusion_panel`: a panel the editor in front does not have is refused with that said (Fusion lists panels per editor;+ the 1.13.37 battery met the 3D design in front, which has no Inspector), and the battery opens Browser.+ - sheetParts carry each part's `description` (its DESCRIPTION or DESC attribute), so fusion_bom's lines and the engine's other schematic checks read it (1.13.37's bom lines had an empty description).
rust/bridge/src/appverbs.rs+1−1@@ -160,7 +160,7 @@ pub fn panel(args: &Value, pass: &dyn Fn(&str, Value) -> Value) -> Value { }; let w = want.to_uppercase(); let Some(title) = titles.iter().find(|t| **t == w).or_else(|| titles.iter().find(|t| t.contains(&w))).cloned() else {- return json!({"success": false, "errorCode": "panel_not_found", "error": format!("Fusion has no panel named {want}"), "panels": titles});+ return json!({"success": false, "errorCode": "panel_not_found", "error": format!("The editor in front has no panel named {want} (Fusion lists panels per editor: Inspector and Display Layers belong to the electronics editors)"), "panels": titles, "_hint": "panels lists the ones this editor has; fusion_show_2d_board or fusion_show_schematic brings an electronics editor forward."}); }; let state = |s: &str| pass("execute_text_command", json!({"command": format!("Panels.ValidateState {} {s}", quoted(&title))}))["success"].as_bool() == Some(true); let already = state("EXPANDED");
tests/run_verb_tests.py+1−1@@ -435,7 +435,7 @@ t("fusion_action_ledger", "daily", {"limit": 5}, {"ok": True}) t("fusion_addin_status", "daily", {}, {"ok": True}) t("fusion_alerts", "daily", {"sinceSec": 300}, {"ok": True, "fields": ["alerts"]}) t("fusion_panel", "daily", {}, {"ok": True, "fields": ["panels"]}, "read-only: Fusion's docked panels (Panels.List)")-t("fusion_panel#inspector", "daily", {"name": "Inspector"}, {"ok": True, "fields": ["panel", "verified"]}, "Panels.Expose then Panels.ValidateState EXPANDED; no foreground")+t("fusion_panel#browser", "daily", {"name": "Browser"}, {"ok": True, "fields": ["panel", "verified"]}, "Panels.Expose then Panels.ValidateState EXPANDED; Browser is in every editor (Inspector only in the electronics ones)") t("fusion_tool_update", "daily", {"action": "check"}, {"ok": True, "fields": ["updateOffered", "auto"]}, "read-only: Fusion's update offer, nothing clicked") t("fusion_export_3d#vrml", "negative", {"format": "vrml", "outputPath": f"{SCRATCH}/board.wrl"}, {"errorCode": "not_supported"}, "a format Fusion has no exporter for is refused by name") t("fusion_export_3d", "daily", dict(B, format="stl", outputPath=f"{SCRATCH}/board-3d.stl"), {"ok": True, "fields": ["path", "bytes"]}, "the design's 3D PCB as STL through the one export_3d verb")