siggi Geschrieben 13. November 2020 Geschrieben 13. November 2020 Hallo, gibt es eine Möglichkeit (EV/ Lua) festzustellen, welche Fahrzeuge auf einem Gleis stehen? Das Fahrzeuge auf einem Gleis stehen ist ja mit der EV Bedingung "Fahrzeug steht auf Gleis" gelöst. LG Siggi
h.w.stein-info Geschrieben 13. November 2020 Geschrieben 13. November 2020 Hallo Siggi Im Protokollierung ist es sichtbar - denke man kann es abfragen und auf eine Beschriftung abgeben . Kann Dir aber hier nicht genau sagen , wie es in der EV / Lua geht - hier muss ich noch viel lernen und verstehen ! Viele sind da weiter , die hier Hinweise geben können . Viele Grüße HnS
Neo Geschrieben 13. November 2020 Geschrieben 13. November 2020 Hallo Siggi, vor 29 Minuten schrieb siggi: gibt es eine Möglichkeit (EV/ Lua) festzustellen, welche Fahrzeuge auf einem Gleis stehen? ist dir die Wiederholung "Für alle Fahrzeuge auf einem Gleis/Gleiskontakt" bekannt? Viele Grüße, Neo
siggi Geschrieben 13. November 2020 Autor Geschrieben 13. November 2020 vor 2 Minuten schrieb Neo: Hallo Siggi, ist dir die Wiederholung "Für alle Fahrzeuge auf einem Gleis/Gleiskontakt" bekannt? Viele Grüße, Neo Hallo Neo, danke für den Hinweis! Bisher ist mir die Wiederholung nicht bekannt, muss aber gestehen, dass ich sie (Wiederholung allg.) bis dato nicht benutzt habe. Werde mich dann mal damit beschäftigen. Gruß Siggi
siggi Geschrieben 13. November 2020 Autor Geschrieben 13. November 2020 vor 26 Minuten schrieb h.w.stein-info: Hallo Siggi Im Protokollierung ist es sichtbar - denke man kann es abfragen und auf eine Beschriftung abgeben . Kann Dir aber hier nicht genau sagen , wie es in der EV / Lua geht - hier muss ich noch viel lernen und verstehen ! Viele sind da weiter , die hier Hinweise geben können . Viele Grüße HnS Hallo h.w.stein, danke für die Info. Bei mir bekomme ich nur die Lok eines Zuges angezeigt, nicht aber die Wagen. Gruß Siggi
h.w.stein-info Geschrieben 13. November 2020 Geschrieben 13. November 2020 Hallo Siggi Denke , dass hier nur die Fahrzeuge ( Lok / Fahrzeug / Personen / Flugzeuge usw. ) mit Antrieb genutzt wird , da man diese auch in der Regel steuert . Hier hat Goetz ein Beispiel als Video gemacht mit den Zugverband " Tram an den Haltestellen " . Das ist von der grafische EV auf Lua umgewandelt und erweitert worden . Lua hat hierbei mehr Möglichkeiten . Viele Grüße HnS
siggi Geschrieben 13. November 2020 Autor Geschrieben 13. November 2020 Danke für eure Hilfe! Hat super geklappt. Schönen Abend Gruß Siggi
Goetz Geschrieben 13. November 2020 Geschrieben 13. November 2020 (bearbeitet) Für deinen Ausgabetext würde ich dir gerne eine Hilfe anbieten: local AusgabeText = { "Zug: "..Zugname, Zugteile, "\rLoks: "..Loks, "Wagen: "..Wagen, "Gesamt: "..Loks+Wagen } $("GBS_txt-Gleisbelegung").text = table.concat(AusgabeText, "\r") das ist noch ungeprüft. Kann also Fehler enthalten. Beachte bitte, dass ein \r von table.concat eingesetzt wird und deshalb nur Loks einen (zweiten) \r enthält. Ich finde, dass diese Form leichter anzupassen ist, wenn man Texte ändern möchte. table.concat fügt alle Zellen einer Liste als Text aneinander. Das zweite Argument bestimmt, was als Trennzeichen zwischen die Zellinhalte kommt. Statt des \r vor Loks hätte ich auch einen leeren String einfügen können. Dann entspräche die Tabelle optisch noch mehr dem Ausgabetext. Bearbeitet 13. November 2020 von Goetz
siggi Geschrieben 14. November 2020 Autor Geschrieben 14. November 2020 vor 10 Stunden schrieb Goetz: Für deinen Ausgabetext würde ich dir gerne eine Hilfe anbieten: local AusgabeText = { "Zug: "..Zugname, Zugteile, "\rLoks: "..Loks, "Wagen: "..Wagen, "Gesamt: "..Loks+Wagen } $("GBS_txt-Gleisbelegung").text = table.concat(AusgabeText, "\r") das ist noch ungeprüft. Kann also Fehler enthalten. Beachte bitte, dass ein \r von table.concat eingesetzt wird und deshalb nur Loks einen (zweiten) \r enthält. Ich finde, dass diese Form leichter anzupassen ist, wenn man Texte ändern möchte. table.concat fügt alle Zellen einer Liste als Text aneinander. Das zweite Argument bestimmt, was als Trennzeichen zwischen die Zellinhalte kommt. Statt des \r vor Loks hätte ich auch einen leeren String einfügen können. Dann entspräche die Tabelle optisch noch mehr dem Ausgabetext. Hallo Götz, danke für die Hilfe! Ich werde den Skriptschnippsel nachher mal einbauen. Als Lua Neuling bin ich f+r jedem Tipp dankbar. Schönen Sonntag Gruß Siggi
Goetz Geschrieben 14. November 2020 Geschrieben 14. November 2020 Hallo Siggi, vor einer Stunde schrieb siggi: Als Lua Neuling bin ich für jeden Tipp dankbar. Dann möchte ich dir gerne noch eine (bessere) Alternative anbieten. Du kannst Strings in Lua erstens mehrzeilig anlegen und zweitens mit Platzhaltern (für Namen, Nummern etc.) versehen. Der Befehl string.format() setzt dann der Reihe nach die Daten dort ein, wo die Platzhalter stehen. Ein mehrzeiliger String wird in doppelte eckige Klammern anstelle der Anführungszeichen eingebettet. Platzhalter markiert man mit einem vorangestellten % Zeichen. Der nachfolgende Buchstabe deklariert dann den Typen, der hier eingesetzt werden soll. %s ist der Platzhalter für einen String, %d ist der Platzhalter für eine Ganzzahl. local TextMuster = [[ Zug: %s %s Loks: %d Wagen: %d Gesamt: %d ]] local AusgabeText = string.format(TextMuster, Zugname, Zugteile, Loks, Wagen, Loks+Wagen) $("Versuchstext").text = AusgabeText Wie du siehst, sind die Zeilenumbrüche hier einfach im Textmuster enthalten. Der Steuercode für eine neue Zeile entfällt damit. Das wäre in Lua der "amtliche" Umgang mit Textbausteinen. Viele Grüße Götz
siggi Geschrieben 14. November 2020 Autor Geschrieben 14. November 2020 vor einer Stunde schrieb Goetz: Hallo Siggi, Dann möchte ich dir gerne noch eine (bessere) Alternative anbieten. Du kannst Strings in Lua erstens mehrzeilig anlegen und zweitens mit Platzhaltern (für Namen, Nummern etc.) versehen. Der Befehl string.format() setzt dann der Reihe nach die Daten dort ein, wo die Platzhalter stehen. Ein mehrzeiliger String wird in doppelte eckige Klammern anstelle der Anführungszeichen eingebettet. Platzhalter markiert man mit einem vorangestellten % Zeichen. Der nachfolgende Buchstabe deklariert dann den Typen, der hier eingesetzt werden soll. %s ist der Platzhalter für einen String, %d ist der Platzhalter für eine Ganzzahl. local TextMuster = [[ Zug: %s %s Loks: %d Wagen: %d Gesamt: %d ]] local AusgabeText = string.format(TextMuster, Zugname, Zugteile, Loks, Wagen, Loks+Wagen) $("Versuchstext").text = AusgabeText Wie du siehst, sind die Zeilenumbrüche hier einfach im Textmuster enthalten. Der Steuercode für eine neue Zeile entfällt damit. Das wäre in Lua der "amtliche" Umgang mit Textbausteinen. Viele Grüße Götz Guten Morgen Götz, nochmal danke! Beide Varianten getestet und für gut befunden. Und gleich kommen wieder Fragen auf: 1 - wo kommen die Blanks in Variante 2 her (sh. Foto)? 2 - kann ich auch Objektbezeichnungen in Lua in Strings umwandeln (zB. Gleis 2 in "Gleis 2") 3 - Wie man in der Textausgabe sieht, ist die Reihenfolge der Zugteile willkürlich. Kann man die Reihenfolge abfragen? Am Anfang von Modellbaustudio wollte ich mich eigentlich nicht mit Lua befassen, aber irgendwann kommt man nicht daran vorbei. Nachdem ich laufe meines Lebens einige Scriptsprachen erlernt habe (Informix, VB Script für Access, ASP, Visual Studio, Java Script) komme ich auch langsam in Lua rein, man muss nur immer wieder andere Syntax und Befehle aus dem Kopf bekommen. Viele Grüße Siggi
Goetz Geschrieben 14. November 2020 Geschrieben 14. November 2020 (bearbeitet) vor einer Stunde schrieb siggi: 1 - wo kommen die Blanks in Variante 2 her (sh. Foto)? möglicherweise durch Einrückungen in deinem Code? Im mehrzeiligen String dürfen die natürlich nicht stehen, weil Lua sie dort nicht als Einrückungen, sondern als Teil des Textes versteht. Die entstehen durch den Zeilenumbruch im Textblock. Der fügt (aus mir unbekanntem Grund) noch einen Tab-Sprung ein. Bei der Auflistung machst du den Zeilenumbruch mit \r. Wenn du da noch ein \t dahinter setzt, stehst alles auf einer Höhe. vor einer Stunde schrieb siggi: 2 - kann ich auch Objektbezeichnungen in Lua in Strings umwandeln (zB. Gleis 2 in "Gleis 2") Der Name eines Objekts ist eine Eigenschaft namens "name". Und der Inhalt dieser Variablen ist ein String. vor einer Stunde schrieb siggi: 3 - Wie man in der Textausgabe sieht, ist die Reihenfolge der Zugteile willkürlich. Das ist die Reihenfolge, in der das Modellbahn Studio die Fahrzeuge auf dem Gleis liefert. vor einer Stunde schrieb siggi: Beide Varianten getestet und für gut befunden. Viel lieber hätte ich gelesen, dass du sie studiert und verstanden hast. Im Übrigen musst du nicht jedes Mal mein gesamtes Posting zitieren, um darauf zu antworten. Bearbeitet 14. November 2020 von Goetz Ergänzungen nach neuen Erkenntnissen.
siggi Geschrieben 14. November 2020 Autor Geschrieben 14. November 2020 Hallo Götz, vor 7 Minuten schrieb Goetz: möglicherweise durch Einrückungen in deinem Code? Im mehrzeiligen String dürfen die natürlich nicht stehen, weil Lua sie dort nicht als Einrückungen, sondern als Teil des Textes versteht. Nichts eingerückt! local TextMuster = [[ Zug: %s %s Loks: %d Wagen: %d Gesamt: %d ]] local AusgabeText = string.format(TextMuster, ZugName, ZugElemente, Loks, Wagen, Loks+Wagen) $("GBS_txt-Gleisbelegung").text = AusgabeText vor 8 Minuten schrieb Goetz: Der Name eines Objekts ist eine Eigenschaft namens "name". Und der Inhalt dieser Variablen ist ein String. -- Variablen vorbelegen local tbl = layout:getVehiclesOn(Gleis) Local Wagen = 0 ......... Wenn ich die Variable "Gleis" (Als Parameter(Objekt) von der Taste übergeben) aus dem Script ausgeben will, bleibt die Anzeige leer. (Nicht wirklich schlimm, ich werde studieren und forschen. vor 15 Minuten schrieb Goetz: Das ist die Reihenfolge, in der das Modellbahn Studio die Fahrzeuge auf dem Gleis liefert. OK! Wieder was dazugelernt! vor 16 Minuten schrieb Goetz: Viel lieber hätte ich gelesen, dass du sie studiert und verstanden hast. 😊Hab ich!! Um die Vorschläge zu verstehen, kopiere ich sie nicht einfach sondern schreibe sie selber neu. Ich werde auch nicht immer warten bis ich eine Antwort aus dem Forum bekomme, zwischenzeitlich forsche und probiere ich selber! 😉 Viele Grüße Siggi
Goetz Geschrieben 14. November 2020 Geschrieben 14. November 2020 vor 12 Minuten schrieb siggi: Um die Vorschläge zu verstehen, kopiere ich sie nicht einfach sondern schreibe sie selber neu. perfekt vor 14 Minuten schrieb siggi: Wenn ich die Variable "Gleis" (Als Parameter(Objekt) von der Taste übergeben) aus dem Script ausgeben will, bleibt die Anzeige leer. Weil die Variable nur eine Adresse enthält und nicht den Namen. Hast du es schon mit Gleis.name versucht?
Goetz Geschrieben 14. November 2020 Geschrieben 14. November 2020 vor 15 Minuten schrieb siggi: Nichts eingerückt! Ich hatte meine Vermutung zwischenzeitlich korrigiert, weil ich in eigenen Versuchen neue Erkenntnisse gewonnen habe. Schau mal bitte, was da jetzt steht. Das wird dir weiter helfen.
Goetz Geschrieben 14. November 2020 Geschrieben 14. November 2020 (bearbeitet) Ein erweitertes Studienobjekt für dich: local GleisName = Gleis.name local Zug = layout:getVehiclesOn(Gleis) local ZugName = "" local ZugListe = {} local ZugTeile = "" local Loks = 0 local Wagen = 0 local AusgabeText = "" local TextMuster = [[ Ort: %s Zug: %s %s Loks: %d Wagen: %d Gesamt: %d]] for k, v in ipairs(Zug) do table.insert(ZugListe, v.name) if v:hasEngine() then ZugName = v.name Loks = Loks + 1 else Wagen = Wagen + 1 end end ZugTeile = table.concat(ZugListe, "\n ") AusgabeText = TextMuster:format(GleisName, ZugName, ZugTeile, Loks, Wagen, Loks+Wagen) $("GBS_txt-Gleisbelegung").text = AusgabeText hasEngine() ist eine Methode im MBS, welche true zurück gibt, wenn das Objekt einen Motor enthält, ansonsten false Zur Verwendung des Doppelpunktes in Lua Skripten habe ich vor einer Weile ein kurzes Video aufgenommen Bearbeitet 14. November 2020 von Goetz ergänzende Erklärung
siggi Geschrieben 14. November 2020 Autor Geschrieben 14. November 2020 Hallo Götz, danke für deine Arbeit. Ich habe das Script für meine Zwecke noch etwas modifiziert. So habe ich Loks und Wagen in getrennte Tabellen geschrieben, für den Fall, dass mehr als eine Lok auf dem Gleis steht. Die Textausgabe habe ich so gestaltet, dass der Text immer oben im Anzeigefeld beginnt (bei mehr als 12 Zeilen müsste man das Textfeld natürlich vergrößern, leider kann man Text im Textfeld ja nicht scrollen). In der Anlage mein derzeitiger Stand des Versuchs. Heute einiges über Lua gelernt. Gruß Siggi Belegungen.mbp
HaNNoveraNer Geschrieben 14. November 2020 Geschrieben 14. November 2020 Hi AusgabeText = TextMuster:format(GleisName, ZugName, Loks, ZugTeileLok, Wagen, ZugTeileWagen, Loks+Wagen) Woher kommt diese :format Anweisung? Ich finde das weder in Lua noch im MBS? Und was ist das: eine Tabelle/String in doppelter Klammer ohne Trennzeichen? local TextMuster = [[Ort: %s Zug: %s ]] Gruß Thomas
Neo Geschrieben 14. November 2020 Geschrieben 14. November 2020 Hallo Thomas, beide Antworten findest du in der Lua-Dokumentaion: format-Anweisung Zitat Literal strings can also be defined using a long format enclosed by long brackets. We define an opening long bracket of level n as an opening square bracket followed by n equal signs followed by another opening square bracket. So, an opening long bracket of level 0 is written as [[, an opening long bracket of level 1 is written as [=[, and so on. A closing long bracket is defined similarly; for instance, a closing long bracket of level 4 is written as ]====]. A long literal starts with an opening long bracket of any level and ends at the first closing long bracket of the same level. It can contain any text except a closing bracket of the same level. Literals in this bracketed form can run for several lines, do not interpret any escape sequences, and ignore long brackets of any other level. Any kind of end-of-line sequence (carriage return, newline, carriage return followed by newline, or newline followed by carriage return) is converted to a simple newline. Viele Grüße, Neo
HaNNoveraNer Geschrieben 14. November 2020 Geschrieben 14. November 2020 (bearbeitet) Hallo Neo string.format kenne ich, aber nicht mit ":"? Das sieht hier irgendwie anders aus. Bearbeitet 14. November 2020 von HaNNoveraNer
Neo Geschrieben 14. November 2020 Geschrieben 14. November 2020 Hallo Thomas, siehe dazu: Zitat The string library provides all its functions inside the table string. It also sets a metatable for strings where the __index field points to the string table. Therefore, you can use the string functions in object-oriented style. For instance, string.byte(s,i) can be written as s:byte(i). Viele Grüße, Neo
Goetz Geschrieben 14. November 2020 Geschrieben 14. November 2020 vor 18 Minuten schrieb HaNNoveraNer: aber nicht mit ":" Das unterstrichene Wort ist mit einer URL zum Video versehen vor 6 Stunden schrieb Goetz: Zur Verwendung des Doppelpunktes in Lua Skripten habe ich vor einer Weile ein kurzes Video aufgenommen
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