Makra pozwalają na tworzenie warunków i obliczenia matematyczne w polach niestandardowego kodu G-code .
Konstrukty
Ewaluacja warunkowa
Ewaluacja wyrażenia
Składnia poprzedni używanych symboli zastępczych
lub
Wewnątrz każdej z konstrukcji możliwe jest dodanie zmiennych, dostępnych pod ich nazwami
a wektory zmiennych są dostępne w nawiasach kwadratowych
odnosi się do temperatury pierwszego ekstrudera.
Wektory wielowymiarowe są dostępne jako proste zmienne wektorowe dające string (np. jeśli zmienna extruder_variable[1] dająca string [n,0] -- może być umieszczona w G-code, ale nie może być używana w operacjach arytmetycznych).
Stringi są identyfikowane przez podwójne cudzysłowia a zwykłe wyrażenia przez ukośniki Stringi nie są parsowane rekursywnie, to znaczy, że okrągłe i kwadratowe nawiasy pojawią jako wynik. Pozwala to na tworzenie konstrukcji takich, jak
Operatory
Dozwolone są następujące operatory:
- Porównanie
- Przykład:
- Operacje logiczne lub, równoznaczne,
- Przykład
- Arytmetyczne
- Przykład: (zauważ, że first_layer_temperature jest wektorem)
- Operatory trójargumentowe Muszą być zamknięte w nawiasach, aby działały.
- Przykład: To wyrażenie ustawia temperaturę ekstrudera na 230 lub 200 stopni, w zależności czy pierwsze warstwa musi być grzana powyżej 220°.
- Wyrażenia regularne dopasowań
- Wyrażenia regularne są zamknięte pomiędzy ukośnikami /
- Przykład:
Funkcje
Minimum
Maksimum
Rzutowanie na liczbę całkowitą
Zaokrąglanie do liczby całkowitej
Zaokrąglanie / dopełnianie ze spacjami: zaokrągla część ułamkową do cyfr num_decimals (w razie potrzeby dodając końcowe zera), a następnie lewa strona wypełnia spacje, tak aby liczba miała w sumie num_digits znaków (włącznie z przecinkiem dziesiętnym, jeśli jest obecny). Ostatni argument można pominąć, domyślnie zero.
Zaokrąglanie / dopełnianie z zerami: jak powyżej, tylko lewa strona jest dopełniana zerami
Zmienne (symbole zastępcze)
Możesz używać zmiennych wewnątrz niestandardowych skryptów i w formatce nazwy pliku wyjściowego.
Pełną listę symboli zastępczych w PrusaSlicer znajdziesz w tym artykule, pogrupowane wg zastosowania.
Zmienne skalarne
Wartości te są skalarami i mogą być tworzone do nich bezpośrednie odnośniki.
- printer_notes (string)
- layer_z (dostępna tylko w G-code zmiany warstwy)
- layer_num (dostępna tylko w G-code zmiany warstwy)
- toolchange_z (dostępna tylko w niestandardowym G-code dla zmiany narzędzia, od wersji 2.4.0)
Niektóre zmienne są definiowane przez złożone formuły. Na przykład jeśli perimeter_extrusion_width będzie ustawiony na zero, to weźmie wartość z extrusion_width, jeśli nie jest zerowa, w innym przypadku domyślny parametr perimeter_extrusion_width będzie obliczony z obecnej wysokości warstwy layer_height. Takie zamiany są dokonywane jedynie dla wyrażeń w nowej składni (zamkniętych w nawiasach klamrowych {}), podczas gdy wyrażenia pisane w poprzedniej składni (zamknięte w nawiasach kwadratowych []) są interpretowane dosłownie.
Wektory (zmienne tablicowe)
Zmienne te występują w formie tablic i dostęp do nich odbywa się również w takiej formie (np. temperature[0]).
- temperature
- first_layer_temperature
- bed_temperature (zauważ, że jest to wektor, nawet jeśli tylko jedna wartość jest prawidłowa: bed_temperature[0])
- first_layer_bed_temperature (tak samo, jak wyżej!)
Wektory wielowymiarowe
Te zmienne są dostępne tylko jak proste wektory i nie mogą być używane w działaniach arytmetycznych.
- extruder_offset
- bed_shape
Przykłady
Wieża temperatur
Możesz użyć niestandardowego "G-code przed zmianą warstwy", aby stopniowo obniżać temperaturę hotendu. Możesz użyć wyrażeń if/elseif/else:
Taki sam rezultat można osiągnąć krótszym wyrażeniem if/else/endif połączonym z interpolacją liniową:
Lub przy pomocy operatora trójargumentowego:
Szybsze nagrzewanie przed wydrukiem przy słabszej grzałce stołu
Jeśli Twoja drukarka jest wyposażona w stół wymagający więcej czasu na nagrzanie przed wydrukiem, możesz zyskać trochę czasu oczekiwania używając "Początkowego G-code", aby nagrzać stół do temperatury docelowej minus 5 stopni i rozpocząć nagrzewanie hotendu podczas kontynuacji nagrzewania stołu do temperatury docelowej: