Bve trainsim > 路線や車両をつくる > ファイル書式
BveTs Map 2.02:utf-8 | ファイルの 1 行目には、ファイルヘッダーを必ず記述します。 |
Curve.SetGauge(1.067); | セミコロン ( ; ) で終わる 1 つの命令文をステートメントと呼びます。 |
Track['Right'].X.Interpolate(3.8); | 基本のステートメントは、マップ要素と関数で構成されます。 |
0; | 数値のみのステートメントは、現在の距離程を表します。 |
123; Curve.BeginTransition(); SpeedLimit.Begin(90); | 1 行に複数のステートメントを記述することができます。 |
Track [ 'Right' ] . Cant . BeginTransition ( ) ; 234 ; | 各字句の間に空白 (スペース、タブ) を挿入することがきます。 |
Curve.Begin( 600, 0.105 ); |
各字句の間に改行を挿入することがきます。つまり、1 つのステートメントを複数の行にわたって記述することができます。 |
TRACK['RIGHT'].CANT.BEGIN(0.105); | 大文字と小文字の区別はありません。 |
345; # 円曲線終了 | # または // から改行までの文字列をコメントまたは注釈と呼び、ファイル読み込み時に無視されます。 |
ファイルの最初に "BveTs Map 2.02" を必ず記述します。
ファイル形式の後に、コロン ( : )、このファイルの文字エンコーディング、改行の順に記述します。コロンの前後に空白を挿入することはできません。文字エンコーディングの記述を省略した場合、UTF-8 と認識されます。
シフト JIS の場合、ヘッダーは以下のようになります。
BveTs Map 2.02:shift_jis
# または // から改行までの文字列は、ファイル読み込み時に無視されます。区切り記号付きコメントには対応していません。
基本のステートメントは、以下のような構成になっています。
マップ要素.関数(引数, 引数, ...)
マップ要素[キー].関数(引数, 引数, ...)
マップ要素[キー].マップ要素.関数(引数, 引数, ...)
Curve.SetGauge(value) [旧] Curve.Gauge(value)
現在の距離程以降の軌間を設定します。この値は、カントを角度に換算するために使用します。
value: 軌間 [m]
Curve.SetCenter(x) NEW
現在の距離程以降のカントの回転中心位置を設定します。
x: 回転中心の x 座標 [m] (正: 曲線の内側, 負: 曲線の外側)
Curve.SetFunction(id) NEW
現在の距離程以降の緩和曲線関数を設定します。
id: 関数番号 (0: サイン半波長逓減, 1: 直線逓減)
Curve.BeginTransition()
平面曲線の緩和曲線を現在の距離程から開始します。
Curve.Begin(radius, cant) [旧] Curve.BeginCircular(radius, cant)
Curve.Begin(radius) NEW
平面曲線の円曲線を現在の距離程から開始します。カントを設定する場合は、この手前に Curve.BeginTransition を記述する必要があります。
radius: 曲線半径 [m] (正: 右曲線, 負: 左曲線)
cant: カント [m]
Curve.End()
平面曲線を現在の距離程で終了し、直線を開始します。
Curve.Interpolate(radius, cant) NEW
Curve.Interpolate(radius) NEW
Curve.Interpolate() NEW
現在の距離程における平面曲線の半径とカントを設定します。1 つ手前の Curve.Interpolate または Curve.Change の間は補間されます。補間関数は、Curve.SetFunction で設定します。引数を省略した場合、1 つ手前の Curve.Interpolate の値が使用されます。
radius 曲線半径 [m] (正: 右曲線, 負: 左曲線, 0: 直線)
cant カント [m]
Curve.Change(radius) NEW
現在の距離程以降の平面曲線の半径を設定します。Curve.Begin(radius) と同等です。
radius 曲線半径 [m] (正: 右曲線, 負: 左曲線, 0: 直線)
Gradient.BeginTransition()
縦曲線を現在の距離程から開始します。
Gradient.Begin(gradient) [旧] Gradient.BeginConst(gradient)
縦曲線を現在の距離程で終了し、勾配を一定に保ちます。
gradient 勾配 [‰]
Gradient.End()
勾配を現在の距離程で終了し、レベル (水平) を開始します。
Gradient.Interpolate(gradient) NEW
Gradient.Interpolate() NEW
現在の距離程における勾配を設定します。2 つの Gradient.Interpolate の間の勾配は線形補間されます。引数を省略した場合、1 つ手前の Gradient.Interpolate の値が使用されます。
gradient 勾配 [‰]
Track[trackKey].X.Interpolate(x, radius) NEW
Track[trackKey].X.Interpolate(x) NEW
Track[trackKey].X.Interpolate() NEW
現在の距離程における他軌道の x 方向位置を設定します。2 つの Track[].X.Interpolate との間の x 座標は補間されます。引数が省略された場合、1 つ手前の Track[].X.Interpolate の値が使用されます。
trackKey: 軌道名 (任意の文字列)
x: 自軌道からの x 座標 [m]
radius: 現在の距離程以降の自軌道との平面曲線相対半径 [m] (0: 直線)
Track[trackKey].Y.Interpolate(y, radius) NEW
Track[trackKey].Y.Interpolate(y) NEW
Track[trackKey].Y.Interpolate() NEW
現在の距離程における他軌道の y 方向位置を設定します。2 つの Track[].Y.Interpolate との間の y 座標は補間されます。引数が省略された場合、1 つ手前の Track[].Y.Interpolate の値が使用されます。
trackKey: 軌道名 (任意の文字列)
y: 自軌道からの y 座標 [m]
radius: 現在の距離程以降の自軌道との縦曲線相対半径 [m] (0: 直線)
Track[trackKey].Position(x, y, radiusH, radiusV)
Track[trackKey].Position(x, y, radiusH)
Track[trackKey].Position(x, y)
現在の距離程における他軌道の位置を設定します。Track[].X.Interpolate と Track[].Y.Interpolate を同時に記述することと同等です。ただし、引数が省略された場合、0 が代入されます。
trackKey: 軌道名 (任意の文字列)
x: 自軌道からの x 座標 [m]
y: 自軌道からの y 座標 [m]
radiusH: 現在の距離程以降の自軌道との平面曲線相対半径 [m] (0: 直線)
radiusV: 現在の距離程以降の自軌道との縦曲線相対半径 [m] (0: 直線)
Track[trackKey].Cant.SetGauge(gauge) [旧] Track[trackKey].Gauge(gauge)
現在の距離程以降の他軌道の軌間を設定します。この値は、カントを角度に換算するために使用します。
trackKey: 軌道名 (任意の文字列)
gauge: 軌間 [m]
Track[trackKey].Cant.SetCenter(x) NEW
現在の距離程以降の他軌道のカントの回転中心位置を設定します。
trackKey: 軌道名 (任意の文字列)
x: 回転中心の x 座標 [m] (正: 曲線の内側, 負: 曲線の外側)
Track[trackKey].Cant.SetFunction(id) NEW
現在の距離程以降の他軌道のカント逓減関数を設定します。
trackKey: 軌道名 (任意の文字列)
id: 関数番号 (0: サイン半波長逓減, 1: 直線逓減)
Track[trackKey].Cant.BeginTransition() NEW
他軌道のカントの逓減を現在の距離程から開始します。
trackKey: 軌道名 (任意の文字列)
Track[trackKey].Cant.Begin(cant) NEW
他軌道のカントの逓減を現在の距離程で終了し、カントを一定に保ちます。
trackKey: 軌道名 (任意の文字列)
cant: カント [m] (正: 右に傾ける, 負: 左に傾ける)
Track[trackKey].Cant.End() NEW
他軌道のカントを現在の距離程で終了します。
trackKey: 軌道名 (任意の文字列)
Track[trackKey].Cant.Interpolate(cant) [旧] Track[trackKey].Cant(cant)
Track[trackKey].Cant.Interpolate() NEW
現在の距離程における他軌道のカントを設定します。2 つの Track[].Cant.Interpolate の間のカントは補間されます。補間関数は、Track[].Cant.SetFunction で設定します。引数を省略した場合、1 つ手前の Track[].Cant.Interpolate の値が使用されます。
trackKey: 軌道名 (任意の文字列)
cant: カント [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, flag) NEW
Structure[structureKey].PutBetween(trackKey1, trackKey2)
ストラクチャーを現在の距離程の 2 つの軌道の間に設置します。ストラクチャーは、軌道間の距離に応じて変形します。
trackKey1: 一方の軌道の軌道名 (0: 自軌道)
trackKey2: 他方の軌道の軌道名
flag: 変形方向 (0: x および y 方向に変形, 1: x 方向のみに変形)
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.Begin(signal0, signal1, ... , signalN) [旧] Section.BeginNew(signal0, signal1, ... , signalN)
新しい閉そくを現在の距離程から開始します。
signal0: 先行列車がこの閉そくに存在する場合の信号インデックス
signal1: 先行列車が 1 閉そく先に存在する場合の信号インデックス
signalN: 先行列車が n 閉そく先に存在する場合の信号インデックス
Section.SetSpeedLimit(v0, v1, ... , vn) [旧] Signal.SpeedLimit(v0, v1, ... , vn)
信号現示の許容速度を設定します。
v0, v1, ... , vn: 走行速度 [km/h] (null: 許容速度なし)
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]
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.Interpolate(density, red, green, blue) [旧] Fog.Set(density, red, green, blue)
Fog.Interpolate(density) NEW
Fog.Interpolate() NEW
現在の距離程における霧効果を設定します。2 つの Fog.Interpolate の間は線形補間されます。
density: 濃度
red: 赤成分 (0 ~ 1)
green: 緑成分 (0 ~ 1)
blue: 青成分 (0 ~ 1)
DrawDistance.Change(value)
現在の距離程以降の風景の描画距離を設定します。[設定] ウィンドウで設定される描画距離と、ここで設定する描画距離の短い方が適用されます。
value: 距離 [m] (0: [設定] ウィンドウで設定される描画距離を適用)
CabIlluminance.Interpolate(value) [旧] CabIlluminance.Set(value)
CabIlluminance.Interpolate() NEW
現在の距離程における運転台の明るさを設定します。2 つの CabIlluminance.Interpolate の間は線形補間されます。
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)
Train[trainKey].Load(filePath, trackKey, direction) NEW
他列車ファイルにもとづいて他列車を定義します。
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 に代入された値に設定します。
ここで設定する距離程は、実際の路線の距離程と同じである必要はありません。値が大きいとシミュレーションにおける演算誤差も大きくなるため、できる限り値が小さくなるように設定することを推奨します。
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';
挿入するマップファイルにもヘッダーが必要です。ただし、ヘッダーは挿入されません。
© 2016 mackoy