Jump to content

Empfohlene Beiträge

Geschrieben

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.

Screenshot2024-10-07231509.thumb.jpg.0dfcf3d5e2fa835101ca67e65d1fc01a.jpg

 

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)

Screenshot2024-10-07230739.thumb.jpg.43d39d9c0849c552195dc53054612cfc.jpg

 

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.

Screenshot2024-10-07230739.thumb.jpg.43d39d9c0849c552195dc53054612cfc.jpg

 

 

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:

Screenshot2024-10-07233055.thumb.jpg.9b6ce3efca5f9ed47e6c011d4f510063.jpg

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.

Screenshot 2024-10-07 230703.jpg

Geschrieben (bearbeitet)

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. 

Screenshot2024-10-08081509.thumb.jpg.13fd32dd28376fa6c13b2fed9fb57496.jpg 

Mittelwagen und Schlusswagen habe diese Variablen nicht.  

Screenshot2024-10-08081535.thumb.jpg.a94b857664ffd27398b817f73dddbdd0.jpg

Screenshot2024-10-08081553.thumb.jpg.e40b1169b1e92a4a7d240dfba752a1b2.jpg

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.

   Screenshot2024-10-08083009.thumb.jpg.d635aedc6be656505209e04f50d344b6.jpg 

Über einen kleine Trick geht es. Erst das Fahrzeug als Variable im Gleiskontakt speichern, dann die Variable ansprechen. 

Screenshot2024-10-08083330.thumb.jpg.a12e74fbc4c69038ccd45c8fa06fe187.jpg

 

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

Bearbeitet von Hawkeye
Geschrieben (bearbeitet)

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.

Bearbeitet von Anlagendesigner
Geschrieben
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.

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

Screenshot2024-10-08092529.thumb.jpg.a67b310a78c6ab2b91a6f05387c3c293.jpg

Screenshot2024-10-08092415.thumb.jpg.bfbc0c89a30d7d78b576b5808af9b82e.jpg 

Schade, es kommt doch eine Fehlermeldung beim 2.ten Wagen. 

VG,

Hawkeye

 

Geschrieben (bearbeitet)

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)

Bearbeitet von Anlagendesigner
Geschrieben (bearbeitet)
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".

 Screenshot2024-10-08094437.thumb.jpg.fe229fc6cc1b8fdc5737f0009c070c0d.jpg

Hier wären zusätzliche Bedingungen erforderlich, ob die Variablen, die angesprochen werden sollen, im Fahrzeug auch tatsächlich existieren. 

VG,

Hawkeye

Bearbeitet von Hawkeye
Ergänzung
Geschrieben
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".

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

Geschrieben
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

Geschrieben

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.

Geschrieben (bearbeitet)
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

Bearbeitet von Goetz
Schreibfehler korrigiert
Geschrieben (bearbeitet)
vor 17 Minuten schrieb Anlagendesigner:

dass ich erst gar nicht den Namen der Wiederholung auswählen kann

Dein Einstieg "Objekt"

Screenshot2024-10-08103138.jpg.2685495e24c0af1e89a8992100aa6180.jpg

ist verkehrt. Du musst mit "Variable" bzw. "Variable erweitert" einsteigen.

Nachtrag für @Neo: Hier kann man tatsächlich Unsinn zusammenklicken.

Bearbeitet von Phrontistes
Nachtrag für Neo
Geschrieben

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

Geschrieben (bearbeitet)

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.

Bearbeitet von Phrontistes
typo
Geschrieben
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. 

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

Screenshot2024-10-08112640.thumb.jpg.91ac63e0db4e06e91eb72c010273e2a6.jpg

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. 

Screenshot2024-10-08112741.thumb.jpg.d3401ff801a83c8619039575f2d8e0c1.jpg

Umständlich, aber geht. 9_9 

VG,

Hawkeye

Geschrieben

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

Screenshot2024-10-08134951.thumb.jpg.034e8f8eae5f659040fbe8f11502542a.jpg

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