ralf4 Geschrieben 31. Januar 2021 Geschrieben 31. Januar 2021 Hallo zusammen, ich habe ein Frage. Ich würde gerne ein Objekt per Skript an einer anderen Stelle platzieren. Mein Objekt steht der Einfachheit halber auf den Koordinaten Position: x=0, y=0, z=0 Rotation: x=0, y=0, z=0 Mein Objekt local v = $("Strassenmeisterei") Mit folgendem Aufruf würde ich (offensichtlich naiverweise ) erwarten, dass mein Objekt auf der X-Achse um 200mm verschoben wird:v.transformation:translateX(200) Es landet aber leider auf der x-Koordinate "2298,85" Kann mir hier vielleicht behilfich sein? Gibt es da noch irgendeinen Faktor, der mit reinspielt? Muss ich den Umrechnungswert noch irgendwie in mm formatieren? Schon mal vielen Dank und Grüße Ralf
Neo Geschrieben 31. Januar 2021 Geschrieben 31. Januar 2021 Hallo Ralf, die EV und Lua arbeiten immer im Maßstab 1:1 und Meter. Bei Verwendung anderer Maßstäbe musst du entsprechene Umrechnungen vornehmen. Viele Grüße, Neo
ralf4 Geschrieben 31. Januar 2021 Autor Geschrieben 31. Januar 2021 Hallo Neo, vielen Dank für die schnelle Antwort. Wenn ich es richtig verstehe wäre dann mein Aufruf auf Meter umgerechnet (also X/1000) folgender: v.transformation:translateX(0,2) Das Objekt landet dann auf der x-Koordinate "22,99". Also mit zwei Stellen hinter dem Komma (wieso gibt es in diesem Fall überhaupt Nach-Komma-Stellen?) Irgendwo mache ich noch etwas falsch/habe einen Gedankenfehler ... Viele Grüße Ralf
Goetz Geschrieben 31. Januar 2021 Geschrieben 31. Januar 2021 (bearbeitet) vor 35 Minuten schrieb ralf4: Irgendwo mache ich noch etwas falsch Dein Maßstab fehlt noch H0 zum Beispiel ist 1 : 87 Bearbeitet 31. Januar 2021 von Goetz
ralf4 Geschrieben 31. Januar 2021 Autor Geschrieben 31. Januar 2021 Hi Goetz, das sieht schon besser aus :). Jetzt bräuchte ich nur noch einen Hinweis, wie ich sowohl in positiver als auch in negativer Richtung verschieben kann. v.transformation:translateX(0,0107) und v.transformation:translateX(-0,0107) Bei beiden Aufrufen wird das Objekt additiv auf der X-Achse verschoben. Und noch ne Frage am Rand: Kann man nicht einem Objekt einfach per Skript neue Koordinaten zuordnen? Mit Drag´n´Drop bekomme ich das ja auch hin. Vielen Dank und viele Grüße Ralf
Roter Brummer Geschrieben 31. Januar 2021 Geschrieben 31. Januar 2021 Hallo Ralf, du kannst auch als Ziele beliebige Hilfsobjekte (z.B. eine kleine Fläche aus den Grundkörpern) nehmen. if $("Taste 1").state == 0 then $(""):invoke() end local Quelle = $("20' Container-2") local Ziel = $("Abstellfläche 20′") Quelle.transformation.position = Ziel.transformation.position Quelle.transformation.rotation = Ziel.transformation.rotation Wenn Taste 1 betätigt wird, dann verschiebt sich das Objekt "20' Container-2" mit seinem Nullpunkt zum Nullpunkt des Objekts "Abstellfläche 20'". Die Quelle kann also in alle möglichen Richtungen verschoben und/oder sogar um beliebige Achsen gedreht werden. HG Brummi
Neo Geschrieben 31. Januar 2021 Geschrieben 31. Januar 2021 Hallo Ralf, vor 59 Minuten schrieb ralf4: v.transformation:translateX(0,0107) und v.transformation:translateX(-0,0107) Lua als "englische Programmiersprache" verwendet den Punkt (.) als Dezimaltrenner und das Komma (,) als Trenner für Argumente. Deine Zahl muss daher korrekt 0.0107 lauten, dann klappt es auch mit dem negativen Vorzeichen. Viele Grüße, Neo
Goetz Geschrieben 31. Januar 2021 Geschrieben 31. Januar 2021 vor 1 Stunde schrieb ralf4: Kann man nicht einem Objekt einfach per Skript neue Koordinaten zuordnen? Na klar, dafür sind Skripte ja da. Bau dir eine Routine, welche die von dir bevorzugten Werte in das umrechnet, was die Funktion benötigt. Du musst diese Werte nicht vorher im Kopf ausrechnen. Du hast doch einen Computer.
ralf4 Geschrieben 31. Januar 2021 Autor Geschrieben 31. Januar 2021 @All Da bleibt nicht viel zu sagen: Euch allen VIELEN DANK! Habe die Quelle-Ziel-Lösung verwendet. Löst mein Problem wunderbar. Ein schönes Restwochenende Ralf
Herman Geschrieben 22. Februar 2021 Geschrieben 22. Februar 2021 Hallo, Danke für dieses Thema. Nach einer Weile verstehe ich : vehicle.transformation:rotateZ(z) $("xxx").transformation:translate(0.1*87, 0.1*87, 0) ( in HO ) local t = $("xxx").transformation.position und verwandte Angelegenheiten. Aber um ein Objekt nach (x, y, z) zu verschieben, verwende ich : local zero = {} $("Buche").transformation.position = zero $("Buche").transformation:translate(26.1,26.1,0) -- Transformation zu (300,300,0) mm in scale HO Also über (0,0,0). Funktioniert gut. Ich kann nicht direkt zu (x, y, z) gehen. Eine kleine Reaktion der Experten bitte. Grüße, Herman
Herman Geschrieben 22. Februar 2021 Geschrieben 22. Februar 2021 google hat ein paar großbuchstaben auf deutsch geschrieben, sorry
Goetz Geschrieben 22. Februar 2021 Geschrieben 22. Februar 2021 (bearbeitet) vor 42 Minuten schrieb Herman: Ich kann nicht direkt zu (x, y, z) gehen. Aber zu {x=0, y=0, z=0} Denn du benötigst eine Tabelle, in der die Zellen die Namen x, y und z haben. $("Buche").transformation.position = {x = 0, y = 0, z = 0} Hier ist ein Beispiel für dich: object positioning.mbp Bearbeitet 22. Februar 2021 von Goetz
Herman Geschrieben 22. Februar 2021 Geschrieben 22. Februar 2021 So einfach, aber du musst es wissen. Wirklich danke ! Um eine Antwort zu finden habe ich versucht, den Inhalt der Tabelle in einem Etikett anzuzeigen. local t = $("xxx").transformation.position $("Label01").text = t[1] Aber er hat das Element nicht angegeben Was ist hier los? Wahrscheinlich ein Missverständnis von mir ?
Herman Geschrieben 22. Februar 2021 Geschrieben 22. Februar 2021 Wenn wir uns die Tabelle ansehen, ist der Inhalt keine Zeichenfolge und keine Zahl, daher müssen wir konvertieren ? Luas table.tostring ist hier nicht gültig Aber Problem gelöst. Danke Goetz
Goetz Geschrieben 22. Februar 2021 Geschrieben 22. Februar 2021 vor 1 Stunde schrieb Herman: Wahrscheinlich ein Missverständnis von mir ? Ja, denn es gibt in dieser Tabelle keine Zelle mit der Nummer 1 Und weil es keine durchnummerierte Liste ist, geht auch table.tostring nicht. Die Zellen haben hier Namen, nämlich "x", "y" und "z" Mit in pairs kannst du in Lua paarweise Zellenname und Zelleninhalt bekommen: local t = $("Buche").transformation.position for Zellenname, Zelleninhalt in pairs(t) do print(Zellenname," - ", Zelleninhalt) end
Herman Geschrieben 22. Februar 2021 Geschrieben 22. Februar 2021 @Goetz Hallo, Ich habe auch vergessen, dass eine Tabelle auch Zeichenfolgen als Namen hat. Schande Ich habe getestet : local w = { x=26.1, y=26.1, z =0 } $("Buche").transformation.position = w $("Label01").text = w["x"] / 87 -> 0.3 = 0,3 m = 300 mm in HO Viel gelernt, dankeschön.
Goetz Geschrieben 22. Februar 2021 Geschrieben 22. Februar 2021 vor einer Stunde schrieb Herman: Ich habe auch vergessen, dass eine Tabelle auch Zeichenfolgen als Namen hat. Das ist eine exotische Eigenschaft in Lua. Tabellen sind "dictionaries/tables" und "lists/arrays" in einem. Man kann sogar beides in einer Tabelle vereinen. Aber man muss wissen, dass bestimmte Eigenschaften nur für den Listenteil einer Tabelle gelten. vor einer Stunde schrieb Herman: Ich habe getestet Sehr gut
Hawkeye Geschrieben 7. Juni 2021 Geschrieben 7. Juni 2021 Am 31.1.2021 um 12:59 schrieb Neo: die EV und Lua arbeiten immer im Maßstab 1:1 und Meter. Bei Verwendung anderer Maßstäbe musst du entsprechene Umrechnungen vornehmen. Hallo @Neo, kann man den verwendeten Maßstab mit einem Lua - Befehl einlesen? Er kann doch selbst in geöffneten Anlagen beliebig geändert werden. Damit wäre es eventuell möglich, das der Maßstab für Berechnungen/ Umrechnungen automatisch angepasst wird, ggf. durch eine Funktion, wenn er er als String existiert. Eine Objekt-Skalierung lässt sich ja mit Objekt.transformation.scaling einlesen. Viele Grüße Hawkeye
Neo Geschrieben 8. Juni 2021 Geschrieben 8. Juni 2021 Hallo, vor 10 Stunden schrieb Hawkeye: Damit wäre es eventuell möglich, das der Maßstab für Berechnungen/ Umrechnungen automatisch angepasst wird das ist nicht nötig, da es aus Sicht der EV/Lua gar keinen Anlagenmaßstab gibt, da alle Werte in 1:1 (m) interpretiert werden. Eine Umrechnung auf den tatsächlichen Anlagenmaßstab findet vom Studio automatisch statt. Viele Grüße, Neo
Hawkeye Geschrieben 9. Juni 2021 Geschrieben 9. Juni 2021 Am 8.6.2021 um 07:56 schrieb Neo: Eine Umrechnung auf den tatsächlichen Anlagenmaßstab findet vom Studio automatisch statt. Hallo Neo, ja, das stimmt, habe es mal ausprobiert. Aber nur sofern man den Maßstab der Anlage verändert und an Werten (Variablen), die in der EV auf einen bestimmten Maßstab umgerechnet werden, nichts verändert! Eine Ausnahme gibt es dann schon, wenn man eine Variable z.B. in 1: 87 (H0) definiert hat, die per Lua für die Ausführung in 1:1 [m] umgerechnet wird, in einem anderen gewählten Maßstab für die Anlage verändern möchte, dann muß man aber „wissen“, das diese Variable in H0 zu verändern ist, und nicht in dem neuen gewählten Maßstab für die Anlage. In diesem Fall kommt sonst ein anderes Ergebnis bei der Ausführung heraus. Beispiel: Variable = 100 mm in H0 definiert, in Lua auf 1:1 umgerechnet = 8,7 m Ändere ich den Maßstab der Anlage auf 1:1 [m] und möchte die Variable auf 10m verändern, darf ich nicht 10 als Variablen-Wert eingeben, sondern muß „wissen“ und berücksichtigen, das Variable in H0 einzugeben ist, da die Umrechnung ja trotzdem stattfindet. Variable neu = 114,94 (H0), obwohl ich jetzt im Maßstab 1:1 bin. Ich werde meine EV so umschreiben, dass die Variablen jetzt direkt im Maßstab 1:1 einzugeben sind, dann spielt der Maßstab keine Rolle mehr, und eine Umrechnung ist dann auch nicht mehr nötig. Viele Grüße, Hawkeye
Neo Geschrieben 9. Juni 2021 Geschrieben 9. Juni 2021 Hallo, vor 2 Minuten schrieb Hawkeye: Ich werde meine EV so umschreiben, dass die Variablen jetzt direkt im Maßstab 1:1 einzugeben sind, das ist die empfohlene Herangehensweise, denn so arbeitet auch die gesamte EV (maßstabsfrei). Viele Grüße, Neo PS: Deine Beiträge sind etwas schwer zu lesen, weil du viele Leerzeilen einfügst. Du brauchst die Enter-Taste hier im Forum nur zu drücken, wenn du einen neuen Absatz beginnen willst, ein Zeilenumbruch findet automatisch statt.
Hawkeye Geschrieben 9. Juni 2021 Geschrieben 9. Juni 2021 vor 11 Minuten schrieb Neo: PS: Deine Beiträge sind etwas schwer zu lesen, weil du viele Leerzeilen einfügst. Du brauchst die Enter-Taste hier im Forum nur zu drücken, wenn du einen neuen Absatz beginnen willst, ein Zeilenumbruch findet automatisch statt. Ärgere mich jedesmal darüber, wenn ich vom Tablet schreibe. Da ich es gewohnt bin, die Absatzformatierung selbst durchzuführen. Versuch es mir zu merken, danke für den Tip. VG Hawkeye
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen.
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden