スクリプトをコピーするには...
サンプルの右上に表示される
下記のアイコンを左クリックすると
スクリプトだけが別窓で開くので、
右クリックメニューの[すべて選択]→[コピー]をしてください。
![](http://userdisk.webry.biglobe.ne.jp/004/579/53/N000/000/032/133195108265013130081_cs_copy.gif)
スクリプトを貼り付けるには...
スクリプトの編集ウィンドウにあるメニューで[編集]→[張り付け]をしてください。
![](http://userdisk.webry.biglobe.ne.jp/004/579/53/N000/000/032/133195109007713228429_cs_paste.gif)
1.完成予定図
このページのスクリプトサンプルを使用した場合のビュワー動画です。
どのようなことが出来るのか、はじめに映像でご確認ください。
2.レイアウトを作成する
センサーと警報機、遮断機を図のように配置してください。
踏切への列車進入を検知させるセンサーは踏切から少し距離を置いて、
列車脱出を検知させるセンサーは踏切の近くに配置すると、
よりリアルな踏切の挙動になります。
なお、解説をわかりやすくするため、
レイアウト画面の左側を上り方面、右側を下り方面とします。
↓
![](http://userdisk.webry.biglobe.ne.jp/004/579/53/N000/000/032/133195326239213131884_cs_crossing_sign_4b_003.gif)
踏切の警報機と遮断機には、固有の名前を設定します。
左図の警報機の名称には、「踏切1-警報機A」と入力してください。
![](http://userdisk.webry.biglobe.ne.jp/004/579/53/N000/000/032/133195326917913132724_cs_crossing_sign_4b_004.gif)
↓
![](http://userdisk.webry.biglobe.ne.jp/004/579/53/N000/000/032/133195327711213230793_cs_crossing_sign_4b_005.gif)
左図の遮断機の名称には、「踏切1-遮断機A」と入力してください。
![](http://userdisk.webry.biglobe.ne.jp/004/579/53/N000/000/032/133195328449213231427_cs_crossing_sign_4b_006.gif)
↓
![](http://userdisk.webry.biglobe.ne.jp/004/579/53/N000/000/032/133195329097413230665_cs_crossing_sign_4b_007.gif)
左図の警報機の名称には、「踏切1-警報機B」と入力してください。
![](http://userdisk.webry.biglobe.ne.jp/004/579/53/N000/000/032/133195329780013230879_cs_crossing_sign_4b_008.gif)
↓
![](http://userdisk.webry.biglobe.ne.jp/004/579/53/N000/000/032/133195330447813132256_cs_crossing_sign_4b_009.gif)
左図の遮断機の名称には、「踏切1-遮断機B」と入力してください。
![](http://userdisk.webry.biglobe.ne.jp/004/579/53/N000/000/032/133195331178413230665_cs_crossing_sign_4b_010.gif)
3.スクリプトを記述する
![](http://userdisk.webry.biglobe.ne.jp/004/579/53/N000/000/032/133195326239213131884_cs_crossing_sign_4b_003.gif)
下記の踏切スクリプトをコピーして貼り付けてください。
▼ 踏切スクリプト
//変数を用意 Var SIGN Var LINE-1 Var LINE-2 Var LINE-3 Var LINE-4 //踏切を閉鎖 BeginFunc IN Var STATUS GetCrossingSign STATUS ifeq STATUS SIGN SetCrossingSign 3 else if< STATUS 3 xor SIGN 3 SetCrossingSign SIGN SetCrossingStatus 2 endif endif EndFunc //踏切を開放 BeginFunc OUT Var STATUS GetCrossingSign STATUS Var LINE-L add LINE-L LINE-1 add LINE-L LINE-3 Var LINE-R add LINE-R LINE-2 add LINE-R LINE-4 ifeq STATUS 3 ifzero LINE-L xor SIGN 3 SetCrossingSign SIGN endif ifzero LINE-R xor SIGN 3 SetCrossingSign SIGN endif endif ifeq STATUS 2 ifzero LINE-L set SIGN 0 SetCrossingSign SIGN SetCrossingStatus 1 endif endif ifeq STATUS 1 ifzero LINE-R set SIGN 0 SetCrossingSign SIGN SetCrossingStatus 1 endif endif EndFunc
![](http://userdisk.webry.biglobe.ne.jp/004/579/53/N000/000/032/133195327711213230793_cs_crossing_sign_4b_005.gif)
下記の踏切スクリプトをコピーして貼り付けてください。
▼ 踏切スクリプト
//遮断機を下降 BeginFunc IN SetCrossingStatus 2 EndFunc //遮断機を上昇 BeginFunc OUT SetCrossingStatus 1 EndFunc
![](http://userdisk.webry.biglobe.ne.jp/004/579/53/N000/000/032/133195329097413230665_cs_crossing_sign_4b_007.gif)
下記の踏切スクリプトをコピーして貼り付けてください。
▼ 踏切スクリプト
//変数を用意 Var SIGN //踏切を閉鎖 BeginFunc IN Var STATUS GetCrossingSign STATUS ifeq STATUS SIGN SetCrossingSign 3 else if< STATUS 3 xor SIGN 3 SetCrossingSign SIGN SetCrossingStatus 2 endif endif EndFunc //踏切を開放 BeginFunc OUT Var STATUS GetCrossingSign STATUS Var LINE-L add LINE-L 踏切1-警報機A.LINE-1 add LINE-L 踏切1-警報機A.LINE-3 Var LINE-R add LINE-R 踏切1-警報機A.LINE-2 add LINE-R 踏切1-警報機A.LINE-4 ifeq STATUS 3 ifzero LINE-L xor SIGN 3 SetCrossingSign SIGN endif ifzero LINE-R xor SIGN 3 SetCrossingSign SIGN endif endif ifeq STATUS 1 ifzero LINE-L set SIGN 0 SetCrossingSign SIGN SetCrossingStatus 1 endif endif ifeq STATUS 2 ifzero LINE-R set SIGN 0 SetCrossingSign SIGN SetCrossingStatus 1 endif endif EndFunc
![](http://userdisk.webry.biglobe.ne.jp/004/579/53/N000/000/032/133195330447813132256_cs_crossing_sign_4b_009.gif)
下記の踏切スクリプトをコピーして貼り付けてください。
▼ 踏切スクリプト
//遮断機を下降 BeginFunc IN SetCrossingStatus 2 EndFunc //遮断機を上昇 BeginFunc OUT SetCrossingStatus 1 EndFunc
![](http://userdisk.webry.biglobe.ne.jp/004/579/53/N000/000/032/133195339133413230637_cs_crossing_sign_4b_011.gif)
図の部分に配置したセンサーへスクリプトを記述します。
下記のセンサースクリプトをコピーして貼り付けてください。
▼ センサースクリプト
//列車の先頭を検知 SetSensorMode 0 //センサーイベント Var ctrl-crs SetEventSensor CTRL-CRS ctrl-crs //踏切の閉鎖制御 BeginFunc CTRL-CRS set 踏切1-警報機A.LINE-1 1 set 踏切1-警報機A.SIGN 1 set 踏切1-警報機B.SIGN 2 call 踏切1-警報機A IN call 踏切1-警報機B IN ifeq 踏切1-警報機A.SIGN 2 call 踏切1-遮断機A IN call 踏切1-遮断機B IN endif EndFunc
![](http://userdisk.webry.biglobe.ne.jp/004/579/53/N000/000/032/133195339800813132192_cs_crossing_sign_4b_012.gif)
図の部分に配置したセンサーへスクリプトを記述します。
下記のセンサースクリプトをコピーして貼り付けてください。
▼ センサースクリプト
//列車の先頭を検知 SetSensorMode 1 //センサーイベント Var ctrl-crs SetEventSensor CTRL-CRS ctrl-crs //踏切の開放制御 BeginFunc CTRL-CRS set 踏切1-警報機A.LINE-1 0 set 踏切1-警報機A.SIGN 2 set 踏切1-警報機B.SIGN 1 call 踏切1-警報機A OUT call 踏切1-警報機B OUT ifeq 踏切1-警報機A.SIGN 0 call 踏切1-遮断機A OUT call 踏切1-遮断機B OUT endif EndFunc
![](http://userdisk.webry.biglobe.ne.jp/004/579/53/N000/000/032/133195340493813231148_cs_crossing_sign_4b_013.gif)
図の部分に配置したセンサーへスクリプトを記述します。
下記のセンサースクリプトをコピーして貼り付けてください。
▼ センサースクリプト
//列車の先頭を検知 SetSensorMode 0 //センサーイベント Var ctrl-crs SetEventSensor CTRL-CRS ctrl-crs //踏切の閉鎖制御 BeginFunc CTRL-CRS set 踏切1-警報機A.LINE-2 1 set 踏切1-警報機A.SIGN 2 set 踏切1-警報機B.SIGN 1 call 踏切1-警報機A IN call 踏切1-警報機B IN ifeq 踏切1-警報機A.SIGN 1 call 踏切1-遮断機A IN call 踏切1-遮断機B IN endif EndFunc
![](http://userdisk.webry.biglobe.ne.jp/004/579/53/N000/000/032/133195341264313230637_cs_crossing_sign_4b_014.gif)
図の部分に配置したセンサーへスクリプトを記述します。
下記のセンサースクリプトをコピーして貼り付けてください。
▼ センサースクリプト
//列車の先頭を検知 SetSensorMode 1 //センサーイベント Var ctrl-crs SetEventSensor CTRL-CRS ctrl-crs //踏切の開放制御 BeginFunc CTRL-CRS set 踏切1-警報機A.LINE-2 0 set 踏切1-警報機A.SIGN 1 set 踏切1-警報機B.SIGN 2 call 踏切1-警報機A OUT call 踏切1-警報機B OUT ifeq 踏切1-警報機A.SIGN 0 call 踏切1-遮断機A OUT call 踏切1-遮断機B OUT endif EndFunc
![](http://userdisk.webry.biglobe.ne.jp/004/579/53/N000/000/032/133195341998713132144_cs_crossing_sign_4b_015.gif)
図の部分に配置したセンサーへスクリプトを記述します。
下記のセンサースクリプトをコピーして貼り付けてください。
▼ センサースクリプト
//列車の先頭を検知 SetSensorMode 0 //センサーイベント Var ctrl-crs SetEventSensor CTRL-CRS ctrl-crs //踏切の閉鎖制御 BeginFunc CTRL-CRS set 踏切1-警報機A.LINE-3 1 set 踏切1-警報機A.SIGN 1 set 踏切1-警報機B.SIGN 2 call 踏切1-警報機A IN call 踏切1-警報機B IN ifeq 踏切1-警報機A.SIGN 2 call 踏切1-遮断機A IN call 踏切1-遮断機B IN endif EndFunc
![](http://userdisk.webry.biglobe.ne.jp/004/579/53/N000/000/032/133195342682513132256_cs_crossing_sign_4b_016.gif)
図の部分に配置したセンサーへスクリプトを記述します。
下記のセンサースクリプトをコピーして貼り付けてください。
▼ センサースクリプト
//列車の先頭を検知 SetSensorMode 1 //センサーイベント Var ctrl-crs SetEventSensor CTRL-CRS ctrl-crs //踏切の開放制御 BeginFunc CTRL-CRS set 踏切1-警報機A.LINE-3 0 set 踏切1-警報機A.SIGN 2 set 踏切1-警報機B.SIGN 1 call 踏切1-警報機A OUT call 踏切1-警報機B OUT ifeq 踏切1-警報機A.SIGN 0 call 踏切1-遮断機A OUT call 踏切1-遮断機B OUT endif EndFunc
![](http://userdisk.webry.biglobe.ne.jp/004/579/53/N000/000/032/133195343425113230843_cs_crossing_sign_4b_017.gif)
図の部分に配置したセンサーへスクリプトを記述します。
下記のセンサースクリプトをコピーして貼り付けてください。
▼ センサースクリプト
//列車の先頭を検知 SetSensorMode 0 //センサーイベント Var ctrl-crs SetEventSensor CTRL-CRS ctrl-crs //踏切の閉鎖制御 BeginFunc CTRL-CRS set 踏切1-警報機A.LINE-4 1 set 踏切1-警報機A.SIGN 2 set 踏切1-警報機B.SIGN 1 call 踏切1-警報機A IN call 踏切1-警報機B IN ifeq 踏切1-警報機A.SIGN 1 call 踏切1-遮断機A IN call 踏切1-遮断機B IN endif EndFunc
![](http://userdisk.webry.biglobe.ne.jp/004/579/53/N000/000/032/133195344201813132256_cs_crossing_sign_4b_018.gif)
図の部分に配置したセンサーへスクリプトを記述します。
下記のセンサースクリプトをコピーして貼り付けてください。
▼ センサースクリプト
//列車の先頭を検知 SetSensorMode 1 //センサーイベント Var ctrl-crs SetEventSensor CTRL-CRS ctrl-crs //踏切の開放制御 BeginFunc CTRL-CRS set 踏切1-警報機A.LINE-4 0 set 踏切1-警報機A.SIGN 1 set 踏切1-警報機B.SIGN 2 call 踏切1-警報機A OUT call 踏切1-警報機B OUT ifeq 踏切1-警報機A.SIGN 0 call 踏切1-遮断機A OUT call 踏切1-遮断機B OUT endif EndFunc
4.ビュワーで動作確認する
![](http://userdisk.webry.biglobe.ne.jp/004/579/53/N000/000/032/133195109610513228429_cs_run.gif)
ビュワーを起動して、列車に踏切を通過させて動作を確認してください。
もし、ビュワーが起動できない場合や、
ご自身のレイアウトに合わせて改造したい場合など、
ご不明な点やご質問がありましたら、下記までお気軽にご連絡ください。