Jump to content

Objektvariable steht auf Gleis


astt
 Share

Recommended Posts

Hallo Neo,

wie ich gerade in einem anderen Tread gelesen habe, soll irgendwann die EV auch eine Rundum Kur erhalten. Da hätte ich auch mal ein Anliegen.

Ich würde mir wünschen, das es erstens bei den Ereignissen die Möglichkeit "Lock steht auf einem Gleis" gibt und ich dort Mehrere anwählen kann.  Zweitens, bei den Bedingungen "Lock steht auf Gleis" , ich mehrere Gleise mit dem selben Namen wählen kann und drittens, das ich eine Objektvariable auf diesen Gleisen stehen habe. Klingt jetzt blöd, aber mal mein Problem und meine Gedanken zu Lösung des Problems.

Ich bin gerade dabei einen Kopfbahnhof zu bauen. Nun sollen in Diesem, die Züge dynamisch einfahren also nicht auf ein vordefiniertes Gleis für ICE, Personenzug usw.  Jetzt ist das Problem, die Züge sind alle unterschiedlich lang und ich muss für jeden Zug ein Gleis für den Abfahrtsbefehl definieren. Heisst, ich habe derzeit pro Bahnhofsgleis 6 Gleise, die einen Abfahrtsbefehl geben und heisst auch ich muss pro Bahnhofsgleis 6 Einträge in die EV machen.

Meine Idee wäre nun folgende. Ich gebe jeder Lock eine Objektvaraible mit der Bezeichnung Lock.ICE (Lock.Perso usw). Wenn der Countdown abläuft um die Strecke für ein Bahnhofsgleis frei zu geben, sollte ein Ereigniss gestartet werden, bei dem das auslösende Ereigniss "Lock steht auf einem Gleis" ist (wobei es eben 6 Gleise mit selben Namen sein sollen). In den Bedingungen sollte eben die "Objektvariable steht auf einem Gleis (wobei es eben 6 Gleise mit selben Namen sein sollen)" sein, wobei mir als Auswahl z.B. " _Trigger1. Objektvariable.Lock* " vorschweben würde und das Programm weiss, aha hier geht es um die "Objektvariable Lock.ICE" usw. und sich die passende raus sucht um Sie dann in der Aktion "Lockgeschwindigkeit setzen" auf das passende Gleis, wo eine Lock steht anwendet.

O.K. ist ein wenig verworren, ich hoffe Du kannst nachvollziehen, was ich meine. Bei jetziger Variante der EV muss ich pro BHF-Gleis 6 Einträge machen um die verschiedenen Züge los fahren zu lassen. Bei meiner Idee, wäre es nur ein Eintrag, was bei 12 BHF-Gleisen den Unterschied von 60 Einträgen aus macht.

Einen schönen Tag wünscht

Andreas (astt)

Link to comment
Share on other sites

Hallo Andreas,

warum arbeitest du mit Gleisen, wenn die Loks auf jedem Gleis des Bahnhofs ein- und ausfahren sollen? Du kannst doch bei der Aktion "Lokgeschwindigkeit setzen" es bei "[Alle Gleise]" belassen und einfach direkt deine zu startende Lok ansprechen. Eventuell habe ich dein Problem aber auch noch nicht ganz verstanden.

Viele Grüße,

Neo

Link to comment
Share on other sites

Mein Tip wie ich sowas immer löse:

Speicher bei der Einfahrt den Namen der Lok in eine Objektvariable. Ich nehme dafür meistens eine Objektvariable des dazugehörenden Signal's, man kann aber auch für das Bahnhofsgleis selber eine Objektvariable anlegen. Zur Not kannst du noch eine freie Variable anlagen die du einfach nach Bahnhofsgleis benennst.

Bei der Abfahrt ließt du dann einfach diesen Namen wieder aus und sprichst wie NEO schon schrieb direkt die Lok an.

Link to comment
Share on other sites

Hallo nochmal,

ja, alle Gleise ginge schon, wenn ich immer genau wüsste, welche Lock auf dem Gleis steht. Deswegen die Idee mit den Objektvariablen. Aber, ich müsste dann ja für jede Lock wiederum einen Eintrag in die EV machen ?

MarkoP, das muss ich mal ausprobieren, wenn ich auch noch nicht so Recht weiss, wie ich das anstellen soll. Muss ich wohl hier im Forum mal ein wenig rumsuchen.

Link to comment
Share on other sites

Hallo astt,

wenn der Zug einfährt:

Ereignis: Zug betritt Gleis
Bedingung: Keine
Aktion: Variable setzen - mit "$_Trigger1._Name"

Dadurch wird der Name der Lok in die angegebene Variable geschrieben, beispielsweise Bahnhofsgleis01_Lokname

Wenn der Zug abfahren soll (meistens ja durch ein schalten eines Signals eingeleitet)

Ereignis: Signal schaltet - jede Position
Bedingung: Signal steht auf Position Hp1 oder HP0
Aktion: Lokgeschwindigkeit setzen - dabei trägst du bei der Lok dann "$Bahnhofsgleis01_Lokname" (vorher wählen, dass man freie Namen eintragen kann) und die gewünschte Geschwindigkeit; als Gleis kannst du dann "Alle Gleise" ausgewählt lassen und es fährt nur die Lok ab welche auf dem bezeichneten Gleis steht.

Link to comment
Share on other sites

Hallo MarkoP,

danke für Deine erklärung, hatte es zwischenzeitlich schon woanders gefunden und ausprobiert. Ist aber unbefriedigend. Denn, ich habe einen Kopfbahnhof. Am Ende der Gleise halten alle Locks an. Nur, wenn es keine Wendezüge sind, werden die Locks dann abgekoppelt und eine andere Lock kommt von der anderen Seite und holt sich den Zug. Dies ist auch noch nicht das Problem. Das Problem ist, m.E., ich muss nun, da ich unterschiedlich lange Züge habe, für jeden Zug auch wieder ein Gleis/ Signal oder anderen Punkt bestimmen, daß/der die Variable für die jeweilige Lock speichert, die gerade angehängt wird. So weit so gut. Was machen aber dann die Locks und Triebfahrzeuge (ICE) wenn Sie bei der Einfahrt über diese Punkte fahren. Sie werden immer als Variable zwischengespeichert, obwohl Sie, in diesem Fall eigentlich nicht gebraucht werden, da ja am anderen Ende die Lock ist, die den Zug wieder wegzieht.

Link to comment
Share on other sites

Die Lösung ist relativ einfach. Ordne jeder Lok eine Objektvariable zu in der vermerkt ist ob es sich um einen Wendezug handelt oder nicht (bspw: 'Zugart').
Weiter legst du bei den Wendezügen eine Objektvariable 'Steuerwagen' an in die du den Namen des Steuerwagens einträgst (muss unterschiedlich zum Namen des Triebwagens sein). Dann änderst du das erste Ereignis wie folgt:

Ereignis: "Zug betritt Gleis"
Bedingung: Variable besitzt wert - $_Trigger1.'Zugart' = Wendezug
Aktion: Variable setzen - Speichervariable = "$_Trigger1.'Steuerwagen'"
Aktion bei nicht Erfüllung: Variable setzen - Speichervariable = "$_Trigger1._Name"

Kommt ein Wendezug wird dann der Speichervariable der Namen der Wechsellok (Steuerwagens) zugewiesen, handelt es sich um einen normane Zug bleibt die Speichervariable erst mal leer und wird erst dann befüllt wenn die Ersatzlok zum Lokwechsel auf das Bahnhofsgleis einfährt.
Das zweite Ereignis kann bleiben wie es ist

Link to comment
Share on other sites

Hallo Marko,

danke für Deine Hilfe, werde ich jetzt mal ausprobieren.

Aber mal im Ernst, welcher "normale" Mensch ohne Programmierkenntnisse kommt auf so eine Lösung. Mir wäre Sie jedenfalls nicht eingefallen.

Einen schönen Tag wünscht

ANdreas (astt)

Link to comment
Share on other sites

Das interessiert mich auch. Aber um eins vorweg zu sagen. Das was "astt" sagt, dem stimme ich zu. Ich denke daß es viele Modellbahnfreunde abschreckt sich mit der Programmierung tiefer zu beschäftigen weil diese eben nicht so einfach für jedermann zu bewerkstelligen ist. Man muß von Beruf her schon Kenntnisse haben oder sich sehr intensiv mit der EV beschäftigen um da ganz den Durchblick zu erhalten. Warum sage ich das? Es soll ein Anstoß dazu sein um die EV bedienungsfreundlicher und weniger zeitintensiv zu gestalten. Gewiss, es ist nicht einfach solch etwas zu realisieren, aber es sind doch schon so viele positve und machbare Vorschläge gemacht worden die auch teilweise schon in das Programm eingeflossen sind.

MfG Morsdorf

Link to comment
Share on other sites

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
 Share

×
×
  • Create New...