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

HOTSPOT2, 2 Parameter coordinaten gleichzeitig bewegen

Anonymous
Nicht anwendbar
Hallo miteinander.
Ich versuche ein polyline mit hotspots zu verändern wie hier abgebildet:



Die Vectorpunkte sind in einem ParameterArray gespeichert wie :VPoints[xi][yi]

Ich möchte das die winkeln bleiben und die länge der vectoren sich andern .
Im bild oben ist die originalen vector rot, die gewünschten veränderungen Grün, Basispunkt Magenta...
Ist dies möglich?
Kann mir jemand dabei helfen?
Ich habe lang versucht und bringe es nicht fertig....Auch mit der hilfe das sehr gut beschriebenen referenz seite https://www.selfgdl.de/2d-elemente-2/eingabesteuerung/hotspot2/ 😕

Vielen Dank wenn jemand mir weiter helfen kann.
5 ANTWORTEN 5
Anonymous
Nicht anwendbar
Wenn ich es richtig verstanden habe, soll die Verbindungslinie von x2,y2 zu x3, y3 parallel verschoben werden mit dem Fangpunkt mit dem mangentafarbenen Kreuz.

Du kannst einen normalen "Verschiebebefehl" nehmen, und musst vorher einmal den Winkel drehen,
so dass die Richtung in Richtung mangentafarbene Pfeile zeigt, z.B. so etwas:

ADD2 x4, 0
ROT2 45
htspt=htspt+1 : HOTSPOT2 0, ty, htspt, tx, 1+128 ! Basispunkt
htspt=htspt+1 : HOTSPOT2 -.01, ty, htspt, tx, 3 ! Referenzpunkt
htspt=htspt+1 : HOTSPOT2 tx, ty, htspt, tx, 2 ! Beweglicher Punkt
DEL 2
Anonymous
Nicht anwendbar
Danke Jochen.... Irgendwie komme ich aber nicht klar.

Kannst du bitte nach schauen ? :

Vpoints[][] ist meine Parameter Vector Array...
So das Vpoints[1][1] enstpricht "x1" , Vpoints[1][2] = "y1" in den Bild oben

Wenn ich von den zweiten punkt ausgehe x2,y2 und x3,y3, was ist gemeint mit tx und ty in deinen Beispiel?
Muss den Basispunkt nicht im Mitte der Vector x2,y2 - x3,y3 liegen?

Ich habe es so probiert:

i=2
x2=VPoints[i][1] : y2=VPoints[i][2]
x3=VPoints[i+1][1] : y3=VPoints[i+1][2]

ADD2 x3,y2
ROT2 45

HS_UID=1
HOTSPOT2 0,y2,HS_UID,VPoints[i][1],1+256 : HS_UID=HS_UID+1 !BASE1
HOTSPOT2 -0.01,y2,HS_UID,VPoints[i][1],2 : HS_UID=HS_UID+1 !Moving
HOTSPOT2 x2,y2,HS_UID,VPoints[i][1],3 : HS_UID=HS_UID+1 !Reference

DEL 2


...funktioniert aber nicht. Was habe ich nicht verstanden?

Vielen Dank für deine Bemühungen
Frank Beister
Moderator
So einfach geht das nicht. Du musst einen neuen Parameter einführen, der die geplante Verschiebung aufnimmt und beweglich ist. Deine Punkte musst du dann entsprechend im Parameter-Skript anpassen.
Du kannst Parameter nur absolut bewegen, nicht in Anteilen. Außerdem müsstest du gleichzeitig zwei Parameter bewegen, die nicht aufeinander liegen...

2D-Skript:
i=2
x2=VPoints[i][1] : y2=VPoints[i][2]
x3=VPoints[i+1][1] : y3=VPoints[i+1][2]

ADD2 x2 + (x3-x2)/2, y2 + (y3-y2)/2
ROT2 45

HS_UID=1
HOTSPOT2 0,0,HS_UID,offset,1+256 : HS_UID=HS_UID+1 !BASE1
HOTSPOT2 0,offset,HS_UID,offset,2 : HS_UID=HS_UID+1 !Moving
HOTSPOT2 0,-0.01,HS_UID,offset,3 : HS_UID=HS_UID+1 !Reference

DEL 2


Parameter Skript:
IF ABS(offset) > 0.00001 THEN
i=2
vPoints[i][1] = vPoints[i][1] + offset ! Hier fehlt die Berechnung des Versatzes
VPoints[i][2] = vPoints[i][2]
i=3
VPoints[i][1] = vPoints[i][1]
VPoints[i][2] = vPoints[i][2] + offset ! Hier fehlt die Berechnung des Versatzes

offset = 0
PARAMETERS offset = offset, VPoints = VPoints

ENDIF
bim author since 1994 | bim manager since 2018 | author of selfGDL.de | openGDL | skewed archicad user hall of fame | author of bim-all-doors.gsm
Anonymous
Nicht anwendbar
Danke Beister!
Falls sonst Forum Leser an diesen Code interessiert sind, habe ich ein paar kleine Korrekturen:

HOTSPOT2 0,offset,HS_UID,offset,2 : HS_UID=HS_UID+1

Müsste so sein:

HOTSPOT2 0,0,HS_UID,offset,2 : HS_UID=HS_UID+1

...sonst ist die beweglicher punkt nach dem Verschiebung am falschen Ort.

offset = 0
PARAMETERS offset = offset, VPoints = VPoints

müsste in dieser Reihenfolge sein:


PARAMETERS offset = offset, VPoints = VPoints
offset = 0

sonst wird die neuen offset wert nicht gespeichert.

Nochmals vielen Dank...Super!
Frank Beister
Moderator
Nein, das ist prinzipiell schon OK so. 😉

Der Hotspot vom Typ 2 ist der bewegliche. Daher muss die Y-Koordinate sehr wohl mit offset angegeben werden.

Dein Fehler fällt nicht auf, weil du in beide Richtungen den Fangpunkt beweglich hast. Das ist aber eigentlich Unsinn. Du solltest den Fangpunkt des Typs 1 daher mit 1+128 oder nur mit 1, aber nicht mit 1+256 angeben.

Es ist aber tatsächlich ein Denkfehler drin. Probiere mal das:

2D Skript:
i=2
x2=VPoints[i][1] : y2=VPoints[i][2]
i=3
x3=VPoints[i][1] : y3=VPoints[i][2]

! In die Ecke/Schnittpunkt
ADD2 x3,y2
ROT2 45

HS_UID=1
HOTSPOT2 0,0,HS_UID,offset,1+128: HS_UID=HS_UID+1 !BASE1 invisible
HOTSPOT2 0,offset,HS_UID,offset,2 : HS_UID=HS_UID+1 !Moving
HOTSPOT2 0,-0.01,HS_UID,offset,3 : HS_UID=HS_UID+1 !Reference

DEL 2


Parameter Skript:
i=2
vPoints[i][1] = vPoints[i+1][1] - offset/COS(90-45) ! Hier fehlt die Berechnung des Versatzes
VPoints[i][2] = vPoints[i][2]
i=3
VPoints[i][1] = vPoints[i][1]
VPoints[i][2] = vPoints[i-1][2] + offset/SIN(90-45) ! Hier fehlt die Berechnung des Versatzes

PARAMETERS VPoints = VPoints
bim author since 1994 | bim manager since 2018 | author of selfGDL.de | openGDL | skewed archicad user hall of fame | author of bim-all-doors.gsm