Aktuelle Zeit: 8. Aug 2020, 22:33
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: HOTSPOT2, 2 Parameter coordinaten gleichzeitig bewegen
BeitragVerfasst: 14. Dez 2018, 14:41 
Offline
Mitglied

Registriert: 20. Sep 2018, 13:21
Beiträge: 31
Land: CH
Betriebsystem: Windows 10
Hallo miteinander.
Ich versuche ein polyline mit hotspots zu verändern wie hier abgebildet:

Bild

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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: HOTSPOT2, 2 Parameter coordinaten gleichzeitig bewegen
BeitragVerfasst: 14. Dez 2018, 16:19 
Offline
Forum Veteran
Benutzeravatar

Registriert: 26. Mai 2002, 01:01
Beiträge: 927
Wohnort: Osterwald
Land: DE
Betriebsystem: MacOS 10.11
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

_________________
ArchiCAD 12 - 24 | iMac 3.5 Ghz | Mac OS X 10.13 | Win 10


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: HOTSPOT2, 2 Parameter coordinaten gleichzeitig bewegen
BeitragVerfasst: 14. Dez 2018, 16:59 
Offline
Mitglied

Registriert: 20. Sep 2018, 13:21
Beiträge: 31
Land: CH
Betriebsystem: Windows 10
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:
Code:
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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: HOTSPOT2, 2 Parameter coordinaten gleichzeitig bewegen
BeitragVerfasst: 17. Dez 2018, 10:07 
Offline
Forum Veteran
Benutzeravatar

Registriert: 2. Jun 2004, 01:01
Beiträge: 2300
Wohnort: Hamburg
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:
Code:
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:
Code:
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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: HOTSPOT2, 2 Parameter coordinaten gleichzeitig bewegen
BeitragVerfasst: 18. Dez 2018, 15:57 
Offline
Mitglied

Registriert: 20. Sep 2018, 13:21
Beiträge: 31
Land: CH
Betriebsystem: Windows 10
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!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: HOTSPOT2, 2 Parameter coordinaten gleichzeitig bewegen
BeitragVerfasst: 18. Dez 2018, 17:16 
Offline
Forum Veteran
Benutzeravatar

Registriert: 2. Jun 2004, 01:01
Beiträge: 2300
Wohnort: Hamburg
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:
Code:
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:
Code:
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


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 16 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu: