Wiederherstellung des Stapels

transRestore

transRestore(depth)

Die Funktion transDepth() gibt die aktuelle Tiefe des Stapels an. Die Funktion transRestore(depth) entfernt die Transformationen vom Stapel, bis die angegebene Tiefe erreicht ist. Normalerweise werden die beiden Funktionen kombiniert, um den Zustand des Transformationsstapels zu speichern und wiederherzustellen.

Es gehört zum guten Programmierstil, dieses Speichern und Wiederherstellen im Rahmen von benutzerdefinierten ST-Funktionen durchzuführen.

Beispiel:

In der folgenden Funktion wird zunächst die Tiefe des Stapels in der Variablen depth gespeichert. Am Ende der Funktion wird der Ausgangszustand durch transRestore wiederhergestellt. Beachten Sie, dass die Wiederherstellung nur richtig funktioniert, wenn die Stapeltiefe innerhalb der Funktion nicht unter depth fällt. Statt mit transDepth() und transRestore() könnte die Stapeltiefe auch mit transPop() wiederhergestellt werden. Es kann jedoch mühsam werden, das Schieben und Verschieben von Transformationen synchron zu halten, insbesondere wenn Transformationen unter bestimmten Bedingungen geschoben werden.

{
FUNCTION draw
VAR
    depth : UINT;
END_VAR
    depth := transDepth();
transTranslate(10,0,0);
    // … G-Code …
    transRotZ(45);
    // … G-Code …
    transMirrorX();
    // … G-Code …
    transRestore(depth);
END_FUNCTION
}