分岐器の作り方

Last-modified: 2020-02-14 (金) 11:08:37

誰もが悩む「分岐器」

分岐器の計算はかなり面倒な部分が多く、誰もが悩む(と思う)。
ここでは、構文上での分岐器の作り方を解説する。
構造上の分岐器に沿って線路のストラクチャを配置すれば、それらしいポイントは作成可能。
線路のストラクチャは、無ければ公式のチュートリアルのものを使うとよい。
ポイントやクロッシング等も再現したい場合は
分岐器自体のストラクチャを別で作成する必要がある。(要追記)

分岐器をつくる

分岐半径の計算を、BVEに任せてしまおう。自軌道は分岐側、直線側はTrack[3]とする。
片開き12番分岐器(12mで直線側と1m離れる)で右に4mずらす場合、2000m地点から分岐するときは2048m地点で4m離れる。2000m地点に1を直線側から1m離れる距離12mで割った数値0.08333をLegacy.Turnで指定する。また、2048m地点では向きを戻すためマイナス値を指定。

2000;
	Legacy.Turn(0.08333); //Track.Turnの互換構文
	Track[3].Position(0,0);
2048;
	Legacy.Turn(-0.08333); //向きをもどす
	Track[3].Position(-4,0); //自軌道が右にずれたので左に

BVEで見てみると、1988mから2012mまでと2036mから2060mまでが、R279と表示される。
しかし、直線側が少しずれているのがわかる。そこで、次のように構文を追加する。適宜解説あり。

1988;
	Curve.BeginCircular(279,0);
	Track[3].Position(0,0,-279,0); //自軌道と逆方向の曲線半径を指定すると直線になる
2000;
//	Legacy.Turn(0.08333); //Track.Turnの互換構文
//	Track[3].Position(0,0);
2012;
	Curve.End();
	Track[3].Position(-1,0,0,0);
	//分岐点からの距離12mを直線側から1m離れる距離(分岐器番数)12mで割った値1m。
	//左側が直線なのでマイナス値になる。また分岐器番数がxの場合は 12 ÷ x となる。
	//番数の大きい分岐器では誤差が大きいので注意。
2036;
	Curve.BeginCircular(-279,-0.1); //渡り線でなければここのカントは0でなくてもよい
	//その場合直線側の軌道のカントはすべて相殺すること
	Track[3].Cant(0.1); //カント相殺
	Track[3].Position(-3,0,279,0);
2048;
//	Legacy.Turn(-0.08333); //向きをもどす
//	Track[3].Position(-4,0); //自軌道が右にずれたので左に
2060;
	Curve.End();
	Track[3].Cant(0);
	Track[3].Position(-4,0,0,0);

このようにすればうまい具合に片開き分岐器を作ることが可能。

他の種類の分岐器の作り方も募集しています。

三枝分岐をつくる

上の項の片開き12番分岐器に少しアレンジを加えるだけで三枝分岐も制作できる

1988;
	Curve.BeginCircular(279,0);
	Track[3].Position(0,0,-279,0); //自軌道と逆方向の曲線半径を指定すると直線になる
       Track[2].Position(0,0,-279/2,0);//自起動と逆方向の半分の曲線半径を指定すると自軌道とは
                                       //逆の方向に曲がる
2012;
	Curve.End();
	Track[3].Position(-1,0,0,0);
       Track[3].Position(-1,0,0,0);
	//分岐点からの距離12mを直線側から1m離れる距離(分岐器番数)12mで割った値1m。
	//左側が直線なのでマイナス値になる。また分岐器番数がxの場合は 12 ÷ x となる。
	//番数の大きい分岐器では誤差が大きいので注意。
2036;
       Curve.BeginCircular(-279);
       Track[2].Position(-6,0,-279/2,0);
	Track[3].Position(-3,0,279,0);
2060;
	Curve.End();
       Track[2].Position(-8,0,0,0);
	Track[3].Position(-4,0,0,0);

これを活用すれば複線から複々線に線路が増える様子も再現できる

Legacy.Turn構文が使えない!

どうも一定の条件を満たさないと無視されるようです。

1025;
	Legacy.Turn(-0.038);
1075;
	Legacy.Turn(0.038);

これを実行すると2つ目のLegacy.Turn構文が無視されて左に曲がりっぱなしになります。
バージョン依存なのか分からないので5.3以前の挙動を書いていただけると助かります。
5.6で正常に機能することを確認しました。