Deutsch
Login

Makros ermöglichen die Erstellung von Bedingungen und die Auswertung von mathematischen Gleichungen in den benutzerdefinierten G-Code-Feldern.

Die PrusaSlicer-Makrosprache ist nicht kompatibel mit Slic3r-Bedingungsausdrücken.

Konstrukte

Bedingte Auswertung

Ausdruckauswertung

Syntax der Legacy-Platzhalter

oder

In beiden Konstrukten kann auf die PrusaSlicer-Konfigurationsvariablen über deren Namen zugegriffen werden

und auf Elemente von Vektorvariablen kann mit Hilfe von eckigen Klammern zugegriffen werden

bezieht sich auf die Temperatur des ersten Extruders.

Mehrdimensionale Vektoren können derzeit nur als einfache Vektorvariable angesprochen werden, die einen String-Wert ergibt (z.B. wenn die extruder_variable[1] den String-Wert [n,0] ergibt -- kann in g-code ausgegeben werden, kann aber nicht in arithmetischen Operationen verwendet werden).

Strings werden durch doppelte Anführungszeichen und reguläre Ausdrücke durch Schrägstriche  Strings werden nicht rekursiv geparst, d.h. geschweifte und eckige Klammern innerhalb von Strings werden in der Ausgabe erscheinen. Dies ermöglicht Konstrukte wie

Operatoren

Die folgenden Operatoren sind erlaubt:

  1. Vergleich
    • Beispiel:
  2. Boolesche Logik or, equivalently,  
    • Beispiel
  3. Arithmetik
    • Beispiel: (Beachten Sie, dass first_layer_temperature ein Vektor ist)
  4. Ternärer Operator Dieser muss in Klammern eingeschlossen werden, um zu funktionieren.
    • Beispiel: Dieser Ausdruck setzt die Extrudertemperatur entweder auf 230 oder 200, je nachdem, ob die erste Schicht über 220° sein muss.
  5. Regulärer Ausdruck, der
  6. Regelmäßige Ausdrücke werden in Schrägstriche / eingeschlossen
    • Beispiel:

Funktionen

Minimum

Maximum

Casting auf Ganzzahl

Runden / Auffüllen mit Nullen: wie oben, nur links mit Nullen gefüllt

Variablen (Platzhalter)

Sie können Variablen innerhalb von eigen Skripten und in der Vorlage für den Namen der Ausgabedatei verwenden.

Sehen Sie sich die Liste aller PrusaSlicer Platzhalter an, gruppiert nach ihrem Anwendungsbereich.

Skalare Variablen

Diese Werte sind skalar und können direkt referenziert werden.

  • printer_notes (String)
  • layer_z (nur verfügbar im Schichtwechsel GCode)
  • layer_num (nur verfügbar im Schichtwechsel GCode)
  • toolchange_z (verfügbar im benutzerdefinierten Werkzeugwechsel GCode seit Version 2.4.0)

Einige Variablen werden durch komplexe Formeln definiert. Zum Beispiel die perimeter_extrusion_width wenn auf Null gesetzt, nimmt den Wert von extrusion_width wenn ungleich Null, sonst die Standard perimeter_extrusion_width wird berechnet für die aktuelle layer_height. Diese Ersetzungen werden nur für die Ausdrücke der neuen Syntax (eingeschlossen in geschweiften Klammern {}) vorgenommen, während die Ausdrücke, die mit der alten Platzhalter-Syntax (eingeschlossen in eckigen Klammern []) geschrieben wurden, wortwörtlich interpretiert werden.

Vektor (Array-Variablen)

Diese Variablen sind Arrays und müssen als solche angesprochen werden (z.B. temperature[0]).

  • temperature
  • first_layer_temperature
  • bed_temperature (Beachten Sie, dass dies ein Vektor ist, auch wenn nur ein Wert sinnvoll ist: bed_temperature[0])
  • first_layer_bed_temperature (wie oben!)

Mehrdimensionaler Vektor

Diese Variablen können nur als einfache Vektoren angesprochen werden und können nicht in arithmetischen Ausdrücken verwendet werden.

  • extruder_offset
  • bed_shape

Beispiele

Temperaturturm

Sie können den benutzerdefinierten G-Code "Vor Schichtwechsel" verwenden, um die Temperaturen am Hot End langsam zu senken. Zunächst kann man den if/elseif/else-Ausdruck verwenden:

 Das gleiche Ergebnis kann durch einen kürzeren if/else/endif-Ausdruck zusammen mit einer linearen Interpolation erreicht werden:

Oder man kann den ternären Operator verwenden:

Schnelleres Aufheizen mit schwachen Bettheizungen vor dem Druck

Wenn Sie ein Bett haben, das sehr lange braucht, um auf Temperatur zu kommen, können Sie ein wenig Wartezeit einsparen, indem Sie mit "Start G-Code" das Bett auf die Zieltemperatur minus 5 Grad aufheizen und dann mit dem Aufheizen des Hot End beginnen, während das Bett weiter auf den Zielwert aufheizt:

 

War dieser Artikel hilfreich?
Diese Aktion ist nur für registrierte Benutzer verfügbar. Bitte anmelden.