Autodesk Fusion 360

#Author-Bernhard Kiesbauer
#Description-
 
import adsk.core, adsk.fusion, adsk.cam, traceback
import tempfile
import os
import subprocess
import threading
 
def startAndWait(cmd, filelist):
    p = subprocess.Popen(cmd)
    p.wait()
    for f in filelist:
        os.unlink(f)
 
 
def run(context):
    ui = None    
    silcerCmd = [r"\\printer\data\Slic3rPE-1.41.2\slic3r.exe", "--datadir",r"\\printer\data\slic3r-config"]
    try:
        app = adsk.core.Application.get()
        ui  = app.userInterface
        f = tempfile.NamedTemporaryFile(delete=False)
        f.close()
        filename = f.name
        filelist = exportCompBodyAsSTL(filename) 
 
        for f in filelist:
            silcerCmd.append(f)
 
        t = threading.Thread(target=startAndWait, args=(silcerCmd, filelist))
        t.start()
 
    except:
        if ui:
            ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
 
def exportCompBodyAsSTL(destFilename):
    app = adsk.core.Application.get()
    ui = app.userInterface
    rv = []
 
    product = app.activeProduct
    design = adsk.fusion.Design.cast(product)
    exportMgr = design.exportManager 
 
    i=0
    for comp in design.allComponents:                        
        #for body in comp.bRepBodies:
        fileName = "{}_{}.stl".format(destFilename, i)
        #print(comp.name)
        #print(comp.classType())
 
        try:
            # create stl exportOptions
            stlExportOptions = exportMgr.createSTLExportOptions(comp, fileName)                
            stlExportOptions.sendToPrintUtility = False
            stlExportOptions.meshRefinement = adsk.fusion.MeshRefinementSettings.MeshRefinementHigh
            exportMgr.execute(stlExportOptions)
            rv.append(fileName) 
            i+=1
        except:
            if ui:
                ui.messageBox('Failed:\n{}'.format(traceback.format_exc())) 
 
    return rv