Jump to content

Neue Beta-Version 5.0.7.0


Neo

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Bearbeitet von Goetz
Bild hinzugefügt
Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

 

Bearbeitet von Goetz
Link zu diesem Kommentar
Auf anderen Seiten teilen

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)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

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)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...