Jump to content

Verschieben von Objekten per Lua


Recommended Posts

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

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

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

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

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

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
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
  • 3 weeks later...

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

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
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

@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
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 (y)

Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...