Les macros vous permettent de créer des conditions et d'évaluer des équations mathématiques dans les champs de G-code personnalisé.
Constructs
Évaluation conditionnelle
Évaluation d'expression
Syntaxe d'espace réservé pour la compatibilité
ou
Dans les deux constructs, les variables de configuration PrusaSlicer sont accessibles par leurs noms
et les éléments des variables vectorielles sont accessibles en utilisant des accolades
se réfère à la température du première extrudeur.
Les tableaux multidimensionnels ne sont actuellement accessibles que sous la forme d'une simple variable sous forme de tableau produisant une chaîne de caractères (par exemple, si extruder_variable[1] produit la chaîne de caractères [n, 0] - peut être affiché dans le G-code mais ne peut pas être utilisé dans les opérations arithmétiques).
Les chaînes de caractères sont identifiées par des guillemets doubles et les expressions régulières par des barres obliques . Les chaînes de caractères ne sont pas analysées de manière récursive, c'est-à-dire que des accolades et des crochets à l'intérieur des chaînes de caractères apparaîtront dans la sortie. Cela permet des constructs tels que
Opérateurs
Les opérateurs suivants sont autorisés :
- Comparaison
- Exemple :
- Logique booléenne ou équivalent,
- Exemple :
- Arithmétique
- Exemple : (Notez que first_layer_temperature est un tableau)
- Opérateur ternaire ( Cela doit être placé entre parenthèses pour fonctionner.
- Exemple : Cette expression règle la température de l'extrudeur à 230 ou 200 selon que la première couche doit être supérieure à 220°.
- Correspondance d'expressions régulières (
- Les expressions régulières sont placées entre des barres obliques /
- Exemple :
Fonctions
Minimum
Maximum
Conversion en entier
Arrondir à un entier
Arrondi/remplissage avec des espaces : arrondit la partie fractionnaire à num_decimals chiffres (en ajoutant des zéros à la fin si nécessaire), puis remplit à gauche avec des espaces afin que le nombre ait num_digits caractères au total (y compris un point décimal s'il est présent). Le dernier argument peut être omis, par défaut à zéro.
Arrondi/remplissage avec des zéros : comme ci-dessus, uniquement à gauche rempli de zéros
Variables (espaces réservés)
Vous pouvez utiliser des variables dans les scripts personnalisés et dans le modèle de nom de fichier de sortie.
Allez voir la Liste de toutes les variables de PrusaSlicer., regroupées en fonction de leur portée.
Variables scalaires
Ces valeurs sont scalaires et peuvent être directement référencées.
- printer_notes (chaîne)
- layer_z (uniquement disponible dans le GCode de changement de couche)
- layer_num (uniquement disponible dans le GCode de changement de couche)
- toolchange_z (disponible dans le G-Code de changement d'outil personnalisé depuis la version 2.4.0)
Certaines variables sont définies par des formules complexes. Par exemple, si perimeter_extrusion_width est laissée à zéro, elle prend la valeur d'extrusion_width, si non nulle, une valeur par défaut de perimeter_extrusion_width est calculée pour la layer_height courante. Ces substitutions ne sont effectuées que pour les expressions de la nouvelle syntaxe (entre accolades {}), tandis que les expressions écrites à l'aide de l'ancienne syntaxe d'espace réservé (entre accolades []) sont interprétées textuellement.
Vecteurs (variables sous forme de tableau)
Ces variables sont des tableaux et doivent être accédées en tant que telles (par exemple, temperature[0]).
- temperature
- first_layer_temperature
- bed_temperature (notez qu'il s'agit d'un vecteur, même si une seule valeur a du sens : bed_temperature[0])
- first_layer_bed_temperature (comme ci-dessus !)
Tableaux multidimensionnels
Ces variables ne sont accessibles que sous forme de tableaux simples et ne peuvent pas être utilisées dans les expressions arithmétiques.
- extruder_offset
- bed_shape
Exemples
Tour de température
Vous pouvez utiliser le G-code personnalisé "Avant changement de couche" pour diminuer lentement la température de la hotend. Tout d'abord, on peut utiliser l'expression if/elseif/else :
Le même résultat peut être obtenu par une expression if/else/endif plus courte avec une interpolation linéaire :
Ou on peut utiliser l'opérateur ternaire :
Chauffe plus rapide avec des chauffages de plateau faibles avant l'impression
Si vous avez un plateau qui met beaucoup de temps à atteindre sa température, vous pouvez réduire un peu le temps d'attente en utilisant le "G-code de début" pour chauffer le plateau à la température cible moins 5 degrés, puis en commençant à chauffer la hotend pendant que le plateau continue de chauffer jusqu'à la valeur cible :