Jump to content

Recommended Posts

Posted

Hallo,

über das automatische Programmupdate steht eine neue Vorabversion für die Version V5 zur Verfügung, die folgende Änderungen und Verbesserungen enthält:

Planung

  • Ein Doppelklick auf ein Gleis markiert automatisch den gesamten Gleisstrang (optional auch per Bearbeiten - Gleisstrang selektieren)
  • Im Höhenmodus von Bodenplatten können mit STRG und ALT Markierungen hinzugefügt und entfernt werden
  • Im Bearbeitungsmodus von Bodenplatten werden diese nicht mehr fälschlicherweise kopiert, wenn ALT gedrückt wird
  • Markierte Objekte, die in die Zwischenablage kopiert werden, können in Variablen eingefügt werden, zum einfachen Befüllen von Tabellen/Listen

Steuerung

  • Unterstützung von Wiederholungen (Schleifen) in der grafischen EV, zum Ausführen von Aktionen für eine Liste von Objekten
  • Neue Variablen-Typen "Tabelle" und "Liste" zum einfachen Verwalten von Datenmengen
  • Neue Bedingung "Eigenschaft/Variable existiert", um einfacher auf die Existenz von Schlagwörtern oder Variablen zu prüfen
  • Neue Lua-Funktionen: transformation:reset, transformation:resetPosition, transformation:resetRotation, transformation:resetScaling
  • Besitzt ein Objekt mehrere Schlagwörter, lösen diese in der sortierten Reihenfolge die Ereignisse aus
  • Vereinfachte Filterung von Ereignissen in der Ereignis-Protokollierung

Viele Grüße,

Neo

Posted
  1. Doppelklick auf ein Gleis - > alle Gleise eines Strangs markiert
  2. Strg-C -> alle markierten Gleise in Zwischenablage kopiert
  3. Variablen eines Objekts öffnen
  4. neue Liste angelegen
  5. Bearbeiten drücken
  6. Strg-V drücken -> alle kopierten Gleise sind als Objekte in diese Liste eingepflegt

Das ist der Oberhammer, Neo!!!!

Posted

Eine Frage hätte ich dazu: Was unterscheidet "Tabelle" und "Liste"? Funktionieren die gleich/ähnlich? Wann nimmt man das eine und wann das andere?

Gruß Timba

Posted (edited)

Eine Liste hat nummerierte Zellen
In einer Tabelle hat jede Zelle hingegen einen Namen

Die nummerierten Zellen benutzt du, wenn du über die Liste "iterieren" möchtest. Das heißt, wenn du in einer Schleife alle Elemente dieser Zelle ansprechen möchtest.

Die namentlichen Zellen der Tabelle benutzt du, um verschiedene Werte in einer Tabelle zusammenzufassen, die du nachher individuell nutzen möchtest. Alle Waggons eines Zuges würde man in einer Liste speichern. Die verschiedenen Werte eine Waggons (Ziel, Ladung, Gewicht etc.) in einer Tabelle Und beides kann man kombinieren:

Hier ist ein Beispiel für einen Zug mit drei Waggons:

-- Liste mit 3 Elementen. Jedes Element ist eine Tabelle

Zug = {
  [1] = {Ziel = "Hamburg", Ladung = "Rüben", Gewicht = 8},
  [2] = {Ziel = "Bremen", Ladung = "Bier", Gewicht = 6},
  [3] = {Ziel = "Kiel", Ladung = "Gerste", Gewicht = 7.5},
  }

for i = 1, #Zug do
  local Text = string.format("Waggon %d hat das Ziel %s", i, Zug[i].Ziel)
  print(Text)
end

 

1777343855_ListeundTabelle.thumb.JPG.7978f3c2cd8b100a57a7a1b29cd3ce07.JPG

Edited by Goetz
Bild hinzugefügt
Posted

Hallo Götz,

vielen Dank für die Erklärung. Meine Irritation rührt vermutlich daher, weil du in dem sehr nützlichen Tutorial zu Lua schreibst: "Für diesen Zweck bietet Lua Tabellen. Und in Lua gibt es nur Tabellen. Andere Programmiersprachen kennen außerdem Listen, Dictionaries, Tupfes und mehr. Lua fasst das alles in einem Typ 'table' zusammen." Das Tutorial habe ich nun schon einige Male durchgelesen, um mir die nötigen Informationen zum Umgang mit Lua zu holen, dass ich es fast auswendig kann. Und die "for i, x do"-Schleife funktioniert ja auch mit einem Lua-Table. Mein Denkfehler ist vielleicht der, dass wir hier im MBS sind und nicht im Lua. Kann das sein?

