TC - Tools mit AutoHotkey                            

Fahrplandatum stellen

Lokgeschwindigkeit messen mit AutoHotkey

Tastaturkürzel zuweisen mit AutoHotkey

Melder in Blöcke einfügen TC-Gold

Autotrain Start/Ziel Taster erzeugen mit AutoHotkey TC-Gold

Lokführerstand über Taste, Tastatur oder Makro aufrufen

Simulator


TC 7.0

Fahrplandatum stellen mit AutoHotkey

Vorher:


Nachher:


Mit der Datei Datum2501.exe ist es möglich per Tastendruck ein beliebiges Datum
(Tag und Monat) einzustellen.
Der Fahrplan muss als schwebendes Fenster am Bildschirm vorhanden sein !!
Das Programm wird über die Operationen einens Taster aufgerufen. (wie beim Uhrstellen)
Das Datum wird im Fahrplan mit der gelieferten Datei auf den 25 Jänner gestellt.
Durch kopieren und umbenennen kann man jeden gewünschten Tag und jedes gewünschtes Monat einstellen.

Wer Interesse an diesem Programm hat, lässt es mich per wissen.

Zurück zum Seitenanfang


Lokgeschwindigkeit messen mit AutoHotkey



Wenn man schnell einmal die Geschwindigkeit einer Lokomotive messen will,
ohne in TC das Menü Geschwindigkeitsprofil zu bemühen, dann ist dieses Programm genau richtig.
Eine kurze Beschreibung gibt es hier:
  PDF Lokgeschwindigkeit
Wer Interesse an diesem Programm hat, lässt es mich per wissen.

Zurück zum Seitenanfang
Tastaturkürzel zuweisen mit AutoHotkey

Für AutoHotkey ist es zwar nicht zwingend erforderlich, aber sehr praktisch,
verschiedene Menü- und Fensterbefehle über Tastaturkombinationen ( Tastenkürzel ) zu erreichen.
Ich habe hier eine Liste erstellt, über die derzeit in TC schon vorhandenen Tastenkürzel,
und meine eigenen Definitionen.



  +     Menü Railroad
Neu			Strg+N
Öffnen...		Strg+O
Speichern		Strg+S
Einfrieren		Esc
  +     Menü Bearbeiten
Rückgängig		Strg+Z
Wiederholen		Strg+Y
Ausschneiden		Strg+X
Kopieren		Strg+C
Einfügen		Strg+V
Löschen			Entf
Nach links drehen	Strg+L
Nach rechts drehen	Strg+R
Eigenschaften		Strg+W
  +     Menü Ansicht
Editiermodus		Strg+E
  +     Menü Zug
Stop Lok/Zug		Strg+Leer
  +     Menü Zugfahrt
AutoTrain..		Strg+A
Eigene Definitionen
Menü Zug
 <> Verbrauch

Kohle laden		Strg+Alt+K
Öl tanken		Strg+Alt+O
Wasser tanken		Strg+Alt+W
Diesel tanken		Strg+Alt+D

Menü Werkzeuge
Auswahl			Strg+Alt+A
 <> Zubehör
 	<> Taster	Strg+Alt+T
 	<> Umschalter	Strg+Alt+U
 	<> Ein/Aus	Strg+Alt+E

Menü Fenster

Neuer Lokführerstand	Strg+Alt+F
Neues Traffic-Control	Strg+T
Meldungen		Strg+M
Inspektor		Strg+I
Uhr stellen		Strg+K
Simulator		Strg+Alt+S
Wenn man öfter neue Projekte zeichnet, ist es sehr praktisch wenn man ein entsprechendes Tool zur
Verfügung hat, um die Tastenbelegungen automatisch durchzuführen.
Ich habe mit AutoHotkey ein Programm erstellt, das die oben angeführten zusätzlichen
Tastaturkürzel in TC-Gold und TC-Silver anlegt.
Die Datei kann hier heruntergeladen werden:

Anpassen.zip (AHK und EXE-Datei)


Die Anleitung gibt es hier:
  Tastaturkürzel setzen mit AutoHotkey

Zurück zum Seitenanfang


Melder in Blöcke einfügen

