abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 

Wir schätzen Ihren Input!
Bitte nehmen Sie an der Umfrage zu Archicad 28 Startbildschirm und Lerninhalte/Schnell-Tutorials teil

Programmierung
Alles über Programmierung in GDL und Python
GELÖST!

GDL Linie zum Projektursprung

A1exander
Newcomer

GDL Objekte haben, sofern ich das richtig verstehe, ihren eigenen Objekt-Ursprung, welcher für jedes Objekt gesehen (x=0, y=0) ist. Von dort aus beginnt das Koordinatensystem für das jeweilige Objekt.

 

Wie kann man in einem GDL Objekt den Projektursprung ansteuern und beispielsweise eine Linie zeichnen lassen, welche als Endpunkt immer den Projektursprung annimmt?

Line2  x1,  y1, ProjektursprungX, ProjektursprungY

Funktioniert das ganze über die globalen Variablen? Wie müssen diese im Skript eingesetzt werden?

Beste Grüße

 

Operating system used: Windows 10

1 AKZEPTIERTE LÖSUNG

Akzeptierte Lösungen
Lösung
Xandros
Expert

Hi,

dafür gibts die Variablen SYMB_POS_X und SYMB_POS_Y

 

Hier ein kleines Beispielscript

HOTSPOT2 0, 0, 0

_x = -SYMB_POS_X
_y = -SYMB_POS_Y

! Variablen c und d in den Parametern deklarieren
HOTSPOT2 d, 0, 1, c, 1+128 !Basisfangpunkt
HOTSPOT2 d, c, 2, c, 2 !beweglicher Fangpunkt
HOTSPOT2 d,-1, 3, c, 3 !Referenzrichtung

HOTSPOT2 0,c, 4, d, 1+128 !Basisfangpunkt
HOTSPOT2 d,c, 5, d, 2 !beweglicher Fangpunkt
HOTSPOT2 -1,c, 6, d, 3 !Referenzrichtung

LINE2 _x, _y, d, c
HOTLINE2 _x, _y, d, c

TEXT2 0, 0 - 0, _x
TEXT2 0, 0 - 1, _y

 

ArchiCAD 27 GER / Win10
Intel i9-9900K / 64GB RAM / nVidia GeForce RTX 2080 Ti

Lösung in ursprünglichem Beitrag anzeigen

4 ANTWORTEN 4
A1exander
Newcomer

Ergänzung: 

Wenn das Objekt nach dem platzieren über STRG+E (Bewegen) bewegt wird, wäre der Wunsch dass sich der Endpunkt der Linie nach erneutem Absetzen wiederum mit dem Projektursprung verbindet.

Lösung
Xandros
Expert

Hi,

dafür gibts die Variablen SYMB_POS_X und SYMB_POS_Y

 

Hier ein kleines Beispielscript

HOTSPOT2 0, 0, 0

_x = -SYMB_POS_X
_y = -SYMB_POS_Y

! Variablen c und d in den Parametern deklarieren
HOTSPOT2 d, 0, 1, c, 1+128 !Basisfangpunkt
HOTSPOT2 d, c, 2, c, 2 !beweglicher Fangpunkt
HOTSPOT2 d,-1, 3, c, 3 !Referenzrichtung

HOTSPOT2 0,c, 4, d, 1+128 !Basisfangpunkt
HOTSPOT2 d,c, 5, d, 2 !beweglicher Fangpunkt
HOTSPOT2 -1,c, 6, d, 3 !Referenzrichtung

LINE2 _x, _y, d, c
HOTLINE2 _x, _y, d, c

TEXT2 0, 0 - 0, _x
TEXT2 0, 0 - 1, _y

 

ArchiCAD 27 GER / Win10
Intel i9-9900K / 64GB RAM / nVidia GeForce RTX 2080 Ti
A1exander
Newcomer

Super vielen Dank! 
Funktioniert perfekt. 🙂 

Ma_SchtAC27
Booster
!!! 2D-Script
unID = 1
HOTSPOT2 0, 0,                              unID : unID=unID+1
HOTSPOT2 -SYMB_POS_X, -SYMB_POS_Y,          unID : unID=unID+1

 

LINE2       0,0, -SYMB_POS_X, -SYMB_POS_Y
HOTLINE2    0,0, -SYMB_POS_X, -SYMB_POS_Y,  unID : unID=unID+1

 

abstand = 0.25
TEXT2 0, 0 - 0*abstand, STR(SYMB_POS_X, 4, 3)
TEXT2 0, 0 - 1*abstand, STR(SYMB_POS_Y, 4, 3)
!!! Ende 2D-Script
 
 
 
Spannend für Dich sind auch:
GLOB_SCALE (Damit kann man steuern, dass der Zeilenabstand sich an den Maßstab anpasst
Schau mal auf selfGDL.de vorbei!
Das GDL-Kochbuch von DNC solltest Du Dir unbedingt zulegen wenn Du Bock auf GDL hast!
 
Verrückt, genau so ähnlich ^^ fing ich vor Jahren auch an.
Endete dann in :--) :
 
!!!! Abfangung wenn Objekt gespiegelt oder gedreht ist
mirrJN = -1 * (SYMB_MIRRORED * 2 - 1)

!!! ROUTINE für die Eingabe des Drehwinkels mit 8 Stellen nach dem Komma
winkel1 = 0.0
winkelT1txt = winkelVZtxt + winkelT1txt         !! fügt den String aus VORzeichen und Winkel VOR dem Komma zusammen
winkelT2txt = "0."+winkelT2txt                  !! Sorgt dafür, dass der Nachkomma-String < 1 ist
tempT1 = SPLIT (winkelT1txt, "%n", winkel1)     !! Wandet des 1. Term in eine Zahl
tempT2 = SPLIT (winkelT2txt, "%n", winkel2)     !! Wandet des 2. Term in eine Zahl
IF winkelVZtxt = "-" THEN                       !! abhängig vom Vorzeichen werden beide Terme addiert oder subtrahiert
    winkel = winkel1 - winkel2
ELSE
    winkel = winkel1 + winkel2
ENDIF
!!! ENDE der ROUTINE für die Eingabe des Drehwinkels mit 8 Stellen nach dem Komma


Py = (SYMB_POS_Y + GLOB_WORLD_ORIGO_OFFSET_Y              - ((SYMB_POS_X + GLOB_WORLD_ORIGO_OFFSET_X)*TAN(winkel)))*COS(winkel)
Px = (SYMB_POS_X + GLOB_WORLD_ORIGO_OFFSET_X)/COS(winkel) +  (SYMB_POS_Y + GLOB_WORLD_ORIGO_OFFSET_Y - ((SYMB_POS_X + GLOB_WORLD_ORIGO_OFFSET_X)*TAN(winkel)))*SIN(winkel)
Pz =  SYMB_POS_Z + Uz
!!! Ux und Uy sind Versätze
Py = Uy + Py
Px = Ux + Px
 
Gruß

Setup info provided by author