Support
Wiki Documentation
Support Forum
Mobile
- andRoc Android
- Rocweb Browser
- WIO-Control ESP32
- Rocview Tablet
- RC-Cab Android
DIY
User
Wiki writer
Legal
Support
Wiki Documentation
Support Forum
Mobile
DIY
User
Wiki writer
Legal
Userpages - Hermann (hermannk)
vorab gibt es hier den Rocrail-Arbeitsbereich-Download |
Vorwort 1:
Damit wurde diese Dokumentation erstellt: Stand 26.01.2022
Attribut | Wert | Bemerkung |
---|---|---|
Steuerung | Rocrail | Version 2.1.2060+ (macOS "Catalina" on Intel CPU) |
Computer | MacBook Pro (Intel) | macOS 12.1 (Monterey) |
Vorwort 2:
- die Nutzung dieser Lösung erfolgt auf eigenes Risiko;
- regelmäßige Datensicherungen des Rocrail-Arbeitsbereichs werden empfohlen;
Vorwort 3:
- eine Mehrfach-Traktion wird nicht berücksichtigt!
Im Rocrail-Forum wurde die Anfrage gestellt, nur die Lokomotiven, die sich in einem Block befinden, in der Lok-Liste "sichtbar" und "aktiv" anzuzeigen.
Ferner sollten alternativ auch wieder alle Lokomotiven "sichtbar" und "aktiv" angezeigt werden.
Das XML-Script "ac_locos_activate.xml" erfüllt diese Aufgabe.
-
Eine Lokomotive kann aktiviert bzw. de-aktiviert werden durch:
<lc id="lc11" cmd="activate"/> | Lok "lc11" aktivieren |
<lc id="lc11" cmd="deactivate"/> | Lok "lc11" deaktivieren |
Dafür gibt es jeweils den Befehl "activate" und "deactivate".
Eine Lokomotive (hier "lc11") kann angezeigt werden bzw. verborgen werden durch:
<lc id="lc11" show="true"/> | Lok "lc11" anzeigen |
<lc id="lc11" show="false"/> | Lok "lc11" verbergen |
Es gibt für das Attribut "show" keinen Befehl; man kann aber ein Attribute in einem Objekt verändern; damit dies nachhaltig wirksam ist, umschließt man die Änderung des Attributes mit dem "Model"-Befehl "change"; der komplette Ablauf sieht dann so aus:
<model cmd="change"> <lc id="lc11" show="true" /> </model>
- siehe dazu im Rocrail-Wiki https://wiki.rocrail.net/doku.php?id=xmlscripting-de&s[]=change#befehle
Es sollen alle Lokomotiven in dem Rocrail-Plan untersucht werden; das geschieht mit einer Programm-Schleife ("foreach") über die Elemente in der Lokomotiv-Liste ("lclist"):
<foreach table="lclist" > ... </foreach>
Je nach Zustand des XML-Script-aufrufenden Rocrail-Ausganges ("co %callerid%") werden die Lokomotiven angezeigt/aktiviert oder verborgen/deaktiviert:
<if state="co %callerid% = on"> <then> <!-- show and activate all locos --> </then> <else> <!-- show and activate only locos within blocks --> </else> </if>
Ob sich die Lok "lc11" in einem Block befindet, erfährt man mit der Abfrage (query):
<query vr="vr_ala_tmp" table="lclist" id="lc11" get="blockid"/>
… und anschließender Abfrage ("(null)" steht für "kein Block"):
<if condition="@vr_ala_tmp = (null)">
Die festen Lokomotiv-Kennungen werden in der Programmschleife durch die Lauf-Variable "%oid%" ersetzt.
Das XML-Script wird hier ohne Trace- und Kommentar-Zeilen aufgeführt;
im Arbeitsbereich sind alle Trace- und Kommentar-Zeilen enthalten.
Die Trace-Zeilen können mit "<xmlscript trace="false">" deaktiviert werden:
<xmlscript> <vr id="vr_ala_tmp" text="" value="0" generated="true"/> <foreach table="lclist" > <if state="co %callerid% = on"> <then> <model cmd="change"> <lc id="%oid%" show="true" /> </model> <lc id="%oid%" cmd="activate"/> </then> <else> <query vr="vr_ala_tmp" table="lclist" id="%oid%" get="blockid"/> <if condition="@vr_ala_tmp = (null)"> <then> <model cmd="change"> <lc id="%oid%" show="false" /> </model> <lc id="%oid%" cmd="deactivate"/> </then> <else> <model cmd="change"> <lc id="%oid%" show="true" /> </model> <lc id="%oid%" cmd="activate"/> </else> </if> </else> </if> </foreach> </xmlscript>
Ein Rocrail-Ausgang ruft das XML-Script auf im Status "on" und im Status "off":
Je nach Status werden
- alle Lokomotiven angezeigt und aktiviert oder
- es werden nur die angezeigt und aktiviert, die sich in einem Block oder Aufstellung-Block befinden:
-
Um diese Lösung im eigenen Rocrail-Plan zu nutzen,
- kopiert man die XML-Script-Datei "ac_locos_activate.xml" in seinen Arbeitsbereich (genauer: in seinen Script-Ordner);
- erzeugt im Plan eine neue Aktion, die dieses XML-Script anwendet;
- erzeugt im Plan einen Ausgang, der die Aktion im Status "on" und im Status "off" aufruft.
starke Hinweise:
- vorher immer eine Datensicherung machen!
- anwenden auf eigene Gefahr!
Der Arbeitsbereich locos_activate