BVE Trainsim における配線作業で便利な Tsutsuji trackcomputer を用いて片開き分岐器を作ってみましょう。
準備
路線設定
まずは路線とその駅に関する設定を考えておきましょう。
ここでは各駅のホーム長は100m程度あれば十分とし、駅間の曲線や勾配は考えません。
配線作業用のフォルダを作成
分かりやすい名前(例:(ユーザー名)_TsutsujiTest)をつけておきましょう。以降はこのフォルダの中で作業を行っていきます。
Ex01 片開き分岐器
- 補助線を活用すべし
- 分岐器は基準軌道の整数値距離程から伸ばす
- 前端(1線)側から作るのが楽
設定ファイル(cfg形式)の準備
まずは設定ファイルを用意します。
以下をテキストエディタで作り「setting_Ex01.cfg」として保存しておきましょう。
[@TSUTSUJI_GENERAL]
owntrack = Example_down
unit_length = 1
offset_variable = Ex01_ReferencePoint
origin_distance = 0
output_path = ./result_Ex01
[Example_down]
file = Example_down.txt
absolute_coordinate = True
x = 0
y = 0
z = 0
angle = 0
color = cyan
- offset_variable:Ex01駅の少し手前(ここでは0m、origin_distance)を基準点(Reference Point)とし出力される変数としています。
分かりやすい名前をつけましょう。 - color:設定しておくことで今後行う配線作業における表示色を固定できます。
分岐地点
自線を作る
まずは自線を作っていきます。以下を記述し「Example_down.txt」として保存します。
BveTs Map 2.02:utf-8
#【記載内容】Example線 下り
#----------基本線形----------
0;
Curve.SetGauge(1.067);
Curve.SetCenter(1.067/2);
Curve.SetFunction(1);
0;
Curve.Interpolate(0);
100;
Curve.Interpolate(0);
distance + 100;
Curve.Interpolate(0);
「#」を用いることでコメントアウトをすることができます(設定ファイルも同様)。
vscode ではBVE構文サポート拡張機能が配布されており、重宝しています。
次に Tsutsuji を起動し、setting.cfg を読み込みます。200mの直線が表示されれば成功です。
画像では Symbols > radius にチェックを入れて再描画(Replot)することで曲線変化地点(Curve.Interpolate構文を使用した地点)を表示しています。
曲線に関する箇所は目で見て分かったほうが良いので、チェックしておくことを私は推奨しています。
他線(Ex01_side)を作る
次に他線(側線)を作っていきます。以下のように記述し、「Ex01_side.txt」として保存します。
BveTs Map 2.02:utf-8
#【記載区間】Ex01 側線
#----------基本線形----------
0;
Curve.SetGauge(1.067);
Curve.SetCenter(1.067/2);
Curve.SetFunction(1);
# 10番片開き分岐器(左)
0;
Curve.Begin(-185.5);
20;
Curve.End();
- QCurve.Begin(), Curve.End() と Curve.Interpolate() は使い分けているの?
- A
今回の分岐器のように事前に地点と値が確定しているときに Begin, End を使っています。
構文で曲げてますよ~、って感じもあるので。
Interpolate は目印がてら Cuve.Interpolate(0) のような使い方をしています。
- Q最後に distance + 100 などと記述しているのはなぜ?
- A
延長線を出力するためです。この手前に記述を増やしていくことで、必ずさらにその先まで表示できるようにしています。
適宜コメントアウトや値を変更することで活用できます。
続いて、設定ファイルに以下を新たに追加し保存後、再読み込み(F5)を行います。
Ex01_sideには自列車を進入させず、常に他線として出力後は扱います。
Example_downを親とした軌道とするので、absolute_coordinate = False、parent_track = Example_down とします。
[Ex01_side]
file = Ex01_side.txt
absolute_coordinate = False
parent_track = Example_down
origin_kilopost = 100
x = 0
y = 0
z = 0
angle = 0
color = salmon
Plot control において倍率を変更し再描画しました(以降も適宜変更します)。100m地点から左カーブが新たに表示されています。
側線は本線と並行、左に5m離すことにします。ここで便利なのが、補助線を引くという作業です。
やり方はとても簡単、以下を記述して「guide.txt」として保存します。
BveTs Map 2.02:utf-8
#【記載区間】補助
#----------基本線形----------
0;
Curve.SetGauge(1.067);
Curve.SetCenter(1.067/2);
Curve.SetFunction(1);
0;
Curve.Interpolate(0);
300;
Curve.Interpolate(0);
ここでは長さを300mとしてみました。これを Tsutsuji に表示するために setting_Ex01.cfg に以下を追加し再読み込みを行います。
[guide]
file = guide.txt
absolute_coordinate = False
parent_track = Example_down
origin_kilopost = 0
x = -5
y = 0
z = 0
angle = 0
color = #ff88ff
色は名称ではなくカラーコードで指定することもできます。x=-5 とすることで Example_down から-5m平行移動した位置に配置することができます。
紫色の線が表示されました。
線路間隔にも基準があり、厳密には小数点以下が含まれることがあります。
ただ、そこまで細かくすると正直手間なので最低4mの整数値としています。
ここからはいよいよ Tsutsuji のメイン機能の1つ, CurveTrack Solver を用いて、新たに引いた補助線に先ほどの曲線を合流させます。
曲線の半径は500m,緩和曲線長は10mとします。
さまざまなモードが用意されています。私はMode3-1,3-2を多用しています。
あとはターミナルの出力結果($pt_a = 20.0)以降をコピーし Ex01_side.txt に貼り付けるだけですが、出力を見ると分岐器の左曲線が終わる20m地点の5m先から右曲線、少し窮屈で手直ししたくなりました。
緩和曲線の長さは10mで固定したいので、曲線半径を300mへと変更することにします。
やり方は簡単で、手順4. において R=300 と書き換え再実行するだけです。その他の箇所は変える必要がありません。すると新たに別の色で線が引かれ結果を比べることができます(再読み込み、再描画で出力した線は消えます)。
再出力すると15mの直線区間が生まれ余裕ができました。この結果を Ex01_side.txt に追加し、再読み込みを行います。
出力&確認
最後に、Generate を押すと setting_Ex01.cfg にて指定したフォルダに自線を Example_down としたMapファイルが出力されます(補助線は必要ないかつ自線より先まで伸びてしまっているのでコメントアウトしておきましょう)。
これをBVEにて読み込んでやると(include構文を使うと便利)次のようになります。
綺麗に仕上がりました。
ストラクチャ類は Coffee & Sleep 様の「なるべく座標を打たずに線路を引く」よりお借りしています。
合流地点
分岐地点は作ることができましたね。次は合流地点を作ってみましょう。
合流地点は Example_down の 300m地点としてみます。まずは Example_down.txt に手を加え( 300; Curve.Interpolate(0) )その地点まで線路を延ばしておきましょう。
次に、以下のように記述したものを「guide_curve.txt」として保存し、設定ファイルに追加します。
BveTs Map 2.02:utf-8
#【記載区間】補助(曲線用)
#----------基本線形----------
0;
Curve.SetGauge(1.067);
Curve.SetCenter(1.067/2);
Curve.SetFunction(1);
0;
Curve.Begin(185.5);
20;
Curve.End();
[guide_curve]
file = guide_curve.txt
absolute_coordinate = False
parent_track = Example_down
origin_kilopost = 300
x = 0
y = 0
z = 0
angle = 180
color = #f8f
angle = 180 とすることで、合流地点(Example_down基準300m)から進行方向とは逆向きの曲線を生成します。
画面上左向きがこの軌道における正方向であることに注意してください。
Ex01_side.txt に 200; Curve.Interpolate(0) を追加し再読み込みすると次のようになります。
右側から紫色の曲線(10番片開き分岐器曲線)が出現しました。
ここで再び、 CurveTrack Solver の出番です。半径300m、緩和曲線10mずつの右曲線で Ex01_side と guide_curve を繋げてみましょう。
Mode3-2 を用いたことで、2つの曲線に関する出力を一度に得ることができました。
出力内容を Ex01_side.txt に追加し(200; Curve.Interpolate(0) と distance + 100 は必要ないので削除)、軌道 guide_curve に関する設定ファイルの箇所はコメントアウトして再読み込みすると次のようになります。
これで両側の分岐器が完成しました。あとは Generate で出力するだけなのですが、Ex01_side が Examle_down と並行である区間は約45mほどしかありません(Measure ウィンドウでカーソルを Ex01_side 上に指定し Pos. で動かすことで距離程が表示されるのでそこから算出しています)。
これを延長してみましょう。
先ほど Ex01_side.txt に貼り付けた出力結果を見ると、$pt_a = 100.000000 となっています。
これを $pt_a = 150.00000 とし再読み込みします。
簡単に延長できました。
最後に Generate で自軌道を Example_down として出力したものを BVE で読み込んでみます。
これで完成です。右分岐や番数の異なる場合なども練習として作ってみるとよいでしょう。
お疲れ様でした。
両開き分岐器も自線が最初に曲がるだけなので、補助線を引けば簡単にできます。
空中写真編では両開き構造の狩留家駅を製作していますのであわせてご覧ください。
名称付けの際に日本語は使わないように心がけると良いでしょう。英数字とハイフン(-)、アンダースコア(_)のみを使用します。