ralf4 Posted January 31 Share Posted January 31 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 Link to post Share on other sites
Neo Posted January 31 Share Posted January 31 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 Link to post Share on other sites
ralf4 Posted January 31 Author Share Posted January 31 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 Link to post Share on other sites
Goetz Posted January 31 Share Posted January 31 (edited) vor 35 Minuten schrieb ralf4: Irgendwo mache ich noch etwas falsch Dein Maßstab fehlt noch H0 zum Beispiel ist 1 : 87 Edited January 31 by Goetz Link to post Share on other sites
ralf4 Posted January 31 Author Share Posted January 31 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 Link to post Share on other sites
Roter Brummer Posted January 31 Share Posted January 31 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 Link to post Share on other sites
Neo Posted January 31 Share Posted January 31 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 Link to post Share on other sites
Goetz Posted January 31 Share Posted January 31 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. Link to post Share on other sites
ralf4 Posted January 31 Author Share Posted January 31 @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 Link to post Share on other sites
Herman Posted Monday at 02:06 PM Share Posted Monday at 02:06 PM 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 Link to post Share on other sites
Herman Posted Monday at 02:16 PM Share Posted Monday at 02:16 PM google hat ein paar großbuchstaben auf deutsch geschrieben, sorry Link to post Share on other sites
Goetz Posted Monday at 02:48 PM Share Posted Monday at 02:48 PM (edited) 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 Edited Monday at 02:49 PM by Goetz Link to post Share on other sites
Herman Posted Monday at 03:15 PM Share Posted Monday at 03:15 PM 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 ? Link to post Share on other sites
Herman Posted Monday at 03:44 PM Share Posted Monday at 03:44 PM 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 Link to post Share on other sites
Goetz Posted Monday at 05:03 PM Share Posted Monday at 05:03 PM 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 Link to post Share on other sites
Herman Posted Monday at 05:51 PM Share Posted Monday at 05:51 PM @Goetz Danke vielmals, Herman Link to post Share on other sites
Herman Posted Monday at 06:34 PM Share Posted Monday at 06:34 PM @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. Link to post Share on other sites
Goetz Posted Monday at 08:00 PM Share Posted Monday at 08:00 PM 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 Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now