Dieses Programm dient dazu, um vier verschiedene Melderarten in den Blockeditor einzufügen.
Gestartet wird das Programm über die Taste F12, nachdem es im Explorer durch Doppelklick aufgerufen wurde.
Es erscheint folgende Menüauswahl :



Auf das Bild mit der gewünschten Konfiguration klicken, und in TC-Gold auf einen Block klicken.

Ergebnis Block 1 Melder:
Ergebnis Block 3 Melder:
Ergebnis Block 2 Melder Haltmelder links:
Ergebnis Block 2 Melder Haltmelder rechts:

Zusätzlich werden in jeden Melder entsprechende Platzhalter geschrieben.


Die Datei kann hier heruntergeladen werden:

BlockMelder.zip ( BlockMelder.exe tctools.dll )



Zurück zum Seitenanfang


Autotrain Start/Ziel Taster erzeugen mit AutoHotkey



Autotrain Start/Ziel Taster sind, wie ich schon im Beitrag Blöcke und Melder schrieb, grenzgenial.
Durch einfaches Setzen der Taster und Eintragen der entsrechenden Operationen, ist es in TC-Gold möglich
durch Anklicken je einer Start- und Ziel-Taste, Autotrainzugfahrten durchzuführen.
Dadurch kann man in kürzester Zeit eine komfortable Steuerung von Zugfahrten erhalten.
Da ich alle meine Blöcke mit diesen Tastern ausstatten will, habe ich mich daran gemacht ein entsprechendes
AutoHotkey Programm zu schreiben.

Das Programm arbeitet folgendermaßen:
Durch einfaches Anklicken eines Blocks wird zuerst die Blocklänge ermittelt.
Danach wird rechts und links des Blocks je ein Taster eingesetzt, und diese Taster mit den entsprechenden
Autotrain-Operationen ausgestattet. Überdies werden die Taster auch beschriftet, und wenn vorhanden, mit
mit meinen Autotrain Symbolen abgebildet.

Programm aufrufen, Klick in den Block,

Ergebnis

Die Taster werden beschriftet
und die entsprechenden Operationen eingetragen.


Die Datei kann hier heruntergeladen werden:

AutotrainTaster.zip (AHK-Datei)


Die Anleitung gibt es hier:
  Autotraintaster setzen mit AutoHotkey

Zurück zum Seitenanfang


Lokführerstand über Taste, Tastatur oder Makro aufrufen

TC-Silver : Taste, Tastatur
TC-Gold : Makro, Taste, Tastatur

Ziel dieser Übung ist es, einen (vollautomatischen nur in Gold ) Aufruf eines Lokführerstands für eine bestimmte Lok zu erreichen.
Damit dies funktioniert, sind einige Vorbereitungsarbeiten notwendig.
Im Menü Ansicht Menüs und Symbolleisten anpassen erstellen wir eine neue Symbolleiste (Lokauswahl)
und ziehen das Menü Zug auswählen bei gedrückter linker Maustaste in unsere neue Symbolleiste.


Die sieht dann so aus :

Um jetzt dieses Menü über eine Tastenkombination erreichen zu können
fügen wir das Zeichen & vor dem ä ein.

Nicht vergessen diese Aktion ist mit Enter abzuschließen.

Die fertige Symbolleiste ist jetzt mit Alt+ä über die Tastatur erreichbar,
wenn der Fokus auf einem Lokführerstand liegt.

Wichtig: Diese Symbolleiste darf nicht als schwebendes Fenster plaziert sein,
sondern muss im oberen Menübereich angeordnet werden.!!!
Sonst funktioniert das Programm nicht so wie es soll.

Ebenso weisen wir im Menü Anpassen dem Befehl Fenster --> Neuer Lokführerstand
die Tastenkombination Strg+Alt+f zu.

Leider hat sich in TC-7 gegenüber TC 5.8 eine Veränderung, was die Menübedienung der Lokliste betrifft, ergeben.

