VIスクリプトを使用してテンプレートから新規VIを作成する
- 更新日2025-08-27
- 6分で読める
必要: VIスクリプト
複雑なVIは、「新規VIオブジェクト」および端子:ワイヤを接続メソッドを使用してオブジェクトを一つずつプログラム的に作成することもできますが、読み書き共に時間のかかる、複雑で膨大なスクリプトコードが必要となります。多くの場合、作成しようとしているVIと機能の似たテンプレートVIを書く方が簡単です。VIスクリプトを使用してテンプレートVIのコピーを作成し、コピーされたコードの一部分を編集して、希望のスクリプトを作成できます。
使用するオブジェクト
このVIスクリプトタスクには以下のオブジェクトが必要です。
解決方法
操作を開始する前に: 以下の手順の各ステップを説明したサンプルを参照するには、labview\examples\Application Control\VI Scripting\Creating VIsディレクトリにあるCreating New VI From Template VIを開きます。
- ターゲットVIに可能な限りに似たテンプレートVIを作成します。
テンプレート設計には次のコンポーネントを使用します。
- 一つずつプログラム的に作成したくないオブジェクト
- ゼロからプログラム的に作成したくない接続
- ランタイムを指定したいオブジェクトのプレースホルダオブジェクト。プレースホルダオブジェクトを使用すると、テンプレートのプレースホルダの端子にデータを配線できるため、スクリプト対象のVIにこれらの接続をゼロからプログラム的に作成する必要がありません。
- スクリプト対象のVIで見つけて変更したいオブジェクトの表示ラベル
サンプルの詳細
サンプルでは、テンプレートは、配列入力、数値出力、プレースホルダサブVI、およびこれらのオブジェクトの接続に必要な配線から構成されています。スクリプトVIは、実行時にプレースホルダサブVIをユーザ定義の計算を実行するサブVIに置き換えることができます。
メモ プレースホルダサブVIのコネクタペーンパターンは、置換される可能性のある両方のサブVIのものと同じに意図的に設定されています。同じコネクタペーンパターンを使用すると、スクリプトVIが端子を配線せずにプレースホルダサブVIを簡単に置換できます。テンプレートVIのプレースホルダオブジェクトと置換オブジェクトのコネクタペーンが異なる場合、データが置換オブジェクトに正確に配線されない可能性があります。 - 「新規VI」関数にテンプレートVIのパスを配線して、テンプレートVIのコピーを作成します。
テンプレートVIのパスを指定するには、パス制御器、パス定数、またはテンプレートVIのリファレンスのVI:VI パスプロパティを使用できます。
サンプルの詳細
サンプルでは、VI:VIパスプロパティからテンプレートVIのパスを取得します。
-
テンプレートVI内の変更するオブジェクトのリファレンスを取得します。テンプレートVIのオブジェクトリファレンスを取得する場合は、「VIオブジェクトリファレンスを開く」関数を使用するのが最も一般的です。
サンプルの詳細
サンプルでは、スクリプトVIは、実行時にスクリプトVIのユーザが指定する操作を実行するサブVIをプレースホルダサブVIと置換する必要があります。プレースホルダサブVIには固有のラベルが設定されているため、「VIオブジェクトリファレンスを開く」関数はこのサブVIのリファレンスを取得できます。
- リファレンスされたオブジェクトを検査または変更して、希望のスクリプトを作成します。
VIスクリプトを使用してVIを編集する方法については、一般的なスクリプトタスクのリストを参照してください。
サンプルの詳細
サンプルでは、スクリプトVIは、置換メソッドを使用してプレースホルダサブVIをユーザ指定の計算タスクを実行できるサブVIで置換します。実行時の操作ラジオボタンの値に基づいて、プレースホルダサブVIを和サブVIまたは乗サブVIのどちらで置換するかをケースストラクチャが選択します。
- 使用が終わったオブジェクトリファレンスは、1つずつ「リファレンスを閉じる」関数を使用して閉じます。
サンプルの詳細
サンプルでは、スクリプトVIは、置換サブVIのリファレンスおよびターゲットVIのリファレンスを閉じます。ただし、元のプレースホルダサブVIのリファレンスは置換メソッドにより無効化されるため、スクリプトVIはこのリファレンスを閉じません。
注意とアドバイス
- 目的のリファレンスを収集したり返したりする中間のサブVIを作成する―テンプレートに大幅な変更を加えるVIスクリプトアプリケーションでは、リファレンスを収集するコードをサブVIに分割することによりコードを見やすくします。変更したいリファレンスを返す別個のサブVIを作成するには、トップレベルのスクリプトVIではなく、新規サブVIでステップ2~4を実行します。これにより、トップレベルのスクリプトVIが、新規サブVIを呼び出し、返されたリファレンスで変更を加えることができます。
- 開いたリファレンスをすべて閉じる―多くのリファレンスが開いていると、VIのパフォーマンスが遅くなります。パフォーマンスの詳細については、VIおよびオブジェクトリファレンスを閉じるを参照してください。
追加サンプル
新しいVIを一度に1つのオブジェクトずつ作成するサンプルについては、labview\examples\Application Control\VI Scripting\Creating VIsディレクトリのCreating New VI From Scratch VIを参照してください。テンプレートを使用せずにタスクを実行した場合に必要なリファレンスの数やコードの複雑度を参考にしてください。