こちらは片側遮断機用です。使い方は「センサー4個で両側遮断機踏切スクリプト」と同様です。
#OBJID=53
#手前進入センサー(設定用)
import vrmapi
#踏切名(共通ステータス名)
#手前側警報機ID:47
#奥側警報機ID:48
#遮断機1ID:49
#遮断機2ID:51
#降下待ち時間:3.0
#上昇待ち時間:2.0
crossinglist002 = ['踏切002' , 47 , 48 , 49 , 51 , 3.0 , 2.0]
def vrmevent_53(obj,ev,param):
di = obj.GetDict()
if ev == 'init':
obj.SetSNSMode(0)
stime = 3.0 #遮断機降下時間
global crossinglist002
di['crossingname'] = crossinglist002[0]
di['crossing_k1'] = vrmapi.LAYOUT().GetCrossing(crossinglist002[1])
di['crossing_k2'] = vrmapi.LAYOUT().GetCrossing(crossinglist002[2])
di['crossing_s1'] = vrmapi.LAYOUT().GetCrossing(crossinglist002[3])
di['crossing_s2'] = vrmapi.LAYOUT().GetCrossing(crossinglist002[4])
di['crossing_t1'] = crossinglist002[5]
di['crossing_s1'].SetCrossingTime(stime)
di['crossing_s2'].SetCrossingTime(stime)
elif ev == 'broadcast':
dummy = 1
elif ev == 'timer':
dummy = 1
elif ev == 'time':
dummy = 1
elif ev == 'after':
if param['eventUID'] == 100:
di['crossing_s1'].SetCrossingStatus(2)
di['crossing_s2'].SetCrossingStatus(2)
elif ev == 'frame':
dummy = 1
elif ev == 'catch':
if obj.GetForward() == 1:
crossarea = vrmapi.LAYOUT().GetStatusDataInt(di['crossingname'])
crossarea = crossarea + 1
#vrmapi.LOG(crossarea)
vrmapi.LAYOUT().SetStatusDataInt(di['crossingname'], crossarea)
di['crossing_k1'].IncAutoSignStatus(1)
di['crossing_k2'].IncAutoSignStatus(0)
di['crossing_k1'].SetCrossingStatus(2)
di['crossing_k2'].SetCrossingStatus(2)
obj.SetEventAfter(di['crossing_t1'],100)
#OBJID=54
#手前退出センサー
import vrmapi
def vrmevent_54(obj,ev,param):
di = obj.GetDict()
if ev == 'init':
obj.SetSNSMode(1)
global crossinglist002
di['crossingname'] = crossinglist002[0]
di['crossing_k1'] = vrmapi.LAYOUT().GetCrossing(crossinglist002[1])
di['crossing_k2'] = vrmapi.LAYOUT().GetCrossing(crossinglist002[2])
di['crossing_s1'] = vrmapi.LAYOUT().GetCrossing(crossinglist002[3])
di['crossing_s2'] = vrmapi.LAYOUT().GetCrossing(crossinglist002[4])
di['crossing_t3'] = crossinglist002[6]
elif ev == 'broadcast':
dummy = 1
elif ev == 'timer':
dummy = 1
elif ev == 'time':
dummy = 1
elif ev == 'after':
if param['eventUID'] == 100:
di['crossing_s1'].SetCrossingStatus(1)
di['crossing_s2'].SetCrossingStatus(1)
elif ev == 'frame':
dummy = 1
elif ev == 'catch':
if obj.GetForward() == 1:
crossarea = vrmapi.LAYOUT().GetStatusDataInt(di['crossingname'])
crossarea = crossarea - 1
#vrmapi.LOG(crossarea)
vrmapi.LAYOUT().SetStatusDataInt(di['crossingname'], crossarea)
di['crossing_k1'].DecAutoSignStatus(1)
di['crossing_k2'].DecAutoSignStatus(0)
if crossarea == 0:
di['crossing_k1'].SetCrossingStatus(1)
di['crossing_k2'].SetCrossingStatus(1)
obj.SetEventAfter(di['crossing_t3'],100)
#OBJID=55
#奥進入センサー
import vrmapi
def vrmevent_55(obj,ev,param):
di = obj.GetDict()
if ev == 'init':
obj.SetSNSMode(0)
global crossinglist002
di['crossingname'] = crossinglist002[0]
di['crossing_k1'] = vrmapi.LAYOUT().GetCrossing(crossinglist002[1])
di['crossing_k2'] = vrmapi.LAYOUT().GetCrossing(crossinglist002[2])
di['crossing_s1'] = vrmapi.LAYOUT().GetCrossing(crossinglist002[3])
di['crossing_s2'] = vrmapi.LAYOUT().GetCrossing(crossinglist002[4])
di['crossing_t1'] = crossinglist002[5]
elif ev == 'broadcast':
dummy = 1
elif ev == 'timer':
dummy = 1
elif ev == 'time':
dummy = 1
elif ev == 'after':
if param['eventUID'] == 100:
di['crossing_s1'].SetCrossingStatus(2)
di['crossing_s2'].SetCrossingStatus(2)
elif ev == 'frame':
dummy = 1
elif ev == 'catch':
if obj.GetForward() == 1:
crossarea = vrmapi.LAYOUT().GetStatusDataInt(di['crossingname'])
crossarea = crossarea + 1
#vrmapi.LOG(crossarea)
vrmapi.LAYOUT().SetStatusDataInt(di['crossingname'], crossarea)
di['crossing_k1'].IncAutoSignStatus(0)
di['crossing_k2'].IncAutoSignStatus(1)
di['crossing_k1'].SetCrossingStatus(2)
di['crossing_k2'].SetCrossingStatus(2)
obj.SetEventAfter(di['crossing_t1'],100)
#OBJID=56
#奥退出センサー
import vrmapi
def vrmevent_56(obj,ev,param):
di = obj.GetDict()
if ev == 'init':
obj.SetSNSMode(1)
global crossinglist002
di['crossingname'] = crossinglist002[0]
di['crossing_k1'] = vrmapi.LAYOUT().GetCrossing(crossinglist002[1])
di['crossing_k2'] = vrmapi.LAYOUT().GetCrossing(crossinglist002[2])
di['crossing_s1'] = vrmapi.LAYOUT().GetCrossing(crossinglist002[3])
di['crossing_s2'] = vrmapi.LAYOUT().GetCrossing(crossinglist002[4])
di['crossing_t3'] = crossinglist002[6]
elif ev == 'broadcast':
dummy = 1
elif ev == 'timer':
dummy = 1
elif ev == 'time':
dummy = 1
elif ev == 'after':
if param['eventUID'] == 100:
di['crossing_s1'].SetCrossingStatus(1)
di['crossing_s2'].SetCrossingStatus(1)
elif ev == 'frame':
dummy = 1
elif ev == 'catch':
if obj.GetForward() == 1:
crossarea = vrmapi.LAYOUT().GetStatusDataInt(di['crossingname'])
crossarea = crossarea - 1
#vrmapi.LOG(crossarea)
vrmapi.LAYOUT().SetStatusDataInt(di['crossingname'], crossarea)
di['crossing_k1'].DecAutoSignStatus(0)
di['crossing_k2'].DecAutoSignStatus(1)
if crossarea == 0:
di['crossing_k1'].SetCrossingStatus(1)
di['crossing_k2'].SetCrossingStatus(1)
obj.SetEventAfter(di['crossing_t3'],100)