Tutorial zum Einbau von SWITCH-Weichen:

In diesem Tutorial wird der Bau einer Weichenverbindung zwischen zwei Parallelgleisen beschrieben. Dabei soll der Fahrweg vom linken auf das rechte Gleis führen.

Wie wir wissen, benutzt BVE für die Darstellung der Gleise (und für fast alles andere auch) ein 25m-Längenraster. Unsere Weichenverbindung muss also in dieses Raster passen.
Wenn wir von einer Weichenlänge von 25m und einem Gleisabstand von 4m ausgehen, ergibt sich für jede Weiche ein Abzweig-Offset von 2m, logischerweise dem halben Parallelgleisabstand, sowie eine Gesamtlänge der Weichenverbindung von 50m.
Anhand dieser Daten können wir nun die benötigte Weiche mit SWITCH erstellen.

Werfen wir zunächst einmal einen Blick auf die Skizze, um uns die Situation zu verdeutlichen (unsere Fahrt führt auf dem grünen Gleis von rechts nach links):

In BVE benutzen wir stets das Gleis 0 (grün dargestellt). Daran kann man schon erkennen, dass jeder "Gleiswechsel" nur rein optischer Natur ist, in Wahrheit verlassen wir das Gleis 0 zu keinem Zeitpunkt. Die Kunst besteht nun darin, es so aussehen zu lassen, als würden wir tatsächlich das Gleis wechseln.

Dazu erstellen wir jetzt das Parallelgleis 1, auf das wir später "wechseln" wollen, im Abstand von 4m zum Gleis 0:

railstart(1,4,0,1) (Gleisnummer, Abstand von Gleis 0, Höhendifferenz zu Gleis 0, Gleistyp)

Bei 200m soll die abzweigende Weiche nach rechts beginnen, für die wir den Curve-Befehl verwenden. Den hierfür nötigen Abzweigradius erhalten wir aus dem Header der Weichendatei, die wir zuvor mit SWITCH erstellt haben. In unserem Falle ergibt sich ein Radius von 156.583m.
An dieser Stelle müssen wir nun ein neues Gleis beginnen, welches die Fortführung des geraden Stranges darstellen soll, da unser Gleis ja nach rechts abzweigt:

200
@curve(156.583)
@railstart(2,0,0,1)

25m weiter, bei 225m, befinden wir uns in der Mitte der Weichenverbindung. Hier beginnen wir den Gegenbogen nach links, indem wir eine Kurve mit dem negativen Radius erstellen.
Da wir an dieser Stelle bereits den halben Parallelgleisabstand zurückgelegt haben, befindet sich das Gleis 1 nur noch 2m rechts von uns; das Gleis 2 ist zudem 2m nach links gewandert. Dies passen wir durch den Rail-Befehl an:

225
@curve(-156.583)
@rail(1,2)
@rail(2,-2)

Jetzt sind wir bei 250m. Hier endet unsere Weiche, also leiten wir auch den Bogen aus.
Dem Gleis 1 haben wir uns um weitere 2m genähert, sodass sich jetzt unsere beiden Gleise überlappen. Somit können wir das Gleis 1 hier mit dem Railend-Befehl beenden.
Gleis zwei dagegen ist um weitere 2m nach links gewandert und hat jetzt seinen endgültigen Parallelgleisabstand von 4m:

250
@curve(0)
@rail(1,0)
@rail(2,-4)
@railend(1,0)

Als zusammenhängenden Code haben wir jetzt folgendes (Einzelheiten grau ergänzt):

[Railway]

100
@Station(Start,12.0050,12.0100,1,ATS)
@stop(1)
@railstart(1,4,0,1)
@railtype(0,1)

200
@curve(156.583)
@railstart(2,0,0,1)

225
@curve(-156.583)
@rail(1,2)@rail(2,-2)

250
@curve(0)
@rail(1,0)@rail(2,-4)
@railend(1,0)

300
@Station(Ende,12.0200,12.0230,1,ATS)
@stop(1)

So, wollen wir uns das bisherige Ergebnis doch einmal ansehen:

Das ist sozusagen die Standardvariante ohne besondere Verzierungen.
Hier setzt nun SWITCH ein. Unter Verwendung der mit SWITCH generierten Weichen wollen wir nun den Weichenbereich grafisch aufwerten.
Hierfür ist es zunächst erforderlich, die Gleise, über die später die Weichenobjekte gelegt werden sollen, unsichtbar zu machen.
Wir definieren daher im Header der Streckendatei erst einmal folgende zwei Gleistypen:

