3D nyomtatás: boxgyár

A dolog onnan indult, hogy meguntam visszapakolni a kis szar zacskójába a fogselymes műanyag fogpiszkálókat, amik a fürdőszobai polcon laktak. Terveztem is nekik gyorsan egy kényelmes méretű boxot, rövid, ám annál brutálisabb menetű kupakkal:

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 *

This site uses Akismet to reduce spam. Learn how your comment data is processed.