Koordinaten-Transformationen

Hier werden die Befehle behandelt, die dafür sorgen, dass 2D-Elemente und 3D-Elemente des Skriptes ihre Lage, Skalierung und Drehung verändern können.

Da in GDL alle geometrischen Gebilde stets an einen lokalen Ursprung gebunden sind und deren Transformation meist nicht im Befehl angegeben werden kann, werden nicht die Geometrien verschoben, skaliert und gedreht, sondern das komplette Koordinatensystem (bzw. der Koordinatenursprung). Um ein Element in Position oder Orientierung zu Ändern ist also vor dem Befehl eine passende „Koordinaten-Transformationen“ des Bezugssystems notwendig.

Sämtliche Koordinatentransformationen sind im 2D-Script und im 3D-Script anzuordnen.

Lokaler Ursprung

Der lokale Ursprung eines Objektes ergibt sich aus den zuvor ausgeführten Koordinaten-Transformationen. Alle Elemente, die danach erzeugt werden, egal ob 2D oder 3D, beziehen sich immer relativ zu diesem Nullpunkt. Ohne Transformationen, wie z.B. zu Skript-Start liegt der lokale Ursprung auf dem Objektnullpunkt.

Der Objektnullpunkt ist der Einsetzpunkt des Objektes im Moment des Einsetzens im Projekt. Dieser muss auch nicht mit einem Fangpunkt versehen sein und muss auch nicht dem veränderbaren Anker im Einstellungsdialog des Objektes entsprechen.

Der Objektnullpunkt entspricht damit auch nicht dem Projektursprung, der im Grundriss und den Geschosseinstellungen definiert wird. Der Objektnullpunkt wird relativ zum Projektursprung im Projekt (intern) vermerkt. Somit ist das Objekt fest in seiner Lage im Projekt definiert und verwendet objektintern sein eigenes Bezugssystem. Die Position im Projekt ist durch globale Variablen abrufbar.

Zum Einsetzen des Objektes kann im Einstellungsdialog jeder Fangpunkt des Objektes gewählt werden. Liegt der Punkt nicht im Ursprung des Objektbezugsystems, dann liegt der Nullpunkt des Objektes im Projekt ebenfalls relativ um den Versatz dieses Fangpunktes/Einsetzpunktes. Siehe hierzu auch die Erläuterungen unter SYMB_POS_X.

Ablauf der Transformationen

Nach einem Transformationsbefehl beziehen sich alle nachfolgenden Befehle dann auf diesen neuen Nullpunkt. Bis dieser Ursprung erneut verändert oder die Transformation mit einer Änderung des Transformationsstacks rückgängig gemacht wurde.

Dabei können beliebig viele und unterschiedliche Transformationen nacheinander ausgeführt werden.

Ausdehnung

Die geometrischen Elemente sollten möglichst dicht am Objektursprung liegen. Am besten im 1. Quadranten. Ebenso in der Höhe. X, Y, Z also möglichst positiv. Archicad erzeugt intern eine „Boundary box“, an der für die Bildschirmdarstellung und Berechnungen ermittelt wird, ob das Objekt im relevanten Bereich liegt. Ist diese unnötig groß oder versetzt geht das auf Performance und ggf. auch auf die Darstellung. Im 3D kann die Boundary box durch zwei fixe Parameter gesetzt werden (ac_bottomlevel, ac_toplevel)

„Lost in space“

Es gibt keinen Befehl, der die absoluten Koordinaten des lokalen Ursprungs zum Objektursprung (oder Projektursprung) zurück gibt.