Gruß Timba

Posted

Ja, stimmt.

Lua unterscheidet nicht zwischen Listen und Tabellen. Im Gegensatz zu anderen Programmiersprachen.

Aber Objektvariablen und nun auch die Listen und Tabellen in Objekten (und Modulen) sind keine reinen Lua Dinge. Da ist Lua nur der Übermittler. Deshalb unterscheidet das MBS bei Objekten und Modulen zwischen Tabellen und Listen.

Posted (edited)
A         -- ist die Adresse der Tabelle. Ein Pointer.
#A        -- ist die Anzahl der Elemente
A[1]      -- ist der Inhalt der ersten Zelle von A
A[1].name -- ist der Name des Objekts in Zelle 1 (wenn die Zelle ein Objekt enthält.)

 

Edited by Goetz
Posted

Ja, habe ich bemerkt. Habe versucht, die Tabelle direkt anzusprechen wie in Lua, aber das war nix. Ich muss mich stets daran erinnern, dass eine Tabelle in MBS nicht dasselbe ist wie eine Tabelle in Lua. Dafür ist es aber Gold wert, dass die Werte gespeichert bleiben. (y)

Posted
vor 2 Minuten schrieb Timba:

Habe versucht, die Tabelle direkt anzusprechen wie in Lua

Das war auch in Ordnung.

Mit der Zeile 

A = $("Ereignisse").variables["Gleise"]

hast du ja die Tabelle an eine Lua Tabelle namens A übergeben.

Aber es ist auch in Lua nicht sinnvoll mit print(A) "die Tabelle" auszudrucken. Weil du damit nur den pointer bekommst.

Du willst die Elemente ausgeben. Oder - wenn die Elemente Objekte sind - die Namen dieser Objekte.

for i = 1, #A do
  print(A[i].name)
end

 

Posted

Ja, genau. Bei meinem allerersten Versuch hatte ich versucht, genau wie in Lua die Tabelle direkt anzusprechen.

A = #Gleise

Das funktionierte natürlich nicht. Irgendwann dämmerte es mir, dass Tabellen/Listen ja wie Variablen angelegt und logischerweise auch entsprechend angesprochen werden müssen, also stattdessen:

A = #$("Ereignisse").variables["Gleise"]

Nun habe ich es kapiert. (Hoffentlich)

Posted

Hallo Neo,

vor 5 Stunden schrieb Neo:

über das automatische Programmupdate steht eine neue Vorabversion für die Version V5 zur Verfügung

Nix mit automatisch:(... kann man das MBS auch irgendwie dazu bewegen, daß es mal nachschaut ob ein Update zur Verfügung steht?

Gruß
EASY

Posted

Bin mal gespannt, ob ich meinen 15ms-Seilbahnlogik-Timer nun in einer Loop mit einer Verzögerung verschwinden lassen kann, damit er mir das EP nicht voll haut.
Dann bin ich mindestens genauso gespannt auf die neuen Höhenfeld-Dinge. Das könnte in einer Ummodellierungsorgie enden, damit ich Gnade bei streit_ross finde.
Vor allen Dingen wird das bei schräg liegenden Tunnellöchern sehr helfen.
Die ganze Zeit hatte ich in V4 die Arrays (also Listen/Tabellen) bei den OV so vermißt. Mit Lua habe ich's umgehen können. Aber jetzt könnte man mit Status- und Positionsdaten sogar Zwischenstände 'sichern'. Das wird interessant.

Gruß
  Andy

p.s.: @EASY Bild für Dich!

Anmerkung 2019-10-23 182449.jpg

Posted

Hallo,

vor 8 Minuten schrieb Andy:

p.s.: EASY Bild für Dich

... daß es da stehen sollte weiß ich schon9_9... nur bei mir steht da nichts:(...

... darum Frage ich ja bei Neo nach, wie man das MBS dazu bringen kann, daß da was steht, wenn es von sich aus noch nicht darauf gekommen ist, daß da was stehen sollte...

Gruß
EASY

Posted

Hallo Andy,

vor 3 Minuten schrieb Andy:

Ich wage mich jetzt kaum das zu posten

... das kannst Du ruhig posten9_9... nur derjenige, der mir das Häkchen dort weggemacht hat:/, sollte dies lieber nicht posten>:(

Gruß
EASY

Posted

Hallo EASY,

vor 2 Stunden schrieb EASY:

nur derjenige, der mir das Häkchen dort weggemacht hat:/, sollte dies lieber nicht posten

wenn du ihn findest sag mir bescheid, bei mir hat er es auch geklaut >:(

Gruß Frank

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