Bve trainsim > 路線や車両をつくる > ファイル書式

マップファイル

BveTs Map 2.01:utf-8 ファイルの 1 行目には、ファイルヘッダーを必ず記述します。
Curve.Gauge(1.067); セミコロン ( ; ) で終わる 1 つの命令文をステートメントと呼びます。
Track['Right'].Position(3.8, 0); 基本のステートメントは、マップ要素とメソッドで構成されます。
0; 数値のみのステートメントは、現在の距離程を表します。
123; Curve.BeginTransition(); SpeedLimit.Begin(90); 1 行に複数のステートメントを記述することができます。
    Track [ 'Right' ] . Cant ( 0 ) ; 234 ; 各字句の間に空白 (スペース、タブ) を挿入することがきます。
Curve.BeginCircular(
600,
0.105
);
各字句の間に改行を挿入することがきます。つまり、1 つのステートメントを複数の行にわたって記述することができます。
track['right'].cant(0.105); 大文字と小文字の区別はありません。
345; # 円曲線終了 # または // から改行までの文字列をコメントまたは注釈と呼び、ファイル読み込み時に無視されます。

ファイルヘッダー

ファイル形式

ファイルの最初に "BveTs Map 2.01" を必ず記述します。

文字エンコーディング

ファイル形式の後に、コロン ( : )、このファイルの文字エンコーディング、改行の順に記述します。コロンの前後に空白を挿入することはできません。文字エンコーディングの記述を省略した場合、UTF-8 と認識されます。

シフト JIS の場合、ヘッダーは以下のようになります。

BveTs Map 2.01:shift_jis

注釈 (コメント)

# または // から改行までの文字列は、ファイル読み込み時に無視されます。区切り記号付きコメントには対応していません。

基本のステートメント

基本のステートメントは、以下のような構成になっています。

マップ要素.メソッド(引数, 引数, ...)
マップ要素[キー].メソッド(引数, 引数, ...)

自軌道の平面曲線

Curve.Gauge(value)

軌間を設定します。この値は、カントをロール角に換算するために使用します。

value 軌間 [m]

Curve.BeginTransition()

平面曲線の緩和曲線を開始します。

Curve.BeginCircular(radius, cant)

平面曲線の円曲線を開始します。

radius 曲線半径 [m] (正: 右曲線, 負: 左曲線)
cant カント量 [m]

Curve.End()

平面曲線を終了し、直線を開始します。

自軌道の勾配

Gradient.BeginTransition()

縦曲線を開始します。

Gradient.BeginConst(gradient)

一定勾配を開始します。

gradient 勾配 [‰]

Gradient.End()

勾配を終了し、レベル (水平) を開始します。

他軌道

Track[trackKey].Gauge(value)

他軌道の軌間を設定します。この値は、カントをロール角に換算するために使用します。

trackKey: 軌道名 (任意の文字列)
value 軌間 [m]

Track[trackKey].Position(x, y)
Track[trackKey].Position(x, y, radiusH, radiusV)

他軌道の位置を設定します。軌道ストラクチャーを配置するには Repeater[].Begin0 構文を使用してください。

trackKey: 軌道名 (任意の文字列)
x: 自軌道からの x 座標 [m]
y: 自軌道からの y 座標 [m]
radiusH: 次の Track[].Position 構文までの平面曲線の半径 [m] (0: 直線)
radiusV: 次の Track[].Position 構文までの縦曲線の半径 [m] (0: 直線)

Track[trackKey].Cant(value)

他軌道のカントを設定します。複数記述した Track[].Cant 構文の間は補間されます。

trackKey: 軌道名 (任意の文字列)
value: カント量 [m] (正: 右に傾ける, 負: 左に傾ける)

ストラクチャー

Structure.Load(filePath)

ストラクチャーリストファイルにもとづいてストラクチャーを読み込みます。ストラクチャーを使用する前にこの構文を記述する必要があります。

filePath: このファイルからストラクチャーリストファイルへの相対パス

Structure[structureKey].Put(trackKey, x, y, z, rx, ry, rz, tilt, span)

