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
rust/bridge/src/lbr_use.py+3−2@@ -97,11 +97,12 @@ def use_library(app, path, removed=None): import sys as _sys # two in-use libraries with one name at different paths make the next ADD open Fusion's Select Library # picker, a modal that blocks it, and a library can't be taken out of use from a command. So the second- # is refused. The record lives in this Fusion process and sees only what the bridge loaded.+ # is refused. The record lives in this Fusion process and sees only what the bridge loaded since it+ # started; Fusion's own list survives a restart, so a conflict from an earlier session still gets the picker. used = _sys.__dict__.setdefault('_adom_lbr_used', {}) full, name = _P(path).as_posix(), _P(path).stem.lower() if used.get(name, full).lower() != full.lower():- raise RuntimeError('library_name_in_use: a library named %s is already in use from %s, and loading %s too would make Fusion ask which one to take (a dialog that blocks it). Use that path, give this file another name, or restart Fusion (fusion_restart_for_addin)' % (_P(path).stem, used[name], full))+ raise RuntimeError('library_name_in_use: a library named %s is already in use from %s, and loading %s too would make Fusion ask which one to take (a dialog that blocks it). Use that path or give this file another name: restarting Fusion does not clear it, as its in-use list survives a restart' % (_P(path).stem, used[name], full)) try: changed = normalize_lbr(path, removed) except PermissionError:
tests/sch_drill.py+1−1@@ -154,7 +154,7 @@ step('sch_move_region', 'fusion_sch_move_region', {'box': [a0[0] - 15, a0[1] - 6 step('sch_edit rotate', 'fusion_sch_edit', {'edits': [{'designator': 'R7', 'action': 'rotate', 'degrees': 90}]}, lambda _r: expect((parts()['R7'].get('gates') or [{}])[0].get('rotation') in (90, 90.0), 'R7 not turned')) step('sch_reset_fields', 'fusion_sch_reset_fields', {'references': ['R7']},- lambda r: expect(r.get('mutated') is not None and (r.get('reset') or r.get('references') or r.get('commands') or r.get('count')), 'answered with nothing reset: %s' % json.dumps({k: r.get(k) for k in ('mutated', 'reset', 'count')})))+ lambda r: expect(r.get('reset') or r.get('untouched'), 'answered with neither reset nor untouched parts: %s' % json.dumps({k: r.get(k) for k in ('mutated', 'reset', 'untouched')}))) step('sch_fix_connectivity dry', 'fusion_sch_fix_connectivity', {}, lambda r: expect(r.get('mutated') is False, 'a dry run changed the sheet'))