2015年7月29日水曜日

かれこれ15年以上LabVIEW使ってるけど数年ごとに「あれ? どうだったっけ?」と悩むのでメモしとく

内部に「Sub1.vi」をサブVIとして含む「Main1.vi」が、以下の様なディレクトリ構成で存在する。
  1. この「Sub1.vi」を、下図のように Temp 以下のサブディレクトリに移動した場合、
    • 「Main1.vi」を開く時にサブVIの再サーチがおこなわれ、
    • 自動的に「Sub1.vi」が見つかり、
    • 「Main1.vi」は未保存状態になる

  2. 逆に、Temp 以下のサブディレクトリに「Main1.vi」を移動した場合、
    • 「Main1.vi」を開く時にサブVIの再サーチがおこなわれる
    • しかし「Sub1.vi」が見つからず、ファイルオープンダイアログが開く
    • 「Main1.vi」は未保存状態になる
以上の結果から、
  • サブVIは親VI中に絶対パスで保管されているわけではない
  • サブVIが見つからない場合のサーチパスには、自身より下位ディレクトリが含まれる
ことがわかる。


以下のように、「Main1.vi」と「Sub1.vi」が異なるディレクトリにあるとする。
この Temp1 ディレクトリをリネームしてから「Main1.vi」を開いても、サブVIの再サーチはおこなわれず、未保存状態にもならない。

しかし、 Temp1 ディレクトリ内に作成したサブディレクトリへ「Main1.vi」を移動した場合には、
    • 「Main1.vi」を開く時にサブVIの再サーチがおこなわれる
    • しかし「Sub1.vi」が見つからず、ファイルオープンダイアログが開く
    • 「Main1.vi」は未保存状態になる
この結果からは、
  • サブVIは親VI中に相対パスで保管されている
ことがわかる。

つまり、サブVIというのは、下図のような「相対パスによるリファレンス呼び出しノード」の糖衣構文である、と見做すことができる。


……寝る

0 件のコメント:

コメントを投稿