ストラクチャーを設置します。

structureKey: ストラクチャー名 (ストラクチャーリストファイルで定義した文字列)
trackKey: 配置先の軌道名 (0: 自軌道)
x: 軌道からの x 座標 [m]
y: 軌道からの y 座標 [m]
z: 軌道からの z 座標 [m]
rx: 軌道に対する x 軸回りの角 [deg]
ry: 軌道に対する y 軸回りの角 [deg]
rz: 軌道に対する z 軸回りの角 [deg]
tilt: 傾斜オプション (0: 常に水平, 1: 勾配に連動, 2: カントに連動, 3: 勾配とカントに連動)
span: 曲線における弦の長さ [m]

Structure[structureKey].Put0(trackKey, tilt, span)

ストラクチャーを設置します。Structure[].Put 構文の x, y, z, rx, ry, rz に 0 を設定したことと同じです。

structureKey: ストラクチャー名 (ストラクチャーリストファイルで定義した文字列)
trackKey: 配置先の軌道名 (0: 自軌道)
tilt: 傾斜オプション (0: 常に水平, 1: 勾配に連動, 2: カントに連動, 3: 勾配とカントに連動)
span: 曲線における弦の長さ [m]

Structure[structureKey].PutBetween(trackKey1, trackKey2)

ストラクチャーを 2 つの軌道の間に設置します。ストラクチャーは、軌道間の距離に応じて変形します。

trackKey1: 一方の軌道の軌道名 (0: 自軌道)
trackKey2: 他方の軌道の軌道名

連続ストラクチャー

Repeater[repeaterKey].Begin(trackKey, x, y, z, rx, ry, rz, tilt, span, interval, structureKey1, structureKey2, ... , structureKeyN)

ストラクチャーの連続配置を開始します。ストラクチャーは、軌道に沿って一定間隔に配置されます。

repeaterKey: 連続ストラクチャー名 (任意の文字列)
trackKey: 配置先の軌道名 (0: 自軌道)
x: 軌道からの x 座標 [m]
y: 軌道からの y 座標 [m]
z: 軌道からの z 座標 [m]
rx: 軌道に対する x 軸回りの角 [deg]
ry: 軌道に対する y 軸回りの角 [deg]
rz: 軌道に対する z 軸回りの角 [deg]
tilt: 傾斜オプション (0: 常に水平, 1: 勾配に連動, 2: カントに連動, 3: 勾配とカントに連動)
span: 曲線における弦の長さ [m]
interval: 配置間隔 [m]
structureKey1, ... , structureKeyN: ストラクチャー名 (ストラクチャーリストファイルで定義した文字列)

interval の整数倍の距離程 (dist) にストラクチャーが配置されます。ストラクチャーを N 個記述した場合、(dist / interval) mod N + 1 番目に記述したストラクチャーが配置されます。

図

Repeater[repeaterKey].Begin0(trackKey, tilt, span, interval, structureKey1, structureKey2, ... , structureKeyN)

ストラクチャーの連続配置を開始します。Repeater[].Begin 構文の x, y, z, rx, ry, rz に 0 を設定したことと同じです。

repeaterKey: 連続ストラクチャー名 (任意の文字列)
trackKey: 配置先の軌道名 (0: 自軌道)
tilt: 傾斜オプション (0: 常に水平, 1: 勾配に連動, 2: カントに連動, 3: 勾配とカントに連動)
span: 曲線における弦の長さ [m]
interval: 配置間隔 [m]
structureKey1, ... , structureKeyN: ストラクチャー名 (ストラクチャーリストファイルで定義した文字列)

Repeater[repeaterKey].End()

ストラクチャーの連続配置を終了します。

repeaterKey: 連続ストラクチャー名

Background.Change(structureKey)

背景を変更します。

structureKey: ストラクチャー名

停車場

Station.Load(filePath)

停車場リストファイルにもとづいて停車場を定義します。Station.Put 構文を使用する前にこの構文を記述する必要があります。

filePath: このファイルから停車場リストファイルへの相対パス

