ISO 7380 Hex Socket Button Screw Gridfinity Printable Label
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
- Source
- Printables
- 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_158202import 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()))