jloos Geschrieben 8. Juli 2022 Geschrieben 8. Juli 2022 (bearbeitet) Hallo, ich habe bei einer größeren Anlage immer wieder mal das Problem, dass Fahrstraßen blockiert bleiben. Es ist nicht einfach dabei die Blockade zu finden. Deshalb möchte ich gerne alle Fahrstraßen zurück setzen, wenn sich alle Züge im DEPOT befinden. Ich habe allen Fahrstraßen ein Schlagwort "Zurücksetzen" gegeben. Über eine Wiederholungsetze ich dann die FS zurück. Jetzt fehlen mir noch die Weichen. Kann ich die auch über die EV entsperren? Es ist müßig alle Weichen einzeln aufzurufen um sie zu prüfen. Man hat nie alle Züge im Depot. Derhalb möchte ich sie per Wiederholung ins Depot stellen. Das funktioniert auch gut, solange alle Züge auf der Anlage sind. Wenn aber ein Zug schon im Depot steht, steht in der Liste der Wiederholung Leer. Wenn das an 1. Stelle der Liste ist, wird die Liste nicht abgearbeitet. Kann man das irgendwie abfangen? Ich hänge mal eine Beispielanlage an. Vielen Dank für Eure Hilfe, Gruß Jürgen Beispiel ins DEPOT verschieben.mbp Bearbeitet 8. Juli 2022 von jloos Anlage und Bild geladen
Goetz Geschrieben 8. Juli 2022 Geschrieben 8. Juli 2022 vor 38 Minuten schrieb jloos: Jetzt fehlen mir noch die Weichen. Kann ich die auch über die EV entsperren? Mit Lua kannst du alle Gleise ansprechen, die in einer Fahrstraße stecken. Dann schaust du, ob die Eigenschaft "locked" in dem Objekt gesetzt ist. Falls ja, setze sie auf "false". local t = layout:getRoutesByKeyword("Zurücksetzen") for i, route in ipairs(t) do for _, track in ipairs(route.tracks) do if track.locked then track.locked = false end end end viele Grüße Götz
Goetz Geschrieben 8. Juli 2022 Geschrieben 8. Juli 2022 vor einer Stunde schrieb jloos: Kann man das irgendwie abfangen? Hallo Jürgen, du kannst prüfen, ob das Element aus der Liste eine Fahrzeugeigenschaft hat: Wenn die Eigenschaft existiert, handelt es sich um einen Zug. Viele Grüße Götz
jloos Geschrieben 9. Juli 2022 Autor Geschrieben 9. Juli 2022 (bearbeitet) Hallo Götz, vielen Dank für die beiden Tipps. Das mit der Weichenfreigabe klappt prima. Die zusätzliche Abfrage auf die Eigenschaft Ist-Geschwindigkeit habe ich eingefügt. Doch wenn ich die blaue Taste betätige, passiert nichts. Ich hänge nochmal den aktuellen Stand an. Es sollen die beiden auf der Anlage befindlichen Züge per blauer Taste ins Depot befördert werden. Gruß Jürgen Beispiel 3 ins DEPOT verschieben.mbp Bearbeitet 9. Juli 2022 von jloos neue Version der Beispieldatei hochgeladen
Goetz Geschrieben 9. Juli 2022 Geschrieben 9. Juli 2022 vor 1 Stunde schrieb jloos: Doch wenn ich die blaue Taste betätige, passiert nichts. Hallo Jürgen, das war mir bei meinem Versuch auch aufgefallen. Ich hatte noch nicht die Zeit gefunden um genauer zu untersuchen, warum das nicht klappt. Ich hatte dann die Anlage mit vier Zügen befüllt und die blaue Taste funktionierte. Beim nächsten einzelnen Zug, den ich rausfahren ließ, klappte es auch. Danach hatte ich die Sache leider nicht weiter untersucht. Eventuell steigt die Wiederholung beim ersten leeren Platz aus (weil eine Tabelle für die in ipairs Methode beim ersten leeren Platz endet). Dann wirst du die Tabelle dynamisch bauen müssen. Aber ich habe gerade nicht den Kopf frei, um dir dafür einen Vorschlag zu entwerfen. Viele Grüße Götz
prinz Geschrieben 9. Juli 2022 Geschrieben 9. Juli 2022 Hallo @jloos , vielleicht kann ich da mal kurz in die Bresche springen: Bei Wiederholung über Listen mit leeren Elemente treten immer wieder Problem auf. Anscheinend endet die Iteration bei einem leeren Eintrag (leeres Objekt). Mein Vorschlag: Gib jeder Lok ein Schlagwort. Statt der Liste führst Du eine Wiederholung über alle Objekte mit diesem Schlagwort aus. Züge im Depot werden dabei nicht berücksichtigt, da sie dann nicht als Objekt existieren. Viele Grüße, Wolfgang
jloos Geschrieben 9. Juli 2022 Autor Geschrieben 9. Juli 2022 vor einer Stunde schrieb prinz: Mein Vorschlag: Gib jeder Lok ein Schlagwort. Danke Wolfgang. So geht es prima. Ach was habe ich heute wieder gelernt :-) Gruß Jürgen
Neo Geschrieben 10. Juli 2022 Geschrieben 10. Juli 2022 Hallo, Am 9.7.2022 um 14:02 schrieb prinz: Anscheinend endet die Iteration bei einem leeren Eintrag (leeres Objekt). Das ist korrekt. Die Wiederholungen basieren auf der Lua-Funktion ipairs, und für diese Funktion endet eine Liste mit dem ersten leeren Eintrag (hängt damit zusammen, dass Lua keine Listen, sondern nur Tabellen mit Werte-Schlüssel-Paaren kennt). Umgehen liese sich das Problem durch Verwendung der Funktion pairs (ohne i). In diesem Fall werden alle nicht-leeren Einträge einer Tabelle/Liste iteriert, allerdings in einer "zufälligen" Reihenfolge, d.h. pairs garantiert nicht, dass der erste Eintrag einer Liste auch als erstes iteriert wird. Ein Nutzer der grafischen EV möchte sich um solche Interna natürlich nicht kümmern, weshalb nur eine Erweiterung der Wiederholung "Für alle Elemente in einer Liste" in Frage käme. Ich könnte eine eigene Iterator-Funktion anbieten, die wie ipairs arbeitet, aber dabei Lücken überspringt. Viele Grüße, Neo
EASY Geschrieben 10. Juli 2022 Geschrieben 10. Juli 2022 Hallo, vor 1 Stunde schrieb Neo: Umgehen liese sich das Problem durch Verwendung der Funktion pairs (ohne i). In diesem Fall werden alle nicht-leeren Einträge einer Tabelle/Liste iteriert, allerdings in einer "zufälligen" Reihenfolge, d.h. pairs garantiert nicht, dass der erste Eintrag einer Liste auch als erstes iteriert wird. ... da mir kein Beispiel einfällt, frage ich mal ob jemand ein Beispiel kennt , bei dem die "korrekte" Reihenfolge eine Rolle spielt. Gruß EASY
Hawkeye Geschrieben 10. Juli 2022 Geschrieben 10. Juli 2022 Hallo Easy, vor einer Stunde schrieb EASY: ... da mir kein Beispiel einfällt, frage ich mal ob jemand ein Beispiel kennt , bei dem die "korrekte" Reihenfolge eine Rolle spielt. eine „korrekte“ Reihenfolge einer Liste verwende ich z.B. bei Listen von Fahrzeugen (Lok oder Wagen) in Zügen, um zu ermitteln, welches Fahrzeug mit welchem an der vorderen oder hinteren Kupplung verbunden ist. Das ist bei mir wichtig für die Funktionen z.B. „Türen öffnen“, „Fahrlicht Umschaltung“ und beim Rangieren „An- und Abkuppeln“ von Wagen. Da gibt es aber keine Lücken beim Einlesen der Listen. Viele Grüße Hawkeye
EASY Geschrieben 10. Juli 2022 Geschrieben 10. Juli 2022 Hallo, vor 10 Minuten schrieb Hawkeye: eine „korrekte“ Reihenfolge einer Liste verwende ich z.B. bei Listen von Fahrzeugen (Lok oder Wagen) in Zügen, um zu ermitteln, welches Fahrzeug mit welchem an der vorderen oder hinteren Kupplung verbunden ist. ... habe ich für Versuche auch schon benutzt... ich werde älter und die Zugriffszeit auf den Speicherplatz wird länger... Gruß EASY
Little Geschrieben 10. Juli 2022 Geschrieben 10. Juli 2022 Am 9.7.2022 um 15:24 schrieb jloos: So geht es prima. Ach was habe ich heute wieder gelernt :-) Hallo Jürgen, kannst Du bitte den eingebauten Vorschlag von Wolfgang nochmal hochladen, wäre Klasse - Gruß Frank
prinz Geschrieben 10. Juli 2022 Geschrieben 10. Juli 2022 Danke @Neo für Deine Antwort. Ist vielleicht hilfreich, leere Einträge zu überspringen. Da es aber immer alternative Lösungsmöglichkeiten gibt, würde ich von meiner Seite die Priorität nicht so hoch setzen. Zumal in dem Beispiel die zu iterierende Liste fest definiert wurde. HG Wolfgang
jloos Geschrieben 11. Juli 2022 Autor Geschrieben 11. Juli 2022 vor 20 Stunden schrieb Little: Hallo Jürgen, kannst Du bitte den eingebauten Vorschlag von Wolfgang nochmal hochladen gerne Beispiel ins DEPOT verschieben - Lösung.mbp
Little Geschrieben 11. Juli 2022 Geschrieben 11. Juli 2022 Vielen Dank, man lernt nie aus.... VG aus St. Egidien
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