[Object]

rail(0)=gleis_null.b3d (unsichtbares Gleis)
rail(1)=gleis_01.b3d (normales Gleis

Nun müssen wir noch an den betreffenden Stellen den Gleisindex auf 0 setzen.
Aus der Skizze erkennen wir, dass dies bei Gleis 0 im Bereich von 200-250m, bei Gleis 1 von 225-250m und bei Gleis 2 von 200-225m geschehen muss.
Passen wir unseren Code also dementsprechend an:

[Railway]

100
@Station(Start,12.0050,12.0100,1,ATS)
@stop(1)
@railstart(1,4,0,1)
@railtype(0,1)

200
@curve(156.583)
@railstart(2,0,0,1)
@railtype(0,0)
@railtype(2,0)

225
@curve(-156.583)
@rail(1,2)@rail(2,-2)
@railtype(1,0)
@railtype(2,1)

250
@curve(0)
@rail(1,0)@rail(2,-4)
@railend(1,0)
@railtype(0,1)

300
@Station(Ende,12.0200,12.0230,1,ATS)
@stop(1)

Haben wir diese Änderungen vorgenommen, sieht das Ergebnis so aus:

Nun ist es an der Zeit, diese Weiche endlich einzubauen:

Dazu benutzen wir den Freeobj-Befehl. Wir erklären diese Weiche also zum frei definierbaren 3D-Objekt:

[Object]

freeobj(0)=W25_R.b3d (Dateiname beliebig)

Der Rest ist im Grunde simpel und schnell erledigt.
Die Weiche wird nun an der Stelle 200m in den Code eingefügt, und zwar in Referenz zum dort beginnenden Gleis 2, da dieses geradeaus weiterverläuft. Prinzipiell kann man die Weiche auch auf Gleis 0 beziehen, müsste sie dann aber um den Abzweigwinkel (4.574°) nach links drehen, da Gleis 0 hier ja schon schräg nach rechts verläuft. Aber man muss sich die Arbeit ja nicht unnötig erschweren, also schreiben wir folgendes:

200
@freeobj(2,0)

Die erste Weiche ist eingebaut, bei der zweiten wird's ein wenig komplizierter, da diese ja stumpf befahren werden soll. Dies macht eine Drehung der Weiche um 180° nötig, was zudem zur Folge hat, dass wir die Weiche erst bei 250m einsetzen dürfen, da ihr Referenzpunkt stets an ihrem spitzen Ende liegt.
Man merke sich also: Die Weichenobjekte werden immer an der Stelle eingesetzt, an der ihre Zungen enden.
Da ab der Stelle 250m das Gleis 0 wieder geradeaus verläuft, können wir das Weichenobjekt nun getrost auf Gleis 0 beziehen (Gleis 1 wäre an dieser Stelle ohnehin schon beendet):

250
@freeobj(0,0,0,0,180)

Mitsamt aller Ergänzungen haben wir jetzt den folgenden Code:

[Object]
rail(0)=gleis_null.b3d
rail(1)=gleis_01.b3d

freeobj(0)=W25_R.b3d

[Railway]

100
@Station(Start,12.0050,12.0100,1,ATS)
@stop(1)
@railstart(1,4,0,1)
@railtype(0,1)

200
@curve(156.583)
@railstart(2,0,0,1)
@railtype(0,0)
@railtype(2,0)
@freeobj(2,0)

225
@curve(-156.583)
@rail(1,2)@rail(2,-2)
@railtype(1,0)
@railtype(2,1)

250
@curve(0)
@rail(1,0)@rail(2,-4)
@railend(1,0)
@railtype(0,1)
@freeobj(0,0,0,0,180)

300
@Station(Ende,12.0200,12.0230,1,ATS)
@stop(1)

So, geschafft!
Das war doch gar nicht so schwierig, oder? Schauen wir uns unser Ergebnis einmal an:

Nicht schlecht für den Anfang, oder? Das sieht doch um Längen besser aus, als die erste Variante!
Und der Arbeitsaufwand ist vergleichsweise gering. Hat man den Dreh erst einmal raus, lassen sich auch umfangreiche Weichenstraßen innerhalb kürzester Zeit erstellen.
Zugegeben, ein wenig Einarbeitung muss sein, um alle Prozesse im Kopf zu haben und zu verstehen.
Dieses Tutorial bietet jedenfalls den Ansatz dazu und legt die Grundlagen für weiteres Experimentieren.

In diesem Sinne, viel Spaß beim Basteln!

Februar 2003


© 2005 Rüdiger Hülsmann