Hello,
I need help!
I want to create identification cards with a unique serial number automatically.
Here is my train of thought:
I create a "model" card with the number 001.
The number is automatically generated via a user parameter and the "parametrictext" extension.
I have created a "loop" script that modifies the parameter value (+1) and exports the part in STL format.
The goal is to automatically create the "002" card, export it, then create the "003" card...
Problem: the parameter value is indeed modified, but the text does not regenerate before exporting!
It seems that the only way to regenerate the text is to manually open the "parameters" window and click OK...
Has anyone done this kind of thing before?
Am I doomed to manually edit the text for the 300 cards? 😢
I'll copy the script I created for you:
import adsk.core, adsk.fusion, adsk.cam, traceback
def run(context😞
ui = None
try:
app = adsk.core.Application.get()
ui = app.userInterface
if not app.activeDocument:
ui.messageBox('Aucun document actif n\'est ouvert.')
return
# Partie 1 : Demander à l'utilisateur le dossier de sortie et le nombre de fois à répéter l'opération
folder_dialog = ui.createFolderDialog()
folder_dialog.title = 'Sélectionner le dossier de sortie'
dialog_result = folder_dialog.showDialog()
if dialog_result != adsk.core.DialogResults.DialogOK:
ui.messageBox('Opération annulée.')
return
output_folder = folder_dialog.folder
repeat_count = int(ui.inputBox("Entrez le nombre de fois à répéter l'opération :")[0])
# Partie 2 : Boucle pour exécuter l'opération spécifiée
for i in range(repeat_count😞
design = app.activeProduct
# Vérifier si le document est un document de conception Fusion 360
if not isinstance(design, adsk.fusion.Design):
ui.messageBox('Ce script ne peut être exécuté que dans un document de conception Fusion 360.')
return
# 1) Récupérer la valeur du paramètre utilisateur "Num"
VNum = design.allParameters.itemByName('Num').value
# 2) Exporter le document au format "Stl" dans le dossier spécifié
filename = output_folder + '/bague' + str(VNum) + '.stl'
exportMgr = adsk.fusion.ExportManager.cast(design.exportManager)
stlOptions = exportMgr.createSTLExportOptions(design.rootComponent)
stlOptions.meshRefinement = adsk.fusion.MeshRefinementSettings.MeshRefinementMedium
stlOptions.filename = filename
exportMgr.execute(stlOptions)
# 3) Augmenter la valeur de "Num" de 1
# Récupérer le paramètre utilisateur "Num" s'il existe
user_param = design.userParameters.itemByName('Num')
if user_param:
# Modifier la valeur du paramètre
new_value = VNum + 1 # Nouvelle valeur du paramètre
user_param.value = new_value
ui.messageBox('La valeur du paramètre "Num" a été modifiée avec succès.')
# Message de fin une fois la boucle terminée
ui.messageBox('Script terminé.')
except Exception as e:
if ui:
ui.messageBox('Failed:\n{}'.format(traceback.format_exc()))
# Message de fin en cas d'erreur
ui.messageBox('Script terminé avec des erreurs.')
run(adsk.fusion.Design().userParameters.itemByName('UserParams')) # Exécuter la fonction
Thank you in advance for your help!