Jump to content
BauerHeini

Objekte per Schlagwort ansprechen

Recommended Posts

Hallo,

kann mir jemand einen Tipp geben, wie ich mit "pairs" alle Objekte mit einem bestimmten Schlagwort ansprechen kann (wenn ja, natürlich wie;))

Gruss

BauerHeini

Share this post


Link to post
Share on other sites

Da diese Objekte nicht per se in einer Tabelle stehen, kommst du auch nicht mit pairs() dran.

Sie können mit der Funktion layout:getEntitiesByKeyword() alle in eine Tabelle übertragen werden. 

Danke für die Erinnerung, Timba!

Edited by Goetz
Aussage nach Hinweis von Timba berichtigt

Share this post


Link to post
Share on other sites
local t = layout:getEntitiesByKeyword("B-Bahnhofsignal")
for i, Wdh in ipairs(t) do
  Wdh.variables["Zug"] = $("")
  Wdh.state = 0
end

Ohne Tabelle und mit Schlagwort könnte es so wie in diesem Beispiel gehen.

Hier wird bei allen Signalen mit dem Schlagwort "B-Bahnhofsignal" die Objektvariable "Zug" auf "leer" gesetzt und das Signal geschlossen (State = 0).

 

Share this post


Link to post
Share on other sites

Nicht mir gebührt das Lob, sondern dem Schöpfer des MBS, denn was ich hier beitragen konnte ist doch nur das, was bei der Umwandlung von der grafischen EV nach Lua herauskommt. Ich gebe das Lob gerne an Neo weiter. (y)

Share this post


Link to post
Share on other sites

Hallo,

als Ergänzung zu Timbas Lösung:

Schlagwort.jpg.4d271974ce204becdfadda9e5b27d80e.jpg

Objekte mit einem bestimmten Schlagwort kannst du auch ohne Lua ansprechen.

Viele Grüße,

Neo

Share this post


Link to post
Share on other sites
Posted (edited)

Hab da auch wieder mal eine Frage zu den Schlagworten und Objekten ....

Ich habe meine Züge in Kategorien wie z.B. Güterzug, Personenzug, Nahverkehr, Fernverkehr usw. aufgeteilt  und möchte eine Reige von Weichen beim betreten eines Einfahr GK´s schalten. So soll der Güterzug z.B. über ein seperates Gleis (ohne Bahnsteig) fahren, Personenzübe in den Bahnhof einfahren und die Nahverkehrszüge auf Gleis 1 und 2, die Fernverkehrszüge auf Gleis 3 und 4 verteilt werden.

Ich habe mir das recht einfach vorgestellt, indem beim Einfahr-GK die Schlagworte abgefragt werden und entsprechend die Weichen geschaltet werden.
Allerdings suche ich die Scchlagwortabfrage für das auslösende Fahrzeug bisher vergeblich.

- Gleiskontakt wird betreten..... und dann find ich bei den Bedingungen nichts wo ich die Schlagworte des Fahrzeugs abfragen kann.  ;-(

Kann mir da jemand sagen wo ich das finde ?

 

--->  Edit, glaube es doch noch gefunden zu haben ..... bei den Widerholungen "für objekte mit dem Schlagwort"  

Allerdings kann ich da nur nach einem Schlagwort abfragen, eine Abfrage ob das auslösende Objekt das Schlagwort X und das Schlagwort Y hat geht anscheinend in der grafischen EV nicht.

Edited by bigrala

Share this post


Link to post
Share on other sites

Hi @bigrala

die Bedingung ist "Eigenschaft/Variable existiert".

Dann wählst du "Variable (Erweitert)", trägst bei Objekt "Auslöser" und "Fahrzeug" ein und dann bei Name das Schlagwort. Das ist alles.

Gruß Timba

Share this post


Link to post
Share on other sites

Super, danke Timba .... genau was ich gesucht hatte. Habs  nur nicht dort gesucht

Share this post


Link to post
Share on other sites
Posted (edited)

Moin,

Sorry, hat sich erledigt .... Fehler gefunden

 

Edited by bigrala

Share this post


Link to post
Share on other sites

Hallo zusammen,

ich habe jetzt ein paar Tage gebraucht, bis ich herausgefunden habe, wie man mehrere Schranken über ein Schlagwort einfach ansteuern kann.

511.thumb.jpg.1276a2487412611d04d828d4d9a2bc61.jpg

Im Feld "Animation" (roter Kasten) steht zunächst einmal immer "alle Animationen", was ja auch logisch ist, weil ja über ein Schlagwort auch Objekte mit unterschiedlichen und verschieden vielen Animationen zusammengefasst sein könnten. Also fördert auch ein Klick auf den Pfeil rechts keine andere Auswahlmöglichkeit.

Jetzt habe ich endlich herausgefunden, dass man hier die geforderte Animation händisch eintragen muss. Dazu muss aber die Schreibweise zwingend exakt mit der im Modell angegebenen Schreibweise für die angeforderte Animation übereinstimmen. Ein weggelassenes Leerzeichen löst die Animation dann schon nicht aus.

Was mich jetzt etwas stutzig macht, ist die Tatsache, dass links (blauer Kasten) im Feld "Animation abspielen" der zweite Wert immer als [Leer] erscheint, obwohl die Animation korrekt funktioniert.

Wenn man die grafische Eingabe in Lua übersetzt, sieht alles wieder korrekt aus:

local t = layout:getEntitiesByKeyword("Schranken")
for i, Wdh in ipairs(t) do
  if $("Animierter Kippschalter für Schranke").state == 1 then
    Wdh.animations["01 Schließen"]:play(0, 1)
  else
    Wdh.animations["02 Öffnen"]:play(0, 1)
  end
end

Habe ich da irgend etwas übersehen oder nicht verstanden?

HG

Brummi

Share this post


Link to post
Share on other sites

Das ist wirklich so Brummi.

Gruß
  Andy

Share this post


Link to post
Share on other sites
vor 8 Stunden schrieb Roter Brummer:

Jetzt habe ich endlich herausgefunden, dass man hier die geforderte Animation händisch eintragen muss. Dazu muss aber die Schreibweise zwingend exakt mit der im Modell angegebenen Schreibweise für die angeforderte Animation übereinstimmen. Ein weggelassenes Leerzeichen löst die Animation dann schon nicht aus.

Als Tipp, einfach vorübergehend ein entsprechendes Objekt auswählen, dann kannst du direkt aus der Animationsliste die entsprechende heraussuchen und anschliesend bei Objekt auf „Wdh“ wechseln. So bleibt der korrekte Animationsname erhalten und es können sich keine Schreibfehler einschleichen. Ansonsten kann ich auch bestätigen, dass bei der grafischen EV [leer] steht. Habe ich auch schon bei anderen Fällen gesehen. Aber wenn es richtig angelegt ist funktioniert es.

Gruß Frank

Share this post


Link to post
Share on other sites

Hallo,

vor 10 Stunden schrieb Roter Brummer:

Was mich jetzt etwas stutzig macht, ist die Tatsache, dass links (blauer Kasten) im Feld "Animation abspielen" der zweite Wert immer als [Leer] erscheint, obwohl die Animation korrekt funktioniert.

danke für den Hinweis, es handelt sich hier um einen Anzeigefehler, der jedoch keine negativen Auswirkungen auf die Abläufe hat. Dennoch werde ich den Fehler korrigieren.

Viele Grüße,

Neo

Share this post


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

×