見出し画像

Rosso Laboratory

VRMNXレイアウト作成入門 第16回 Pythonスクリプト

VRMNXレイアウト作成入門【第六章】レイアウト作成(上級編) 第16回 Pythonスクリプト
大体のことは自動センサーで制御できるのですが、自動センサーでは全く出来ないのがキー操作による制御です。今回は「1」キー~「4」キーで編成速度変更、「5」キーでポイントの切り替えという手動運転用制御を実現します。下準備としてレイアウトファイルをコピーして別ファイルとし、下路線のホーム入線前のセンサー2つ(ポイント順次切り換えと停車~発車のセンサー)を削除してください。もう一方の上路線は自動運転のままにしておきます。

①編成速度変更
といってもこれから一緒に考えていきましょうという訳ではなく、OneDrive【公開レイアウト】にある「レイアウト入門用Python.txt」からスクリプトエディターにコピペするだけです。本当にPythonプログラミングを学びたいという方は【「鉄道模型シミュレーターNX」で学ぶPythonプログラミング入門】で学んでください。こちらは【鉄道模型シミュレーターNX入門】とは違い、使える本になっておりますので(自分も微かに関わっているので宣伝)。
対象編成を右ドラッグのポップアップメニューからスクリプトエディターを起動します。「レイアウト入門用Python.txt」から
    if ev == 'init':
        obj.SetEventKeyDown('1')
        obj.SetEventKeyDown('2')
        obj.SetEventKeyDown('3')
        obj.SetEventKeyDown('4')
をコピーし、スクリプトエディターの
    if ev == 'init':
        dummy = 1
部分を選択し、[EDIT]-[貼り付け]を実行し置き換えます。

次に「レイアウト入門用Python.txt」から
    elif ev == 'keydown':
        if param['keycode'] == '1':
             obj.SetVoltage(1.0)
        elif param['keycode'] == '2':
             obj.SetVoltage(0.5)
        elif param['keycode'] == '3':
             obj.SetVoltage(0.2)
        elif param['keycode'] == '4':
             obj.SetVoltage(0.0)
をコピーし、スクリプトエディターの
    elif ev == 'keydown':
        dummy = 1
部分を選択し、[EDIT]-[貼り付け]を実行し置き換えます。

②ポイント切り替え
編成と同様の作業を行ってください。

出来上がったらビューワー上でタグを表示しポイントがちゃんと動作するか確認します。

③解説
一応コードで何をやっているかだけは解説しておきます。

編成速度変更コード                             翻訳
    if ev == 'init':                                ←ビューワー起動時に1回だけ実行
        obj.SetEventKeyDown('1')        ←「1」を押したらKeyDownのイベント発生
        obj.SetEventKeyDown('2')        ←「2」を押したらKeyDownのイベント発生
        obj.SetEventKeyDown('3')        ←「3」を押したらKeyDownのイベント発生
        obj.SetEventKeyDown('4')        ←「4」を押したらKeyDownのイベント発生

    elif ev == 'keydown':                    ←特定のキーが押されたら実行
        if param['keycode'] == '1':        ←もし押されたキーが「1」なら
             obj.SetVoltage(1.0)               ←電圧1.0にしなさい
        elif param['keycode'] == '2':     ←もし違って押されたキーが「2」なら
             obj.SetVoltage(0.5)               ←電圧0.5にしなさい
        elif param['keycode'] == '3':     ←もし違って押されたキーが「3」なら
             obj.SetVoltage(0.2)               ←電圧0.2にしなさい
        elif param['keycode'] == '4':     ←もし違って押されたキーが「4」なら
             obj.SetVoltage(0.0)               ←電圧0.0にしなさい

ポイント切り替えコード                       翻訳
    if ev == 'init':                                 ←ビューワー起動時に1回だけ実行
        obj.SetBranch(0)                        ←分岐を0にしなさい
        obj.SetEventKeyDown('5')         ←「5」を押したらKeyDownのイベント発生

    elif ev == 'keydown':                    ←特定のキーが押されたら実行
        if param['keycode'] == '5':       ←もし押されたキーが「5」なら
          if obj.GetBranch() == 0:          ←そしてもし分岐が0なら
               obj.SetBranch(1)                ←分岐を1にしなさい
          else:                                        ←もし違うなら
               obj.SetBranch(0)                ←分岐を0にしなさい
以上で第16回を終わります。次回はモーションパスです(^^)/
<スターターキットのダウンロード先はコチラです>

第15回に戻る 目次に戻る 第17回に進む

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


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

名前:
コメント:

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

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

 

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

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

最新の画像もっと見る

最近の「VRM入門」カテゴリーもっと見る

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