Syntax
GLOB_WORLD_ORIGO_OFFSET_X
Typ real
Abstand in X-Richtung des derzeitigen Projektursprungs zum globalen Ursprung. Siehe Hintergrund.
Globaler Parameter/ READ
ArchiCAD® bezieht alle Zeichnungselemente in Position und Transformation auf den globalen Projektursprung. Bis ArchiCAD® 8.x konnte es vorkommen, dass extrem (>1000m) weit vom Ursprung verschobene Projekte bei der Berechnung der Darstellung Präzisionsprobleme verursachten und z.T. damit Programmabstürze provozierten. Ab ArchiCAD® 9 ist ein Sicherungsmechanismus eingeführt der beim neu Laden eines Projektes dessen Lage im "ArchiCAD-Raum" ermittelt und, wenn das Gebäude insgesamt sehr weit vom Ursprung entfernt ist, alle Elemente intern wieder Richtung (0/0) verschiebt. In der Grundrissbearbeitung bleibt dies unbemerkt, denn der (grau) sichtbare Projektursprung wird ebenfalls um diese Translation mitverschoben. Ebenso werden alle Koordinatenangaben in den Infofenstern entsprechend verändert. Es handelt sich um eine rein interne Korrektur.
Allerdings liefern die GDL-Variablen SYMB_POS_X und SYMB_POS_Y den Abstand des Objektursprunges zum Projektursprung. Und diese Werte beziehen sich nach einer solchen automatischen Korrektur nicht auf den ursprünglichen, sondern auf den neuen, internen Ursprung. Dessen Lage zum ursprünglichen kann nun mit den globalen Parametern GLOB_WORLD_ORIGO_OFFSET_X und GLOB_WORLD_ORIGO_OFFSET_Y ermittelt werden.
Es ist zu beachten, dass die automatische Verschiebung erst nach einem Schließen und neu Laden den Projektes ausgeführt wird. Die Verschiebung wird nur so ausgeführt, dass das vollständige Projekt wieder am Nullpunkt beginnt. Erstreckt sich das Projekt vom Nullpunkt aus über eine so ausgedehnte Größe, wird selbstverständlich keine Korrektur vorgenommen. Siehe Beispiel und Abbildungen.
Allerdings liefern die GDL-Variablen SYMB_POS_X und SYMB_POS_Y den Abstand des Objektursprunges zum Projektursprung. Und diese Werte beziehen sich nach einer solchen automatischen Korrektur nicht auf den ursprünglichen, sondern auf den neuen, internen Ursprung. Dessen Lage zum ursprünglichen kann nun mit den globalen Parametern GLOB_WORLD_ORIGO_OFFSET_X und GLOB_WORLD_ORIGO_OFFSET_Y ermittelt werden.
Es ist zu beachten, dass die automatische Verschiebung erst nach einem Schließen und neu Laden den Projektes ausgeführt wird. Die Verschiebung wird nur so ausgeführt, dass das vollständige Projekt wieder am Nullpunkt beginnt. Erstreckt sich das Projekt vom Nullpunkt aus über eine so ausgedehnte Größe, wird selbstverständlich keine Korrektur vorgenommen. Siehe Beispiel und Abbildungen.
s=1.1*0.5*GLOB_SCALE/100 !Zeilenabstand
t=s/5 !Markerbreite
!Absolute Positionen
GX=GLOB_WORLD_ORIGO_OFFSET_X+SYMB_POS_X
GY=GLOB_WORLD_ORIGO_OFFSET_Y+SYMB_POS_Y
!Prüfungen für IF-THEN-Bedingungen:
IT_PX = (ABS(SYMB_POS_X)>0.01)
IT_PY = (ABS(SYMB_POS_Y)>0.01)
IT_GX = (ABS(GLOB_WORLD_ORIGO_OFFSET_X)>0.01)
IT_GY = (ABS(GLOB_WORLD_ORIGO_OFFSET_Y)>0.01)
IF (ABS(GX)>0.01 OR ABS(GY)>0.01) AND (IT_PX OR IT_PY) THEN
LINE2 -t,-t, t,t
LINE2 -t,t, t,-t
HOTSPOT2 0,0,3
IF IT_GX OR IT_GY THEN
T_posX = STR(SYMB_POS_X,4,1)
T_posY = STR(SYMB_POS_Y,4,1)
TEXT2 0,-s,"(" + T_posX + "/" + T_posY + ") virtuell"
ENDIF
TEXT2 0,0,"(" + STR(GX,4,1) + "/" + STR(GY,4,1) + ") absolut"
TEXT2 0,s, "Objektnullpunkt"
virtualname="Virtueller Projektursprung"
ELSE
virtualname="Objektnullpunkt = Virtueller Projektursprung"
ENDIF
IF IT_GX OR IT_GY THEN
ADD2 -SYMB_POS_X, -SYMB_POS_Y
LINE2 -t,-t, t,t
LINE2 -t,t, t,-t
HOTSPOT2 0,0,2
T_posX = STR(GLOB_WORLD_ORIGO_OFFSET_X,4,1)
T_posY = STR(GLOB_WORLD_ORIGO_OFFSET_Y,4,1)
TEXT2 0, 0, "(" + T_posX = + "/" + T_posY = + ")"
TEXT2 0, s, virtualname
DEL TOP
origoname="WORLD ORIGO"
ELSE
origoname="WORLD ORIGO = Projektursprung"
ENDIF
ADD2 -GX, -GY
LINE2 -t,-t, t,t
LINE2 -t,t, t,-t
HOTSPOT2 0,0,1
TEXT2 0,0, "(0,0/0,0)"
TEXT2 0,s, origoname
DEL TOP
2D-Skript für ein Beispielobjekt, das die Positionen des Objekteinsetzpunktes, des ursprünglichen und des virtuellen Projektursprunges markiert. Um einen Effekt zu erzielen, muß dass Objekt in einen leeren Plan sehr weit vom Ursprung platziert werden und dann das Projekt gespeichert, geschlossen und wieder neu geladen werden.
t=s/5 !Markerbreite
!Absolute Positionen
GX=GLOB_WORLD_ORIGO_OFFSET_X+SYMB_POS_X
GY=GLOB_WORLD_ORIGO_OFFSET_Y+SYMB_POS_Y
!Prüfungen für IF-THEN-Bedingungen:
IT_PX = (ABS(SYMB_POS_X)>0.01)
IT_PY = (ABS(SYMB_POS_Y)>0.01)
IT_GX = (ABS(GLOB_WORLD_ORIGO_OFFSET_X)>0.01)
IT_GY = (ABS(GLOB_WORLD_ORIGO_OFFSET_Y)>0.01)
IF (ABS(GX)>0.01 OR ABS(GY)>0.01) AND (IT_PX OR IT_PY) THEN
LINE2 -t,-t, t,t
LINE2 -t,t, t,-t
HOTSPOT2 0,0,3
IF IT_GX OR IT_GY THEN
T_posX = STR(SYMB_POS_X,4,1)
T_posY = STR(SYMB_POS_Y,4,1)
TEXT2 0,-s,"(" + T_posX + "/" + T_posY + ") virtuell"
ENDIF
TEXT2 0,0,"(" + STR(GX,4,1) + "/" + STR(GY,4,1) + ") absolut"
TEXT2 0,s, "Objektnullpunkt"
virtualname="Virtueller Projektursprung"
ELSE
virtualname="Objektnullpunkt = Virtueller Projektursprung"
ENDIF
IF IT_GX OR IT_GY THEN
ADD2 -SYMB_POS_X, -SYMB_POS_Y
LINE2 -t,-t, t,t
LINE2 -t,t, t,-t
HOTSPOT2 0,0,2
T_posX = STR(GLOB_WORLD_ORIGO_OFFSET_X,4,1)
T_posY = STR(GLOB_WORLD_ORIGO_OFFSET_Y,4,1)
TEXT2 0, 0, "(" + T_posX = + "/" + T_posY = + ")"
TEXT2 0, s, virtualname
DEL TOP
origoname="WORLD ORIGO"
ELSE
origoname="WORLD ORIGO = Projektursprung"
ENDIF
ADD2 -GX, -GY
LINE2 -t,-t, t,t
LINE2 -t,t, t,-t
HOTSPOT2 0,0,1
TEXT2 0,0, "(0,0/0,0)"
TEXT2 0,s, origoname
DEL TOP
2D-Skript für ein Beispielobjekt, das die Positionen des Objekteinsetzpunktes, des ursprünglichen und des virtuellen Projektursprunges markiert. Um einen Effekt zu erzielen, muß dass Objekt in einen leeren Plan sehr weit vom Ursprung platziert werden und dann das Projekt gespeichert, geschlossen und wieder neu geladen werden.
ab 9.0