Station[stationKey].Put(door, margin1, margin2)

この列車の停止位置をここに設定します。列車停止位置目標ストラクチャーを設置するには Structure.Put を使用してください。

stationKey: 停車場名 (停車場リストファイルで定義した文字列)
door: 開くドアの方向 (-1: 左, 1: 右)
margin1: 停止位置誤差の後方許容範囲 (負の値で設定)
margin2: 停止位置誤差の前方許容範囲

閉そく

Section.BeginNew(signal0, signal1, ... , signalN)

閉そくを開始します。

signal0: 先行列車がこの閉そくに存在する場合の信号インデックス
signal1: 先行列車が 1 閉そく先に存在する場合の信号インデックス
signalN: 先行列車が n 閉そく先に存在する場合の信号インデックス

地上信号機

Signal.Load(filePath)

信号現示リストファイルにもとづいて信号現示を定義します。Signal.Put 構文を使用する前にこの構文を記述する必要があります。

filePath: このファイルから信号現示リストファイルへの相対パス

Signal[signalAspectKey].Put(section, trackKey, x, y)
Signal[signalAspectKey].Put(section, trackKey, x, y, z, rx, ry, rz, tilt, span)

地上信号機を設置します。

signalAspectKey: 信号現示名 (信号現示リストファイルで定義した文字列)
section: 関連づける閉そくの相対インデックス
trackKey: 配置先の軌道名
x: 軌道からの x 座標 [m]
y: 軌道からの y 座標 [m]
z: 軌道からの z 座標 [m]
rx: 軌道に対する x 軸回りの角 [deg]
ry: 軌道に対する y 軸回りの角 [deg]
rz: 軌道に対する z 軸回りの角 [deg]
tilt: 傾斜オプション (0: 常に水平, 1: 勾配に連動, 2: カントに連動, 3: 勾配とカントに連動)
span: 曲線における弦の長さ [m]

Signal.SpeedLimit(v0, v1, ... , vn)

信号現示の許容速度を設定します。

v0, v1, ... , vn: 走行速度 [km/h]

地上子

Beacon.Put(type, section, sendData)

地上子の送信イベントをここに定義します。地上子ストラクチャーを設置するには Structure[].Put 構文を使用してください。

type: 保安装置に送る地上子種別 (整数)
section: 関連づける閉そくの相対インデックス
sendData: 保安装置に送る値 (整数)

速度制限

SpeedLimit.Begin(v)

速度制限を開始します。速度制限標識ストラクチャーを設置するには Structure.Put 構文を使用してください。

v: 走行速度 [km/h]

SpeedLimit.End()

速度制限を終了します。速度制限解除標識ストラクチャーを設置するには Structure.Put 構文を使用してください。

先行列車

PreTrain.Pass(time)
PreTrain.Pass(second)

先行列車がここを通過する時刻を設定します。

time: 時刻を表す文字列 ('hh:mm:ss')
second: 00:00:00 からの経過時間 [sec]

光源

Light.Ambient(red, green, blue)

環境光の色 (アンビエント色) を設定します。この構文は、マップファイルに 1 回のみ記述可能です。

red: 赤成分 (0 ~ 1)
green: 緑成分 (0 ~ 1)
blue: 青成分 (0 ~ 1)

Light.Diffuse(red, green, blue)

平行光の色 (ディフューズ色) を設定します。この構文は、マップファイルに 1 回のみ記述可能です。

red: 赤成分 (0 ~ 1)
green: 緑成分 (0 ~ 1)
blue: 青成分 (0 ~ 1)

Light.Direction(pitch, yaw)

距離程 0 において、平行光が指す方向を設定します。この構文は、マップファイルに 1 回のみ記述可能です。

霧効果

Fog.Set(density, red, green, blue)

霧効果を設定します。複数記述した Fog.Set 構文の間は線形補間されます。

density: 濃度
red: 赤成分 (0 ~ 1)
green: 緑成分 (0 ~ 1)
blue: 青成分 (0 ~ 1)

風景描画距離 NEW

DrawDistance.Change(value)

