Ein Beispielprogramm erzeugt einen Block, der aus 4 Punkten und den zugehörigen Verbindungslinien besteht. Der Punkt p1 erhält den Namen reference_point (Referenzpunkt), die Breite den Namen width.
width = length_absolute(100)
p1 = point_relative(origin, 100.0, 100.0)
p2 = point_samey(p1,length_qotient(width,2.0))
p3 = point_mirrorpoint(p2,p1)
p4 = point_samex(p3, 20.0)
p5 = point_relativex1y2(p2,p4)
line_pointpoint(,,,p3,p2)
line_pointpoint(,,,p4,p5)
line_pointpoint(,,,p2,p5)
line_pointpoint(,,,p3,p4)
name(p1, "reference_point")
name(width, "width")
length_absolute benötigt einen Realwert als Argument. In diesem Beispiel wird ein Integer-Wert übergeben. Integerwert-Argumente werden automatisch in Realwert- Argumente umgewandelt, wenn es erforderlich ist.
Die Aktionen point_samey, point_samex und point_relative werden im Normalfall mit einer Länge als zweitem Argument verwendet:
p4 = point_samey (p3,length_absolute(20.0))
Das System erzeugt automatisch das Absolut-Objekt length_absolute (20) als Parameter für p4.
Im Beispiel werden die AQL-Variablen p1, p2, p3, p4, p5 und width verwendet. Dies bedeutet nicht, daß die erzeugten Objekte diese Namen erhalten. Um einem Objekt einen Namen zu geben, sollte die AQL-Funktion name benutzt werden. Die Variablen p1, p2, p3, p4, p5 und width existieren nur zur Laufzeit des AQL-Programms. Sie werden nicht im CAD-Modell gespeichert. Die erzeugten Objekte bleiben jedoch permanent in der Datenstruktur.
Das gleiche Programm kann auch als AQL-Funktion geschrieben werden. Die Funktion hat dann zwei Argumente: den Referenzpunkt und die Breite des Blocks. In dieser Version werden dem Referenzpunkt und der Breite keine Namen gegeben. p2 und p3 werden auf anderem Wege konstruiert.
function block ( pref, width )
p2 = point_samey(pref, width / 2)
p3 = point_samey(p2, -width)
p4 = point_samex(p3, 20.0)
p5 = point_relativex1y2(p2,p4)
line_pointpoint(,,,p3,p2)
line_pointpoint(,,,p4,p5)
line_pointpoint(,,,p2,p5)
line_pointpoint(,,,p3,p4)
end
/* Hauptprogramm */
block ( point_relative (origin,100.0,100.0) , 100.0)
In dieser Version werden drei Objekte vom Typ Länge implizit konstruiert. Die ersten beiden haben die Werte width/2 und -width, es besteht jedoch keine Relation zwischen ihnen.
Optionale Argumente können weggelassen werden. Das trennende Komma ist jedoch Pflicht.
Die folgende Funktion erzeugt einen Turm von Blöcken mit nach oben hin abnehmender Breite. DIe Argumente sind der Referenzpunkt des untersten Blocks und die Anzahl der Blöcke.
function tower ( pref, count )
i = 1
p = pref
group = {}
while (i⇐ count) do
block( p , (count + 1 -i) * 10.0)
group = group + { p }
p = point_samex(pref, i * 22.0)
i = i + 1;
end
return(group)
end
/* Hauptprogramm */
tower ( point_relative (origin,100.0,100.0) , 10 )
Die Funktion liefert eine Gruppe der Referenzpunkte aller Blöcke zurück, die jedoch in diesem Beispiel nicht verwendet wird.
◀ Modellfunktionen | Dialogverzweigung ▶ |