昨夜ななついろチャンネルさんにお邪魔したところ、踏切にて警報機が鳴り始めた後、数秒経ってから遮断機が降りるということに気づかされまして、以前「Python版踏切スクリプト」で作ったスクリプトにこのディレイを組み込んでみようと思いました。「「鉄道模型シミュレーターNX」で学ぶPythonプログラミング」に答えが載ってるかな?と思って見てみたところ、「こだわる方はチャレンジしてみてください」と書いてあっただけでした(^_^;)
LAYOUT
crossarea01 = 0
crossing41 = vrmapi.LAYOUT().GetCrossing(41)
crossing42 = vrmapi.LAYOUT().GetCrossing(42)
crossing43 = vrmapi.LAYOUT().GetCrossing(43)
crossing45 = vrmapi.LAYOUT().GetCrossing(45)
CROSSINGBAR_LEFT
CROSSINGBAR_RIGHT
if ev == 'init':
obj.SetCrossingTime(3.0)
SENSOR_IN_IN
if ev == 'init':
obj.SetSNSMode(0)
elif ev == 'after':
if param['eventUID'] == 100:
crossing43.SetCrossingStatus(2)
crossing45.SetCrossingStatus(2)
elif ev == 'catch':
global crossarea01
train = obj.GetTrain()
d = train.GetDirection()
if d == 1:
crossarea01 = crossarea01 + 1
vrmapi.LOG(crossarea01)
crossing41.IncAutoSignStatus(0)
crossing42.IncAutoSignStatus(1)
crossing41.SetCrossingStatus(2)
crossing42.SetCrossingStatus(2)
obj.SetEventAfter(3,100)
SENSOR_IN_OUT
if ev == 'init':
obj.SetSNSMode(1)
elif ev == 'after':
if param['eventUID'] == 101:
crossing43.SetCrossingStatus(1)
crossing45.SetCrossingStatus(1)
elif ev == 'catch':
global crossarea01
train = obj.GetTrain()
d = train.GetDirection()
if d == 1:
crossarea01 = crossarea01 - 1
vrmapi.LOG(crossarea01)
crossing41.DecAutoSignStatus(0)
crossing42.DecAutoSignStatus(1)
if crossarea01 == 0:
crossing41.SetCrossingStatus(1)
crossing42.SetCrossingStatus(1)
obj.SetEventAfter(3,101)
SENSOR_OUT_IN
if ev == 'init':
obj.SetSNSMode(0)
elif ev == 'after':
if param['eventUID'] == 102:
crossing43.SetCrossingStatus(2)
crossing45.SetCrossingStatus(2)
elif ev == 'catch':
global crossarea01
train = obj.GetTrain()
d = train.GetDirection()
if d == 1:
crossarea01 = crossarea01 + 1
vrmapi.LOG(crossarea01)
crossing41.IncAutoSignStatus(1)
crossing42.IncAutoSignStatus(0)
crossing41.SetCrossingStatus(2)
crossing42.SetCrossingStatus(2)
obj.SetEventAfter(3,102)
SENSOR_OUT_OUT
if ev == 'init':
obj.SetSNSMode(1)
elif ev == 'after':
if param['eventUID'] == 103:
crossing43.SetCrossingStatus(1)
crossing45.SetCrossingStatus(1)
elif ev == 'catch':
global crossarea01
train = obj.GetTrain()
d = train.GetDirection()
if d == 1:
crossarea01 = crossarea01 - 1
vrmapi.LOG(crossarea01)
crossing41.DecAutoSignStatus(1)
crossing42.DecAutoSignStatus(0)
if crossarea01 == 0:
crossing41.SetCrossingStatus(1)
crossing42.SetCrossingStatus(1)
obj.SetEventAfter(3,103)