風景の描画距離を設定します。[設定] ウィンドウで設定される描画距離と、ここで設定する描画距離の短い方が適用されます。

value: 距離 [m] (0: [設定] ウィンドウで設定される描画距離を適用)

運転台の明るさ

CabIlluminance.Set(value)

運転台の明るさを設定します。

value: 昼間画像と夜間画像の混合比 (0: 夜間画像 ~ 1: 昼間画像)

軌道変位

Irregularity.Change(x, y, r, lx, ly, lr)

軌道変位を設定します。

x: 左右変位 (左と右のレールの通り変位の平均に相当) の標準偏差 [m]
y: 上下変位 (左と右のレールの高低変位の平均に相当) の標準偏差 [m]
r: ロール変位 (水準変位を軌間で除した値に相当) の標準偏差 [rad]
lx: 左右変位の遮断波長 [m]
ly: 上下変位の遮断波長 [m]
lr: ロール変位の遮断波長 [m]

粘着特性

Adhesion.Change(a)
Adhesion.Change(a, b, c)

車輪-レール間の粘着特性を設定します。

a: 走行速度 0 km/h における粘着係数
b: 粘着係数の走行速度に対する変化を表す係数
c: 粘着係数の走行速度に対する変化を表す係数

粘着係数式

ここで、v: 走行速度 [km/h]

Sound.Load(filePath)

サウンドリストファイルにもとづいてサウンドを読み込みます。

filePath: このファイルからサウンドリストファイルへの相対パス

Sound[soundKey].Play()

ここを通過時にサウンドを 1 回再生します。

固定音源

Sound3D.Load(filePath)

サウンドリストファイルにもとづいてサウンドを読み込みます。

filePath: このファイルからサウンドリストファイルへの相対パス

Sound3D[soundKey].Put(x, y)

地上に固定された音源をここに設置します。サウンドは連続再生されます。

x: 軌道からの x 座標 [m]
y: 軌道からの y 座標 [m]

走行音

RollingNoise.Change(index)

走行音を変更します。

index: 車両サウンドファイルの [Run] セクションで定義したインデックス

フランジきしり音

FlangeNoise.Change(index)

フランジきしり音を変更します。

index: 車両サウンドファイルの [Flange] セクションで定義したインデックス

分岐器通過音

JointNoise.Play(index)

ここを通過時に分岐器通過音を走行速度に応じて再生します。

index: 車両サウンドファイルの [Joint] セクションで定義したインデックス

他列車

Train.Add(trainKey, filePath, trackKey, direction)

他列車ファイルにもとづいて他列車を定義します。

trainKey: 他列車名 (任意の文字列)
filePath: このファイルから他列車ファイルへの相対パス
trackKey: 走行する軌道
direction: 進行方向 (-1: 対向, 1: 並走)

Train[trainKey].Enable(time)
Train[trainKey].Enable(second)

自列車がここを通過し、かつ設定された時刻になったとき、他列車の動作を有効にします。

trainKey: 他列車名
time: 時刻を表す文字列 ('hh:mm:ss')
second: 00:00:00 からの経過時間 [sec]

Train[trainKey].Stop(decelerate, stopTime, accelerate, speed)

他列車をここに一旦停車させます。

trainKey: 他列車名
decelerate: 減速度 [km/h/s]
stopTime: 停車時間 [s]
accelerate: 加速度 [km/h/s]
speed: 加速後の走行速度 [km/h]

変数

数値や文字列を変数に記憶させることができます。変数に値を代入するには、変数、等号 ( = )、値またはの順に記述します。

$foo = 1.067;
$bar = 'Hello';

引数やキーに変数を記述すると、変数に代入された値が参照されます。

Track[$bar].Gauge($foo); # Track['Hello'].Gauge(1.067) と書いたことと同じです。
$foo2 = $foo; # $foo2 に 1.067 が代入されます。

