Bonjour,
j’ai réalisé un objet avec Part Design et les variables stockées dans Spreadsheet.
Je voudrais simplement réaliser des variations en modifiant 2 valeurs et en exportant les objets obtenus au format stl, sous la forme mon_fichier_var1<val var1>_var2<val var2>.stl
(je connais la programmation et python, mais n’ai jamais codé dans Freecad)
Merci de m’indiquer par quelle doc commencer (ou un tuto en relation avec mon besoin, si vous en connaissez un)
[Résolu] Génerer des déclinaisons d’export STL par script
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
Be nice to others! Read the FreeCAD code of conduct!
-
- Posts: 6
- Joined: Mon Sep 27, 2021 12:07 pm
- Location: Guadeloupe
[Résolu] Génerer des déclinaisons d’export STL par script
Last edited by mr_hackquarium on Thu Sep 30, 2021 11:20 pm, edited 1 time in total.
-
- Posts: 6
- Joined: Mon Sep 27, 2021 12:07 pm
- Location: Guadeloupe
Re: Génerer des déclinaisons d’export STL par script
J’ai écrit une macro qui fonctionne, par contre je bloque encore sur 2 points :
1. Comment utiliser un float dans une cellule du tableur ? (j’ai l’erreur "<Exception> type must be int, not float")
ou bien, comment changer d’unité ? (je peux passer une valeur avec virgule en GUI, mais pas dans ma macro)
2. Les recompute() ou les modifs de la spreadsheet ne sont pas pris en compte, du coup, tous les objets exportés sont identiques !
Voilà ma macro :
ligne avec erreur (float)
ligne sans erreur (integer), mais qui ne me convient pas
Merci
1. Comment utiliser un float dans une cellule du tableur ? (j’ai l’erreur "<Exception> type must be int, not float")
ou bien, comment changer d’unité ? (je peux passer une valeur avec virgule en GUI, mais pas dans ma macro)
2. Les recompute() ou les modifs de la spreadsheet ne sont pas pris en compte, du coup, tous les objets exportés sont identiques !
Voilà ma macro :
Code: Select all
import FreeCAD
import PartDesign
import Spreadsheet
import PartDesignGui
glass_thickness_values = [3, 4, 5, 6, 7]
adjust = 0.5
top_water_space_values = [5, 10, 15, 20, 25, 30, 35, 40, 45, 50]
DOC = FreeCAD.ActiveDocument
SHEET = DOC.Spreadsheet
for gt in glass_thickness_values:
#SHEET.B1 = gt + adjust
SHEET.B1 = gt
for tws in top_water_space_values:
SHEET.B8 = tws
SHEET.recompute()
DOC.recompute()
stl_file_name = "micro_overflow_v1_glass{}_space{}.stl".format(gt, tws)
DOC.Objects[28].Shape.exportStl(stl_file_name)
Code: Select all
SHEET.B1 = gt + adjust
Code: Select all
SHEET.B1 = gt
-
- Posts: 6
- Joined: Mon Sep 27, 2021 12:07 pm
- Location: Guadeloupe
Re: Génerer des déclinaisons d’export STL par script
Sur les conseils de The Markster, j’ai utilisé la méthode set() pour changer les variables dans le Spreadsheet
Cette méthode attend un string (donc le float est passé) et est bien pris en compte par les appels à recompute()
La macro fait donc exactement ce que je voulais
\o/
Cette méthode attend un string (donc le float est passé) et est bien pris en compte par les appels à recompute()
La macro fait donc exactement ce que je voulais
Code: Select all
import FreeCAD
import PartDesign
import Spreadsheet
import PartDesignGui
glass_thickness_values = [3, 4, 5, 6, 7]
adjust = 0.5
top_water_space_values = [5, 10, 15, 20, 25, 30, 35, 40, 45, 50]
DOC = FreeCAD.ActiveDocument
SHEET = DOC.Spreadsheet
for gt in glass_thickness_values:
SHEET.set("B1", str(gt + adjust))
for tws in top_water_space_values:
SHEET.set("B8", str(tws))
SHEET.recompute()
DOC.recompute()
stl_file_name = "micro_overflow_v1_glass{}_space{}.stl".format(gt, tws)
DOC.Objects[28].Shape.exportStl(stl_file_name)
Re: [Résolu] Génerer des déclinaisons d’export STL par script
merci pour ton retour. étonnant qu'il faille passer via une fonction string.
Re: [Résolu] Génerer des déclinaisons d’export STL par script
C'est plus facile de passer par une chaîne de caractère que par App.Units.Quantity
L'accès de la forme
Code: Select all
SHEET.B1