Rosso Laboratory

Rosso Laboratory

主に鉄道模型シミュレーター(VRM)などの仮想鉄道アプリを扱うブログです。またHDR写真の記事も書いています。

センサー1個でホームドアスクリプト


センサー1個でホームドアを開閉するスクリプトを作りました。それぞれで設定する項目は赤文字のところです。ホームドアにはグループ名を付けておいてください。

#OBJID=74
import vrmapi
def vrmevent_74(obj,ev,param):
    di = obj.GetDict()
    if ev == 'init':
        di['train'] = 0
        di['doorname'] = "DOOR01" #ホームドアグループ名
        di['doorside'] = 1 #0:停車車両左側 1:停車車両右側
        di['stopdistance'] = 700.0 #停車距離
        di['stoptime'] = 5.0 #停車時間
        di['startdistance'] = 600.0 #出発列車電圧設定距離
        di['startvoltage'] = 0.8 #出発列車電圧
        di['doorlist'] = list()
        vrmapi.LAYOUT().ListCrossingGroup(di['doorname'],di['doorlist'])
        for item in di['doorlist']:
            item.SetCrossingStatus(2)
    elif ev == 'broadcast':
        dummy = 1
    elif ev == 'timer':
        dummy = 1
    elif ev == 'time':
        dummy = 1
    elif ev == 'after':
        if param['eventUID'] == 100:
            di['train'].OpenDoor(di['doorside'],False)
            for item in di['doorlist']:
                item.SetCrossingStatus(1)
            obj.SetEventAfter(di['stoptime'],101)
        if param['eventUID'] == 101:
            di['train'].CloseDoor(di['doorside'],False)
            for item in di['doorlist']:
                item.SetCrossingStatus(2)
            obj.SetEventAfter(2.0,102)
        if param['eventUID'] == 102:
            di['train'].AutoSpeedCTRL(di['startdistance'],di['startvoltage'])
    elif ev == 'frame':
        dummy = 1
    elif ev == 'catch':
        if obj.GetForward() == 1:
            di['train'] = obj.GetTrain()
            speed = di['train'].GetSpeed()
            stoptime = 2.0 + 1.08 * di['stopdistance'] / speed
            di['train'].AutoSpeedCTRL(di['stopdistance'],0.0)
            obj.SetEventAfter(stoptime,100)

それでは動画でどうぞ(^^)/

鉄道模型シミュレーターNXセンサー1個でホームドアスクリプト

PVアクセスランキング にほんブログ村