Benutzerdefinierte Funktionen

Wenn Skripte vom gleichen Typ erstellt werden, die eine bestimmte Klasse an parametrischen Teilen beschreiben, kann es nützlich sein, die Sequenz von sich wiederholenden Aktionen als separate Sonderfunktion zur Verfügung zu haben. Um dies zu erreichen, können die sich wiederholenden Aktionen in eine separate PPM-Datei gespeichert werden.

In diesem Fall sollten alle Eingabevariablen im Eingabeoperator aufgelistet sein:

Format:

Input(<Liste der Variablenbezeichner, getrennt durch Komma>);


Zum Beispiel:

Input(x0,y0,z0,x1,y1,z1);


Der Ausgabeoperator sollte ebenfalls definiert werden.


Format:

Output(<Liste der Variablenbezeichner, getrennt durch Kommata>);


Eine benutzerdefinierte Funktion, die auf diese Weise erstellt wurde, muss in einem Macro-Ordner liegen, der sich immer im Ordner des aufgerufenen Skripts befinden muss. Wenn die benutzerdefinierte Funktion verwendet wird, wird der Dateiname des Skripts (ohne die Erweiterung .ppm) so verwendet, als handele es sich um eine integrierte Funktion.


Format:

<Dateiname>(<Liste der Eingabeparameter>)


Hier finden Sie ein Beispiel einer benutzerdefinierten Funktion:

// box.ppm - Definiert eine benutzerdefinierte Quader-Funktion.
// Die benutzerdefinierte Funktion wird wie folgt aufgerufen:
//     B = Box(Xmin, Ymin, Zmin, Xmax, Ymax, Zmax);
// Die Funktion erstellt einen 3D-Quader mit den angegebenen Minimal-/Maximalwerten
Input(x0,y0,z0,x1,y1,z1);
R = Rectangle(x1-x0, y1-y0,     // Rechteck mit Xmin = x0, Xmax= x1
(x0+x1)/2, (y0+y1)/2);  // Ymin = y0, Ymax = y1
T = Thickness(R, z1-z0);   // Tiefe = Zmax - Zmin
Output(Move(T, 0, 0, z0)); // Ergebnis entlang z zu Zmin verschieben


Das Skript unten nennt sich quader_einblenden.ppm. Es ruft die benutzerdefinierte Funktion quader.ppm auf

// quader_einblenden.ppm verwendet die benutzerdefinierte Funktion quader.ppm im Macro-Ordner.
x = Parameter("Größe", 5, LINEAR, GreaterThan(0));
r1 = Parameter("r1", 0.5, LINEAR, GreaterThan(0));
b0 = Box(0, 0, 0, x, x, x);
b1 = G3Fillet(b0, Point(x/2, 0, 0), Array(r1, r1*2));
Output(b1);


Der Speicherort ist bei der Verwendung von parametrischen Skripten als benutzerdefinierte Funktionen extrem wichtig. Wenn sich das im obigen Beispiel verwendete Skript quader_einblenden.ppm im Ordner D:\Symbole befindet, kann das Skript quader.ppm nur gefunden werden, wenn es sich im Ordner D:\Symbole\Macro befindet.