1 / 1
ISO 7380 Hex Socket Button Screw Gridfinity Printable Label — image 1

ISO 7380 Hex Socket Button Screw Gridfinity Printable Label

Order a print of this model

We calculate the final price from your selected file. You review and accept it before payment.

Saved on this device.

ISO 7380 Hex Socket Button Screw Label for Gridfinity Boxes

Rating
5 / 5
Likes
25
Downloads
160
Makes
1
Views
558
Reviews
1

Updated at source:

Model information

Category
Organizers
License
Creative Commons — Attribution — Noncommercial

Thanks to @Eistee_158202 for providing the resources that allowed me to generate the labels. For more info have a look at: https://www.printables.com/model/676564-gridfinity-bin-labels-hexagon-socket-head-cap-scre

I uploaded only a few for preview M2-M4, for more options have a look at the zip files provided.

For M2.5 the parametric text floating precision has to be changed to 1, so it has to be run separatly.

Code

# Author-
# @Eistee_158202

import adsk.core import adsk.fusion import adsk.cam import traceback import os import shutil

def run(context): ui = None try: app = adsk.core.Application.get() ui = app.userInterface design = adsk.fusion.Design.cast(app.activeProduct)

    # Get the root component of the active design
    rootComp = design.rootComponent

    # Specify the folder to write out the results.
    folder = 'C:/Temp/ISO_7380_button_hex_label'

    # Get the parameters named "bolt_length_l" and "Box_width" which are defined in my parametric Fusion360 model and change them.
    MParam = design.allParameters.itemByName('M')
    bolt_lengthParam = design.allParameters.itemByName(
        'bolt_length_l')  # Parameter in Fusion360
    Box_widthParam = design.allParameters.itemByName(
        'Box_width')  # Parameter in Fusion360
    cnt = 1  # counter for figures
    M = 3  # Modul of bolt
    Box_width = 1  # width of the label
    for M in (2, 3, 4, 5, 6, 8, 10):  # list of Moduls to be looped through
        for Box_width in (1, 2):  # make the labels in different width
            for length in range(4, 200):  # loop over length of bolt from 4 to 200
                if length % 2 == 0 or length % 5 == 0:  # only do bolt length if it is dividable by 2 or 5
                    Box_widthParam.expression = str(
                        Box_width)  # make this a string
                    MParam.expression = str(M)  # make this a string
                    bolt_lengthParam.expression = str(
                        length)  # make this a string
                    app.fireCustomEvent(
                        'thomasa88_ParametricText_Ext_Update')
                    adsk.doEvents()
                    adsk.doEvents()    # Don't know why, but it works only stable if you call it twice
                    # Construct the output filename.
                    newfolder_M = folder + "/" + "M" + str(M)
                    newfolder_width = newfolder_M + \
                        '/' + str(Box_width) + '_width'
                    # make a new folder
                    os.makedirs(newfolder_M, exist_ok=True)
                    # make a new folder
                    os.makedirs(newfolder_width, exist_ok=True)
                    variantname = str(Box_width) + 'width_M' + \
                        str(M) + 'x' + str(length)
                    filename = newfolder_width + '/' + variantname + '.stl'

                    # Save the file as STL.
                    exportMgr = adsk.fusion.ExportManager.cast(
                        design.exportManager)
                    stlOptions = exportMgr.createSTLExportOptions(rootComp)
                    stlOptions.meshRefinement = adsk.fusion.MeshRefinementSettings.MeshRefinementMedium
                    stlOptions.filename = filename

                    # Screenshot the variant and save to file
                    screenshotfilename = folder + '/' + \
                        str(f"{cnt:02d}") + "_" + variantname + '.jpg'
                    app.activeViewport.saveAsImageFile(
                        screenshotfilename, 1600, 1000)
                    cnt = cnt+1

                    exportMgr.execute(stlOptions)
            zip_file_path = folder + '/' + \
                str(Box_width) + 'width_M' + \
                str(M)  # zip folder to archive
            shutil.make_archive(zip_file_path, 'zip', newfolder_width)

    ui.messageBox('Finished.')
except:
    if ui:
        ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))