3D nyomtatás: boxgyár

Kinyomtattam egyet, aztán rájöttem, hogy ez a fültisztító pálcikáknak is jó lenne… meg más méretben még egy csomó mindennek, úgyhogy a parametrikus Fusion 360 designnak hála, gyorsan csináltam is két másikat: Innentől nincs messze a megalomán állat fázis, amikor csillió méretű dobozt akarsz azonnal. Persze minden codervérű lélekben azonnal behúz az utálkozás trigger, amint egynél többször kell neki a “beállítom a magasság paramétert + elindítom az STL exportálást” workflowt végrehajtania. Szerencsére a Fusion 360-hoz van cuki API, onnan meg már csak egyetlen lépés, hogy egy script exportálja helyettünk a csitrillió méretű dobozt STL-be. A design hierarchia egyszerű, mint egy faék: egy komponensben lakik két body, az egyik a doboz, a másik a kupak: Erre simán lehet lőni mondjuk Pythonnal:

import adsk.core, adsk.fusion, adsk.cam, traceback
def dumpSTL(design, body, filename):
    exportMgr = design.exportManager
    stlExportOptions = exportMgr.createSTLExportOptions(body, filename)
    stlExportOptions.meshRefinement = adsk.fusion.MeshRefinementSettings.MeshRefinementHigh
    stlExportOptions.sendToPrintUtility = False
    exportMgr.execute(stlExportOptions)
def run(context):
    ui = None
    try:
        app = adsk.core.Application.get()
        ui = app.userInterface
        design = adsk.fusion.Design.cast(app.activeProduct)
        folder = '/Users/fns/Desktop/'
        parentCompName = 'stick box'
        # get parameters
        h_box = design.userParameters.itemByName('h_box')
        w_box = design.userParameters.itemByName('w_box')
        # locate our component
        allComp = design.allComponents
        for comp in allComp:
            if comp.name == parentCompName:
                bodies = comp.bRepBodies
                for body in bodies:
                    if body.name == "box":
                        body_box = body
                    else:
                        body_cap = body
                # dump cap
                filename = folder + body_cap.parentComponent.name + " - " + body_cap.name + " " + w_box.expression + '.stl'
                dumpSTL(design, body_cap, filename)
                # dump all boxes
                for h in range(10, 100, 10):
                    h_box.expression = str(h)
                    adsk.doEvents()
                    filename = folder + body_box.parentComponent.name + " - " + body_box.name + " " + w_box.expression + ' - ' + h_box.expression + '.stl'
                    dumpSTL(design, body_box, filename)
        ui.messageBox('Finished.', 'exportBoxes')
    except:
        if ui:
            ui.messageBox('Failed:\n{}'.format(traceback.format_exc()), 'exportBoxes')
A Fusion 360 CAD file-t a Python scripttel és a generált STL-ekkel együtt szedheted a youmagine.com-ról.]]>

Leave a Reply

Your email address will not be published. Required fields are marked *