Anlagendesigner Posted October 7 Posted October 7 Hallo zusammen, habe mal wieder ein Verständnisproblem mit der EV. Aufgabe: Ich möchte für jede S-Bahn (nutze das Combino-Modell) bei Einfahrt in die Haltestelle alle Zuginformationen/-anzeigen ändern lassen. Dazu habe ich im Gleiskontokt für das Ausfahrtssignal eine Liste Namens Zuginfo angelegt und in dieser eine Tabelle mit den benötigten Zextfeldern, als Index der Tabelle dient unter Name die Liniennummer. Wenn ich das mit einem einzelnen Modell testweise mache funktioniert es auch soweit. Allerdings habe ich das Problem, dass ich die Wiederholung nicht richtig angesprochen bekomme. Die Wiederholung habe ich angelegt wie auf Screenshot zu sehen. Wenn ich versuche die Wiederholung über Objekt (Name) und Wiederholung anzusprechen, kann ich als Name lediglich das Ori auswählen und nicht das Strassenbahn (siehe Screenshot) Wenn ich versuche die Wiederholung über Variable (Erweitert) und Wiederholung anzusprechen soll ich immer einen Namen eingeben. Doch mir ist schleierhaft wie dieser lauten soll. Das ganze soll generisch sein, weshalb ich die Informationen aus dem Gleiskontakt hole. Im späteren Verlauf soll der Index der Zuweisung aus der Liniennummer des einfahrenden S-Bahn genommen werden um auf verschiedene Linien reagieren zu können. Dazu würde die Liste im Gleiskontakt entsprechend für jede Linie einen Tabelleneintrag bekommen. Siehe Screenshot unten: Aber erstmal muss ja die Zuweisung funktionieren. Seit die grafische EV damals umgearbeitet worden ist verstehe ich oft nur noch Bahnhof und komme mit dem Aufbau nicht klar. Leider gibt das Wiki auch nicht wirklich was her woraus man etwas ableiten könnte. Vielleicht kann mir ja jemand helfen.
Hawkeye Posted October 8 Posted October 8 (edited) Hallo @Anlagendesigner vor 9 Stunden schrieb Anlagendesigner: Allerdings habe ich das Problem, dass ich die Wiederholung nicht richtig angesprochen bekomme. Die Wiederholung kann auch nicht funktionieren, da dabei alle Fahrzeuge im Zug auch die gleiche Variable haben müssen, die du ansprechen möchtest. Mittelwagen und Schlusswagen habe diese Variablen nicht. Du wirst jedes Fahrzeug einzeln mit der richtigen Variablen ansprechen müssen. Das wird in der grafischen EV sehr schwierig. Dafür ist Lua besser geeignet. Auch kannst du bei "Betreten" eines Gleiskontaktes im Feld "Beschriftung" das Fahrzeug und somit auch die gewünschte Variable nicht direkt ansprechen. Über einen kleine Trick geht es. Erst das Fahrzeug als Variable im Gleiskontakt speichern, dann die Variable ansprechen. Dann fehlen dir aber immer noch deine restlichen Fahrzeuge im Zug, die mit ihren eigenen Variablen angesprochen werden wollen. Um das was du vorhast, umzusetzen, ist Lua besser geeignet. VG, Hawkeye Edited October 8 by Hawkeye
Anlagendesigner Posted October 8 Author Posted October 8 (edited) Wieso müssen alle Modelle die gleichen Variablen haben? Wenn ein Wagen eine Variable nicht hatte wurde in der Vergangenheit dieser Befehl einfach ins "Leere" geschrieben. Ich nutze die Combino-Modelle, nicht die Antraz-Modelle wie auf deinem Bild. Dort haben soweit ich es sehe alle Modelle außerdem die gleichen Beschriftungsfelder. Das Problem liegt ja auch gar nicht bei den Feldern, sondern das bei der Aktion "Beschriftung setzen" nicht der Name der Wiederholung ausgewählt werden kann sondern nur der Inhalt des nächsten Feldes. Irgendwie hat es den Anschein als wenn @Neo hier auf das falsche Feld verweist. Nur zum Verständnis, ich rede von Beschriftungen nicht von Objektvariablen. Edited October 8 by Anlagendesigner
Hawkeye Posted October 8 Posted October 8 vor 8 Minuten schrieb Anlagendesigner: Ich nutze die Combino-Modelle, nicht die Antraz-Modelle wie auf deinem Bild Sorry, ich dachte das ist ähnlich. Hatte nichts anders unter „Straßenbahn“ gefunden. Das die Combino-Modelle unter Schmalspur 1000 zu finden sind, wusste ich nicht.
Hawkeye Posted October 8 Posted October 8 vor 38 Minuten schrieb Anlagendesigner: Dort haben soweit ich es sehe alle Modelle außerdem die gleichen Beschriftungsfelder. Wirklich ? Dann sollte es mit einer Wiederholung in Lua auch gehen. Schade, es kommt doch eine Fehlermeldung beim 2.ten Wagen. VG, Hawkeye
Anlagendesigner Posted October 8 Author Posted October 8 (edited) Ja, die Sortierung ist komisch. Für mich ist das Combino-Modell jedenfalls eine S-Bahn. Aber wie gesagt, das ändert ja am Problem nichts. Ist halt komisch, dass ich das 'Ori' auswählen kann aber nicht den Namen der Wiederholung. Also alle Wagen haben für die innere Anzeigetafel die gleichen Beschriftungsfelder. Aber wie gesagt, sollte es selbst dann kein Problem sein, da der Befehl halt ins Leere geht (passiert ja auch bei einer fixen Auswahl bei einem Schreibfehler) Edited October 8 by Anlagendesigner
Hawkeye Posted October 8 Posted October 8 (edited) vor 23 Minuten schrieb Anlagendesigner: Also alle Wagen haben für die innere Anzeigetafel die gleichen Beschriftungsfelder. Dein Beispiel oben bezieht sich auf "Streckeninfo vorn" . Ob das für die "inneren Anzeigetafel" zutrifft, hängt wohl davon ab, wie du die Fahrzeuge zusammenstellst. Da du diese Zusammenstellung nicht beschrieben hast, habe ich eine eigene Kombination erstellt. Der 3te Wagen hat z.B. nicht die Variable "Linienanzeige innen Haltestelle 1". Hier wären zusätzliche Bedingungen erforderlich, ob die Variablen, die angesprochen werden sollen, im Fahrzeug auch tatsächlich existieren. VG, Hawkeye Edited October 8 by Hawkeye Ergänzung
Phrontistes Posted October 8 Posted October 8 vor einer Stunde schrieb Anlagendesigner: ich rede von Beschriftungen nicht von Objektvariablen Das ist der springende Punkt. Wenn Du eine Beschriftung setzt und einen Beschriftungsnamen ansprichst, den es nicht gibt, bekommst Du einen Fehler. Im Übrigen haben wir hier der Klassiker, dass die Modellbauer sehr kreativ sind bei der Vergabe von Beschriftungs- und Animationsnamen. Da hilft wie immer nur, in jedem Fahrzeug die stets gleiche Variable zu hinterlegen in welcher dann der Beschriftungstext (oder Animationsname) steht. Beim Combino muss das sogar eine Liste sein, weil manche Angaben im Fahrzeug teilweise mehrfach vorkommen wie z.B. "Liniennummer".
Phrontistes Posted October 8 Posted October 8 vor 5 Minuten schrieb Hawkeye: zusätzliche Bedingungen braucht es bei der von mir vorgeschlagenen Methode nicht. Schauen ob die Variable (z.B. "Liniennummer") existiert und dann anhand der dort hinterlegten Liste (die ggf. auch nur einen Eintrag hat) alle Beschriftungen setzen.
Hawkeye Posted October 8 Posted October 8 vor 2 Minuten schrieb Phrontistes: Schauen ob die Variable (z.B. "Liniennummer") existiert Ist auch eine Bedingung…. Aber dein vorgeschlagener Weg ist besser, wenn solche Information in den Fahrzeugen als Variablen existieren, als im Gleiskontakt. VG, Hawkeye
Phrontistes Posted October 8 Posted October 8 Man muss unterscheiden: Wohin zu schreiben ist, hinterlegt man im Fahrzeug, was zu schreiben ist, im Gleiskontakt.
Anlagendesigner Posted October 8 Author Posted October 8 Da alle S-Bahn Zugverbände gleich aufgebaut sind müsste es doch reichen im Triebwagen (also Combino 1) eine Liste mit den einzelnen Modellnamen zu hinterlegen. Das mit dem Fehler verstehe ich trotzdem nicht. Wenn ich ein Modell explizit auswähle und mich beim Namen der Beschriftung vertippe entsteht auch kein Fehler. Abgesehen davon ändert das ja nichts daran, dass ich erst gar nicht den Namen der Wiederholung auswählen kann. Also selbst wenn, kann es erst gar nicht zum angegebenen Fehler kommen.
Goetz Posted October 8 Posted October 8 (edited) vor 12 Stunden schrieb Anlagendesigner: müsste es doch reichen im Triebwagen (also Combino 1) eine Liste mit den einzelnen Modellnamen zu hinterlegen. Hallo Anlagendesigner, Nein, das genügt nicht, weil die Fahrzeuge nicht anhand ihres Namens angesprochen werden. Das wäre kontraproduktiv, weil sich dann alle gleichnamigen Objekte auf der Anlage angesprochen fühlten. Jedes Objekt auf deiner Anlage hat eine eindeutige ID. Wenn du ein Objekt aus einer Liste wählst, wird dir der Name angezeigt, weil der für dich aussagekräftiger ist. Aber die EV benutzt die Objekt ID. Viele Grüße Götz Edited October 8 by Goetz Schreibfehler korrigiert
Phrontistes Posted October 8 Posted October 8 (edited) vor 17 Minuten schrieb Anlagendesigner: dass ich erst gar nicht den Namen der Wiederholung auswählen kann Dein Einstieg "Objekt" ist verkehrt. Du musst mit "Variable" bzw. "Variable erweitert" einsteigen. Nachtrag für @Neo: Hier kann man tatsächlich Unsinn zusammenklicken. Edited October 8 by Phrontistes Nachtrag für Neo
Anlagendesigner Posted October 8 Author Posted October 8 @GoetzJa das ist mir klar, war ungenau ausgedrückt. Selbstverständlich müsste die Liste keine Textvariablen enthalten sondern Objektvariablen. @PhrontistesHabe ich ja auch probiert (siehe 1. Post). Doch dann verlangt es zusätzlich zum Namen der Wiederholung die Eingabe eines Textfeldes. Diese Eingabe macht jedoch keinen Sinn. Und die auswählbaren Einträge sind soweit ich das erkenne irgendwelche Variablennamen.
Phrontistes Posted October 8 Posted October 8 (edited) OK, das kann man graphisch nicht zusammenklicken. Hier in Lua: local t, t2 = layout:getVehicleGroup(Vehicle) for i, Fahrzeug in ipairs(t) do local Ori = t2[i] if Fahrzeug.variables["Variable im Fahrzeug"] ~= nil then -- Das erste "Fahrzeug" (Wiederholung) kann man in der graphischen EV nicht anklicken Fahrzeug.labels[Fahrzeug.variables["Variable im Fahrzeug"]].text = Inhalt_Beschriftung end end "Vehicle" und "Inhalt_Beschriftung" werden der benutzerdefinierten Routine übergeben (sind hier also Auslöser) "Variable im Fahrzeug" ist die Textvariable in der der Beschriftungsname steht. "Variable im Fahrzeug" könnte entsprechend meinem Vorschlag eine Liste sein, dann muss der Code aber noch erweitert werden. Hab's nicht getestet, müsste aber stimmen. Edited October 8 by Phrontistes typo
Hawkeye Posted October 8 Posted October 8 vor 10 Minuten schrieb Phrontistes: OK, das kann man graphisch nicht zusammenklicken. Hier in Lua: vor 3 Stunden schrieb Hawkeye: Um das was du vorhast, umzusetzen, ist Lua besser geeignet. .... Aber es geht auch in der grafischen EV, aber nur sehr umständlich. Erzeuge in deinem angetriebenen Fahrzeug eine Liste aller Fahrzeuge in deinem Zug. Und weise dann dem Gleiskontakt das angetriebene Fahrzeug zu. Beachte dabei, das die Variable "Gleiskontakt.Fahrzeug" nur ein Objekt ist, also keine Liste. Die Liste "Fahrzeugliste" hast du ja schon im Fahrzeug hinterlegt. Mit der Anweisung "Für alle Elemente einer Liste" kannst du die auf die "Fahrzeugliste" zugreifen und die Wiederholung "@Wdh" in "Beschriftung setzen" verwenden. Umständlich, aber geht. VG, Hawkeye
Anlagendesigner Posted October 8 Author Posted October 8 @Phrontistes Das mit der Liste hatte ich ja schon selbst geschrieben, war nur etwas doof ausgedrückt. Dein Ablauf funktioniert leider so nicht, da die Beschriftungsfelder in den einzelnen Wagen doch unterschiedlich sind. Der Mittlere hat nur Seitenanzeigen, aber keine Innenanzeigen. Beim Steuerwagen hatte @Klartexter bereits mitgedacht und die Beschriftungsfelder eingebaut ohne sie anzuzeigen. Zumindest habe ich bisher keine Modellvariante gefunden wo etwas angezeigt wird. (Um solche Fehler zu vermeiden, wäre es wünschenswert wenn die Modellbauer bei Zugverbänden bei allen Einzelmodellen die gleichen Beschriftungsfelder in allen Einzelmodellen einbauen, auch wenn diese nicht angezeigt werden. Vielleicht kann man sich ja auf so eine Lösung unter den Modellbauern verständigen.) Doch weil die Liste je nach Zugriff (Innenanzeigen/Außenanzeigen) immer mindestens ein Model hat, welches das benötigte Beschriftungsfeld nicht besitzt kommt es zu dem von euch genannten Fehler. Warum der auftritt ist natürlich die Frage, da wie bereits geschrieben bei einer Modellauswahl per ID und falschgeschriebenen Beschriftungsnamen (was ja quasi identisch ist) kein Fehler auftritt, sondern der Befehl offenbar einfach ins Leere läuft. Wäre also an Neo zu prüfen ob es nicht generell einbauen kann, dass bei nichtvorhandenen Beschriftungsfeldern, Variablennamen, Eigenschaften der Befehl einfach ins Leere läuft also ignoriert wird. Ich habe das ganze aber trotzdem gelöst indem ich auf die Wiederholung verzichte und jeweils das entsprechende Listenelement aus der Fahrzeugliste direkt anspreche. Das führt zwar zu wesentlich mehr Aktionen, funktioniert aber und ist für einen Fremden sogar besser zu durchblicken finde ich. Da ja die einzelnen Zugverbände alle gleich sind kann ich dies also generisch anwenden und muss nur die jeweiligen Texte an jedem Bahnhsteig anpassen. Die Werte hole ich ja aus einer Liste mit untergeordneter Tabelle, die als Objektvariable am Gleiskontakt des jeweiligen Bahnsteigs hängt. In der Liste gibt es für jede Linie die den Bahnsteig anfährt eine Tabelle mit den Texten die dann an den Zug geschrieben werden. Durch hinzufügen einer Objektvariablen zum Triebwagen mit der Liniennummer kann ich dies sogar auf unterschiedliche Linien mit unterschiedlichen Zielen benutzen. Ich habe mal einen Auszug mit einem Beispiel meiner Lösung angehangen.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now