見出し画像

Rosso Laboratory

センサー4個で片側遮断機踏切スクリプトver2

設定は赤文字の所を変更してください。また踏切を追加する場合にはオレンジ色のグローバル変数の名前を変更する必要があります。この部分が以前より楽になっています。

#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['listname'] = crossinglist002
        di['crossingname'] = di['listname'][0]
        di['crossing_k1'] = vrmapi.LAYOUT().GetCrossing(di['listname'][1])
        di['crossing_k2'] = vrmapi.LAYOUT().GetCrossing(di['listname'][2])
        di['crossing_s1'] = vrmapi.LAYOUT().GetCrossing(di['listname'][3])
        di['crossing_s2'] = vrmapi.LAYOUT().GetCrossing(di['listname'][4])
        di['crossing_t1'] = di['listname'][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['listname'] = crossinglist002
        di['crossingname'] = di['listname'][0]
        di['crossing_k1'] = vrmapi.LAYOUT().GetCrossing(di['listname'][1])
        di['crossing_k2'] = vrmapi.LAYOUT().GetCrossing(di['listname'][2])
        di['crossing_s1'] = vrmapi.LAYOUT().GetCrossing(di['listname'][3])
        di['crossing_s2'] = vrmapi.LAYOUT().GetCrossing(di['listname'][4])
        di['crossing_t3'] = di['listname'][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['listname'] = crossinglist002
        di['crossingname'] = di['listname'][0]
        di['crossing_k1'] = vrmapi.LAYOUT().GetCrossing(di['listname'][1])
        di['crossing_k2'] = vrmapi.LAYOUT().GetCrossing(di['listname'][2])
        di['crossing_s1'] = vrmapi.LAYOUT().GetCrossing(di['listname'][3])
        di['crossing_s2'] = vrmapi.LAYOUT().GetCrossing(di['listname'][4])
        di['crossing_t1'] = di['listname'][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['listname'] = crossinglist002
        di['crossingname'] = di['listname'][0]
        di['crossing_k1'] = vrmapi.LAYOUT().GetCrossing(di['listname'][1])
        di['crossing_k2'] = vrmapi.LAYOUT().GetCrossing(di['listname'][2])
        di['crossing_s1'] = vrmapi.LAYOUT().GetCrossing(di['listname'][3])
        di['crossing_s2'] = vrmapi.LAYOUT().GetCrossing(di['listname'][4])
        di['crossing_t3'] = di['listname'][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)
PVアクセスランキング にほんブログ村


ランキングに参加中。クリックして応援お願いします!

名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

※ブログ作成者から承認されるまでコメントは反映されません。

  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最新の画像もっと見る

最近の「Pythonスクリプト」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事