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.
master
"""Session transport: explicitly route this demonstration to ConfRoomROG."""
import os,json,subprocess
from pathlib import Path
P=Path(__file__).resolve().parent
TARGET=os.environ['FUSION_DEMO_TARGET']
RELAY=os.environ['ADOM_API']
def call(verb,args):
cp=subprocess.run(['adom-bridge','--target',TARGET,'--ai-thread','Fusion trace routing',verb,json.dumps(args)],env={**os.environ,'ADOM_API':RELAY},capture_output=True,text=True,timeout=190)
r=json.loads(cp.stdout)
if isinstance(r.get('output'),str):
try:
x=json.loads(r['output']);r.update({k:v for k,v in x.items() if k not in r})
except ValueError:pass
if isinstance(r.get('data'),dict):
for k,v in r['data'].items():r.setdefault(k,v)
return {k:v for k,v in r.items() if k!='output'}
def execute(doc,body):
helper=(P.parents[3]/'rust/bridge/src/routing_script.py').read_text()
prefix='import adsk.core, adsk.fusion\nfrom pathlib import Path\nimport json\ntarget=next(d for d in app.documents if d.name=='+repr(doc)+')\ntarget.activate()\nadsk.doEvents()\nexec('+repr(helper)+')\neditor_identity(app,'+repr(doc)+')\n'
r=call('fusion_run_modeling_script',{'script':prefix+body,'expectDocument':doc})
if not r.get('success'):raise RuntimeError(str(r))
return r.get('result')
if __name__=='__main__':print(json.dumps(call('fusion_get_app_state',{}),indent=2))