Früher konnte man eine Lok mit ihrem ganzen Namen in der Lokliste aufrufen,
das ist jetzt nicht mehr möglich.
Um eine Lok in TC 7 mit AutoHotkey eindeutig aufrufen zu können,
müssen die Loknamen dahingehend geändert werden, dass jeweils eine automatisch aufzurufende Lok
mit ihrem Anfangsbuchstaben eindeutig identifizierbar ist.
Für dieses Beispiel habe ich X- Y- Z- vor die alten Loknamen gesetzt.
Der Bindestrich ist übrigens auch notwendig um eine Identifizierung der Lokführerstandsfenster durchzuführen.

Sinnvollerweise macht man das nur mit einigen Loks die man über den Lokführerstand steuern will.


AutoHotkey-Code für Lok X-
;Lok X aufrufen.ahk Wolfgang Schön 04 2012
;***********************************************
;LokA := "X-1044(72)"  nur als Beispiel
 LokA := "X-"
;LokB := "Y-BR362-62MM"
 LokB := "Y-"
;LokC := "Z-60VERSCHUBTX"
 LokC := "Z-"
;***********************************************

IfWinExist,       %LokA%
WinActivate, ,    %LokA%

Else IfWinExist,  %LokB%
WinActivate, ,    %LokB%

Else IfWinExist,  %LokC%
WinActivate, ,    %LokC%

Else
Send, {CTRLDOWN}{ALTDOWN}f{CTRLUP}{ALTUP} ; Neuen Lokführerstand aufrufen

Sleep, 500

Send, {ALTDOWN}ä{ALTUP} ; Lokliste aufrufen
Sleep, 200
Send, x  ;Lok X-1044(72) wird aufgerufen
Sleep, 200

MouseClick, left,  20, 80
Sleep, 100
MouseMove, 110, 163  ;Mausbewegung nach rechts und unten
;im Lokführerfenster individuell anpassen
AutoHotkey-Code für Lok Y-
;Lok Y aufrufen.ahk Wolfgang Schön 04 2012
;***********************************************
;LokA := "X-1044(72)"  nur als Beispiel
 LokA := "X-"
;LokB := "Y-BR362-62MM"
 LokB := "Y-"
;LokC := "Z-60VERSCHUBTX"
 LokC := "Z-"
;***********************************************

IfWinExist,       %LokA%
WinActivate, ,    %LokA%

Else IfWinExist,  %LokB%
WinActivate, ,    %LokB%

Else IfWinExist,  %LokC%
WinActivate, ,    %LokC%

Else
Send, {CTRLDOWN}{ALTDOWN}f{CTRLUP}{ALTUP} ; Neuen Lokführerstand aufrufen

Sleep, 500

Send, {ALTDOWN}ä{ALTUP} ; Lokliste aufrufen
Sleep, 200
Send, y  ;Lok Y-BR362-62MM wird aufgerufen
Sleep, 200

MouseClick, left,  20, 80
Sleep, 100
MouseMove, 115, 193  ;Mausbewegung nach rechts und unten
;im Lokführerfenster individuell anpassen
AutoHotkey-Code für Lok Z-
;Lok Z aufrufen.ahk Wolfgang Schön 04 2012
;***********************************************
;LokA := "X-1044(72)"  nur als Beispiel
 LokA := "X-"
;LokB := "Y-BR362-62MM"
 LokB := "Y-"
;LokC := "Z-60VERSCHUBTX"
 LokC := "Z-"
;***********************************************

IfWinExist,       %LokA%
WinActivate, ,    %LokA%

Else IfWinExist,  %LokB%
WinActivate, ,    %LokB%

Else IfWinExist,  %LokC%
WinActivate, ,    %LokC%

Else
Send, {CTRLDOWN}{ALTDOWN}f{CTRLUP}{ALTUP} ; Neuen Lokführerstand aufrufen

Sleep, 500

Send, {ALTDOWN}ä{ALTUP} ; Lokliste aufrufen
Sleep, 200
Send, z  ;Lok Z-60VERSCHUBTX wird aufgerufen
Sleep, 200

MouseClick, left,  20, 80
Sleep, 100
MouseMove, 115, 193  ;Mausbewegung nach rechts und unten
;im Lokführerfenster individuell anpassen
Den Code hier kopieren und in einen Texteditor einfügen.
Die Datei z.B. als LOK X aufrufen.ahk abspeichern und kompilieren.
Voraussetzung Autohotkey ist auf dem Rechner installiert.