変数に代入できるのは、数値、文字列のいずれかです。文字列はクォーテーション ( ' ) でくくります。変数名の先頭には $ を付けます。変数名に使用できる文字は、英字 (A~Z、a~z)、数字 (0~9)、アンダースコアー ( _ ) です。

以下は誤った使用の例です。

foo = 1; # 変数名の先頭に $ を付けなければなりません。
$foo.bar = 1; # 変数名に使用できる文字は英数字とアンダースコアのみです。
$foo = $bar = 1; # 一度に複数の変数に値を代入することはできません。
1 = $foo; # 右辺と左辺を逆に書くことはできません。
$bar = Hello; # 文字列はクォーテーションでくくる必要があります。
Curve.Gauge($foo = 1); # 変数への代入は単独のステートメントで行わなければなりません。
Curve.Gauge('$foo'); # 変数をクォーテーションでくくると代入値ではなく記述通りの文字列が渡されます。
$bar = 'Curve.Gauge'; $bar(1.067); # 引数キー、代入以外に変数を使うことはできません。

演算子

変数への代入、引数キーに演算子が使用できます。

$foo = 1 + 2; # $foo = 3 と等価です。
Curve.Gauge(1067 / 1000); # Curve.Gauge(1.067) と等価です。

以下の演算子が使用できます。インクリメント、デクリメント、二項代入演算子には対応していません。

演算子 意味
+ 加算または文字列結合
- 減算
* 乗算
/ 除算
% 余り

+ は、被演算子が数値の場合には加算、被演算子が文字列の場合には文字列結合を表します。被演算子が数値と文字列の組み合わせの場合、数値を文字列に変換した後、文字列結合を行います。

$bar = 'Hello' + 'World'; # $bar = 'HelloWorld' と等価です。
Track[$bar + 10].Gauge(1.067); # Track['HelloWorld10'].Gauge(1.067) と等価です。
$bar = 1 + 2 + '3' # $bar = '33' と等価です。

演算子の優先順位は以下の通りです。

優先順位 演算子
1 括弧
2 単項演算子
3 * /
4 + -

以下の式の演算結果は 15 になります。

1 - 2 * -(3 + 4)

以下は誤った使用の例です。

$foo = 2 (3 - 1); # 乗算は * で表します。
$foo = 1 / {(2 + 3) * 4}; # 小、中、大括弧の区別はありません。
$foo * 1000 = 1067; # 左辺に演算子を使うことはできません。
$bar = 'Hello' * 2; # 文字列に対して使える演算子は + のみです。

距離程

ステートメントが以下の場合、現在の距離程 [m] をその値に設定します。

距離程は 0 以上の実数である必要があります。現在の距離程は、変数 distance に代入されます (既定変数に $ は付きません)。

以下の記述はすべて距離程の設定になります (ただし、$foo に数値が代入されていること)。

1000; # 現在の距離程を 1000 に設定します。
1000 - 25; # 975 に設定します。
distance + 0.5; # distance には前の値が代入されているので 975.5 に設定します。
$foo; # $foo に代入された値に設定します。

ここで設定する距離程は、実際の路線の距離程と同じである必要はありません。値が大きいとシミュレーションにおける演算誤差も大きくなるため、できる限り値が小さくなるように設定することを推奨します。

数学関数 NEW

abs(value)
value の絶対値を返します。
atan2(y, x) 4 象限逆正接 (アークタンジェント) を返します。
ceil(value) value 以上の最小の整数を返します (value の切り上げ)。
cos(value) value の余弦 (コサイン) を返します。
exp(value) 自然対数の底 (e) の value 乗を返します。
floor(value) value 以下の最大の整数を返します (value の切り捨て)。
log(value) value の自然対数を返します。
pow(x, y) x の y 乗を返します。
rand(value)
rand()
0 以上 value 未満の乱数を返します。
引数を省略した場合、0 以上 1 未満の乱数を返します。
sin(value) value の正弦 (サイン) を返します。
sqrt(value) value の平方根を返します。

他のマップの挿入

include ディレクティブを使用して他のマップファイルの内容をその位置に挿入することができます。

include 'submap.txt';

挿入するマップファイルにもヘッダーが必要です。ただし、ヘッダーは挿入されません。

© 2014 mackoy