Macra umožňují vytvářet podmínky a vyhodnocovat matematické rovnice v sekcích vlastního G-codu.
{if <condition_1>}<GCode_condition_1>[][{else}<GCode_else>]{endif}
{<expression>}
[variable]
nebo [variable_index]
Uvnitř každého konstruktu mohou být konfigurační proměnné PrusaSliceru dostupné prostřednictvím jejich jmen
layer_z
a elementy vektorových proměnných mohou být zpřístupněny použitím hranatých závorek
teplota[0]
odkazuje na teplotu prvního extruderu.
Multidimenzionální vektory mohou být přístupné pouze jako jednoduché vektorové proměnné odkazující na řetězec (např. když extruder_variable[1] ukazující na hodnotu řetězce [n,0] -- může být odeslán v G-code ale nemůže být použit v aritmetických operacích).
Řetězce jsou identifikované dvojitými uvozovkami
"řetězec"
a pravidelné výrazy lomítky/regex/
Řetězce nejsou parsované rekurzívně tj. na výstupu se objeví složené i hranaté závorky uvnitř řetězců. To umožňuje konstrukty jako {"[text v hranatých závorkách]"}
Povoleny jsou následující operátory:
<, >, ==, !=, <>, <=, >=
{if layer_height == 0.2};Proveď něco{endif}
and, or, not
nebo ekvivalentně, &&, ||, !
{if layer_height > 0.1 and first_layer_temperature[0] > 220};Proveď něco{endif}
+, -, , /
M104 S{first_layer_temperature[0] * 2/3}
(Všimněte si, že first_layer_temperature je vektor)(<podmínka>? <podmínka_pravda>:<podmínka_nepravda>)
Aby to fungovalo, musí to být uzavřené v závorkách.
M104 S{(first_layer_temperature[0]>220 ? 230 : 200)}
Tento výraz nastaví teplotu extruderu na 230 nebo na 200 v závislosti na tom zda první vrstva má být nad 220°.=~ (shoda), !~ (neshoda)
{if printer_notes=~/./};Tiskárna je Prusa{endif}
Minimum
min(a,b)
Maximum
max(a,b)
Zaokrouhlení na celé číslo
int(a)
Zaokrouhlení / doplnění mezerami: zaokrouhlí zlomkovou část na num_decimals číslice (v případě potřeby přidá na konec nuly) a poté doplní mezerami tak, aby číslo mělo stejný počet znaků num_digits (včetně desetinné tečky, pokud je přítomna). Poslední příkaz lze vynechat, výchozí hodnota je nula.
digits(a, num_digits, num_decimals=0)
Zaokrouhlení / doplnění nulami: stejné jako výše, pouze ponechané vyplněné nulami.
zdigits(a, num_digits, num_decimals=0)
Můžete použít proměnné uvnitř skriptů a v šabloně názvu výstupního souboru.
Zkontrolujte Seznam všech zástupných symbolů PrusaSlicer, sdružené do skupin podle jejich zaměření
Tyto hodnoty jsou skalární a může být na ně přímý odkaz.
Některé proměnné jsou definovány složitými vzorci. Například perimeter_extrusion_width, pokud je ponechán na nule, nabývá hodnoty extrusion_width, pokud není nulová, jinak se pro aktuální perimeter_extrusion_width vypočítá výchozí layer_height. Tyto záměny se provádějí pouze pro výrazy nové syntaxe (uzavřené ve složených závorkách {}), zatímco výrazy zapsané pomocí staré syntaxe zástupných znaků (uzavřené v hranatých závorkách []) se interpretují doslovně.
Tyto proměnné jsou polemi a musí být přístupné jako (např. temperature[0]).
Tyto proměnné mohou být přístupné pouze jako jednoduché vektory a nemohou být použité v aritmetických výrazech.
Příklady
"Před změnou vrstvy" můžete použít uživatelský G-code k pomalému snižování teploty trysky. Jako první lze použít výraz if/elseif/else:
{if layer_z < 10}M104 S265
{elsif layer_z < 17}M104 S260
{elsif layer_z < 24}M104 S255
{elsif layer_z < 31}M104 S250
{elsif layer_z < 38}M104 S245
{elsif layer_z < 45}M104 S240
{endif}
Stejného výsledku lze dosáhnout kratším výrazem if/else/endif spolu s lineární interpolací:
M104 S{if layer_z < 10}265{elsif layer_z > 45}240{else} 265+(240-265)*(layer_z-10.0)/(45-10)}{endif}
Nebo lze také použít ternární operátor:
M104 S{((layer_z < 10) ? 265 : ((layer_z > 45) ? 240 : 265+(240-265)*(layer_z-10.0)/(45-10))}
Pokud máte podložku, které trvá velmi dlouho, než se zahřeje na požadovanou teplotu, můžete si čekání trochu zkrátit tím, že pomocí "Start G-codu" zahřejete podložku na cílovou teplotu minus 5 stupňů a pak začnete zahřívat hot end, zatímco podložka pokračuje v zahřívání na cílovou hodnotu:
M190 S{first_layer_bed_temperature[0] - 5} ;počkejte na teplotu podložky - 5 M140 S[first_layer_bed_temperature] ; pokračovat v zahřívání podložky [<variable>] syntax
M109 S[first_layer_temperature] ; počkejte na teplotu trysky
Pokud nemůžete najít odpověď na vaši otázku, projděte si naše další materiály na webu.
A pokud nenajdete odpověď, pošlete nám zprávu na [email protected] nebo přes tlačítko níže.