Die EXE-Datei wird erzeugt.


Diese Dateien können wir jetzt über einen Taster oder die Tastatur
aufrufen, wenn dem Taster eine Steuertaste der Tastatur zugewiesen wurde.
Das ist für TC-Silver die Grenze.
In TC-Gold kann man ja über Combi-Gruppen feststellen ob sich eine Lok in einem bestimmten Block befindet,
oder eine bestimmte Zugfahrt durchführt, und z.B. über Makros den Lokführerstand automatisch aufrufen lassen.

Die AutoHotkey-Dateien bewirken jetzt folgendes:
Befindet sich ein Lokführerstand der drei Loks auf dem Bildschirm

  oder     oder  

so wird nach Betätigung des Tasters, der Steuertaste oder über eine Operation (Combi-Gruppe TC-Gold)
der jeweilige Lokführerstand aufgerufen, und der Fokus auf den Geschwindigkeitstaster gesetzt.
Ist überhaupt kein Lokführerstand aufgerufen, so wird ein neuer Lokführerstand erzeugt,
die jeweilige Lok dazu aufgerufen und der Fokus auf die Steuertaste gesetzt.
Ist ein Lokführerstand vorhanden, aber mit einer anderen Lok belegt, so wird ebenfalls ein neuer
Lokführerstand aufgerufen.
  oder     oder  

MouseMove, 115, 193  ;Mausbewegung nach rechts und unten
;im Lokführerfenster individuell anpassen
Die letzte Zeile im Code (MouseMove) gibt die Anzahl der Pixel an, wohin der Mauszeiger
wandern soll (von links oben des aktuellen Lokführerstands 115 Pixel nach rechts und 193 Pixel nach unten).
Dazu gibt es in AutoHotkey ein Werkzeug das nennt sich AutoIt3 Window Spy.

Das Programm aufrufen, und mit der Maus innerhalb des Lokführerstands
an jene Stelle fahren wo man den Cursor positioniert haben will.
   

Den Wert ablesen und in den Programmcode eintragen.

Bei auftretenden Fragen bitte mich per e-mail kontaktieren.
Zurück zum Seitenanfang


Simulator



Diese Anleitung richtet sich nur an TC-Anwender mit PC-Erfahrung
und hier auch nur an jene, die öfters im Offline-Betrieb andere Anlagen-Dateien testen!

In einer Testumgebung ist es immr wieder notwendig den Simulator nach Verlassen des Edit-Modus zu starten.
Das kann auch eine AutoHotkey-Datei, die man in TC in einen Taster einbindet, übernehmen.
Dem Simulator muß vorher die Tastenkombination Strg+Alt+S über das "Menü Anpassen" zugewiesen werden

Die Schaltfläche des Simulators ist aber derzeit leider ein Ein/Aus-Schalter.
Wenn ich nun eine Test-Zugfahrt im Offline-Modus über eine Taste in deren Operationen Start Zugfahrt
und auch meine AutoHotkey-Datei Simulator.exe eingetragen war starte,
so wurde der Simulator aufgerufen und gestartet und ebenfalls die Zugfahrt.
Soweit so Gut.
Endet die Zugfahrt, und ich betätige wieder diesen Taster, so startet zwar die Zugfahrt, aber der automatische Klick auf
die Simulator Schaltfläche bewirkte, dass der Simulator anhielt.
Ich suchte also nach einer Möglichkeit festzustellen, ob der Simulator An oder Aus ist.
Da fiel mir folgendes auf:
Simulator Aus:

Simulator Ein:

Die untere Linie des orangen Quadrats hat die Y-Koordinate 42.
Die X-Koordinate eines Pixels ca. in der Mitte hat den Wert 15.
Das Programm zur Ermittlung des Farbwertes dieses Pixels sieht so aus
WinActivate, , Simulator
PixelGetColor, PixColor, 15, 42
MsgBox Die Farbe auf Position 15, 42 ist %PixColor%.
FileAppend, %PixColor% `n, D:\TEST\Simulatorfarbe.txt
Den Code markieren in eine TXT-Datei einfügen, als Simulatorfarbe.ahk abspeichern
und wie in meinem Beispiel   Uhr stellen in TC 7 (Gold und Silver) kompilieren und in TC einfügen.
Der Ordner D:\TEST muß vorher angelegt werden, die Datei Simulatorfarbe.txt erzeugt AHK selber.
Dieser Schritt ist deswegen notwendig, da ich festgestellt habe, dass auf verschiedenen Computern
auch die Farbwerte differierten.
In meinem Fall ermittelte ich den Hex-Farbwert 0x69BDFF

Um jetzt den Simulator so zu bedienen wie ich mir das vorgestellt habe ist folgender Code notwendig:
Send, {CTRLDOWN}{ALTDOWN}s{CTRLUP}{ALTUP}
Sleep, 200
PixelGetColor, PixColor, 15, 42
If (PixColor = "0x69BDFF")
ExitApp

Else
{
Sleep, 200
MouseClick, left,  13, 28
}
Zur Erklärung:
Send, {CTRLDOWN} {ALTDOWN} s {CTRLUP} {ALTUP} AHK sendet die Tastenkombination Strg+Alt+s an TC.
Der Simulator wird aufgerufen oder aktiviert.
PixelGetColor, PixColor, 15, 42 Hier wird die Farbabfrage durchgeführt wenn orange dann das Programm verlassen.
Der Simulator läuft.
Wenn nicht orange dann: MouseClick, left, 13, 28 Klick auf die Schaltfläche Start/Stop
Der Simulator wird gestartet.
Den Code wieder markieren in eine TXT-Datei einfügen, als Simulator.ahk abspeichern und kompilieren
Die EXE-Datei wird, wie schon an anderer Stelle beschrieben in TC eingebunden und könnte so vollautomatisch
ihre Dienste erweisen.

Das funktioniert bei folgenden Designs soweit ich das grob getestet habe:


Bei auftretenden Fragen bin ich jederzeit per e-mail erreichbar siehe Menüpunkt Kontakt.
Zurück zum Seitenanfang



TC 5.8

 

UHRxxxx.exe 

 

Um die Bedienung des Programms noch zu verfeinern, habe ich mit dem Maus- bzw.

Tastaturaufzeichnungsprogramm AutoHotkey die Eingaben, um die Uhrzeit zu stellen aufgezeichnet

und daraus eine Exe-Datei erstellt.

 

Man fügt einen Taster in das Stellwerk ein, als Operation wird das Programm

uhr0600.exe aufgerufen.

Durch betätigen des Tasters wird die Uhrzeit auf 05 Uhr 58 min gestellt.

Es sind natürlich auch alle andern Uhrzeiten möglich.

 

  

 

 

 

 

 

Strgx.exe      automatische Bedienung der Fensterleiste TC 5.8

 

 

Um aus dem Programm heraus einzelne Stellwerksfenster aufzurufen, habe ich die Dateien

Strg1.exe                     Strg2.exe                    Strg3.exe                 Strg4.exe…………                  erstellt.

 

 

Wenn z.B. Strg2.exe einem Stellwerkselement zugeordnet ist, dass Operationen ausführen kann

( Taster, Schalter, Bahnwärter oder Melder ) ist es möglich direkt aus dem Programm heraus das 2.Feld ( in meinem

Fall  BETRIEBSWERK ) in den Vordergrund zu holen.

 

 

 

Weitere Anwendungsbereiche:

 

Aufrufen eines Lokführerstandes TC 5.8

 

 

Nach drücken des Tasters ist die Lok "60VerschubTX" im Lokführerstand aufgerufen.

Der Fokus ist auf den Geschwindigkeitsregler gelegt, und die Lok kann sofort mit den Pfeiltasten der Tastatur

beschleunigt werden.

 

                  

 

 

 

Quellcode :

 

Send, {CTRLDOWN}9{CTRLUP}

Send, {TAB}60VERSCHUBTX{TAB}

 

In der ersten Zeile wird der Lokführerstand aktiviert. Dieser muss sich an der 9. Position

in der Fensterleiste befinden.

In der zweiten Zeile wird die Lok aufgerufen


Zurück zum Seitenanfang
Zurück zur Startseite


 

ahk.html