2024-07-02 05:03 AM - bearbeitet 2024-07-02 06:17 AM
Hallo,
Ich habe für 2 GDL Objekte im 3D Script je die selben Zeilen für meinen Hotspot geschrieben:
"
hotspot 0, 0, ZZYZX/2, _unID, A, 1+128 !BASE (hidden)
_unID = _unID + 1
hotspot -1, 0, ZZYZX/2, _unID, A, 3 !REFERENCE
_unID = _unID + 1
hotspot A, 0, ZZYZX/2, _unID, A, 2 !MOVING
_unID = _unID + 1
"
In der Innenansicht:
Bei ersten GDL Objekt-Hotspot kann ich die Breite "A" des Objekts verändern beim Zweiten nicht. Beim Zweiten fehlt mir beim Pop UP Fenster die Option "Knotenpunkt verschieben"
Im 3D:
Bei ersten GDL Objekt-Hotspot kann ich NUR die Breite "A" des Objekts verändern beim Zweiten kann ich Breite und Tiefe verändern.
Ziel ist, dass sich das Zweite Objekt wie das erste verhält.
Ich habe bereits versucht diese Zeilen an unterschiedlichen Stellen im Skript zun platzieren. Hat leider nichts geholfen.
Hat jemand eine Idee was hier schief läuft? Danke
Operating system used: Windows
2024-07-02 07:04 AM - bearbeitet 2024-07-02 07:06 AM
Hast Du an der selben Stelle des editierbaren Hotspots, der nicht funktioniert, vielleicht einen anderen "toten" Hotspot eingesetzt?
Versuch Deinen editierbaren mal im GDL-Script zur Seite zu schieben (addx 2). ..Hotspotbefehele... (del 1) - ob er dann funkioniert.
Eine andere Möglichkeit wäre, dass _unid im 2. Fall zuvor nicht erstellt wurde.
am 2024-07-13 10:37 PM
"Toter" Hotspot ist es nicht. Hab die Hotspot verschoben.
_unid wurde in beiden Fällen vorher nicht erstellt. Ist es also auch nicht.
Hab immer wieder Teile des Skripts gelöscht und bin zum Schluss gekommen, dass es an den Strichlinien im 3D Skript liegt.
Hab dazu ein Subprogramm in beiden GDL Objekten. Ist aber unterschiedlich im Einsatz.
Also am Subprogramm selber liegts nicht, nur an dessen Anwendung.
... komm aber nicht auf den Fehler
Hier das Subprogramm
"Dashed Line":
!Input: ! - Line end points: (x1, y1, z1~z) and (x2, y2, z2)
! - Dash length: dashLength
if getValues then
x1 = get(1): y1 = get(1): z1 = get(1)
x2 = get(1): y2 = get(1): z2 = get(1)
dashLength = get(1)
getValues = 0
endif
!Return: NONE !Draw a dashed line
!Calculate the line length and direction vectors
ux = x2 - x1
uy = y2 - y1
uz = z2 - z1
L = sqr(ux^2 + uy^2 + uz^2)
ux = ux/L
uy = uy/L
uz = uz/L
!Calculate the length of the first and last dashes
nDashes = int(1 + (L + dashLength)/(2*dashLength))
extraLength = (nDashes*(2*dashLength)-dashLength)-L
startLength = dashLength - extraLength/2
!Draw the lines
add x1, y1, z1
lin_ 0, 0, 0,
startLength*ux, startLength*uy, startLength*uz
L1 = startLength + dashLength
repeat
L2 = min(L1 + dashLength, L)
lin_ L1*ux, L1*uy, L1*uz,
L2*ux, L2*uy, L2*uz
L1 = L2 + dashLength
until L1 > L
del 1
return
Hab dieses Subprogramm zwar auch in beiden GDL Objekten. Ist aber unterschiedlich im Einsatz.
am 2024-07-13 10:39 PM
"Toter" Hotspot ist es nicht. Hab die Hotspot verschoben.
_unid wurde in beiden Fällen vorher nicht erstellt. Ist es also auch nicht.
Hab immer wieder Teile des Skripts gelöscht und bin zum Schluss gekommen, dass es an den Strichlinien im 3D Skript liegt.
Hab dazu ein Subprogramm in beiden GDL Objekten. Ist aber unterschiedlich im Einsatz.
Also am Subprogramm selber liegts nicht, nur an dessen Anwendung.
... komm aber nicht auf den Fehler
Hier das Subprogramm
"Dashed Line":
!Input: ! - Line end points: (x1, y1, z1~z) and (x2, y2, z2)
! - Dash length: dashLength
if getValues then
x1 = get(1): y1 = get(1): z1 = get(1)
x2 = get(1): y2 = get(1): z2 = get(1)
dashLength = get(1)
getValues = 0
endif
!Return: NONE !Draw a dashed line
!Calculate the line length and direction vectors
ux = x2 - x1
uy = y2 - y1
uz = z2 - z1
L = sqr(ux^2 + uy^2 + uz^2)
ux = ux/L
uy = uy/L
uz = uz/L
!Calculate the length of the first and last dashes
nDashes = int(1 + (L + dashLength)/(2*dashLength))
extraLength = (nDashes*(2*dashLength)-dashLength)-L
startLength = dashLength - extraLength/2
!Draw the lines
add x1, y1, z1
lin_ 0, 0, 0,
startLength*ux, startLength*uy, startLength*uz
L1 = startLength + dashLength
repeat
L2 = min(L1 + dashLength, L)
lin_ L1*ux, L1*uy, L1*uz,
L2*ux, L2*uy, L2*uz
L1 = L2 + dashLength
until L1 > L
del 1
return
am 2024-07-15 11:43 AM
Mit get(1) holst du ja Werte aus dem linearen Parameterspeicher.
Falls du (bzw der zuvor abgelaufene Programmteil) den Parameterspeicher zuvor nicht befüllt hast, kann das eventuell dazu führen, dass L=0 ist. Die Division durch 0 ist eventuell dann das Problem.
2024-07-15 06:18 PM - bearbeitet 2024-07-15 06:19 PM
Müsste ich mal probieren können, um es wirklich zu sagen. Poste das ganze GDL mal hier, dann sehen wir weiter.
am 2024-08-22 02:28 PM