
AVS5のIACフリーソフトモジュールに登録されているanimate filenameと同じように、複数のファイルを扱うことのできるモジュールは、残念ながらAVS/Expressでも用意されていません。
しかし、AVS/Expressでは標準提供されている機能を組み合わせることにより、animate filenameモジュールと同等の機能を実現することができます。
animate filenameモジュールが持つ機能に文字列の結合があります。
AVS/Expressでは、以下のように標準機能を用いることによって文字列の結合を行うことができます。

図1 文字列の結合結果
これで string#2 の内容が、string と string#1 を足したものになります。
'=>'は参照をあらわしています。string, string#1の内容を変更すると、それを参照している string#2 の内容も変更されます。
animate filenameモジュール機能の実現のためには、数値を文字列型のデータに変換する必要があります。
AVS/Expressでは以下のように型の変換可能なオブジェクト同士を接続すると、型の変換は自動的に行われます。

図2 型変換のネットワーク
変換できない型を'=>'(参照)や'='(割り当て)で接続しようとすると、Error Dialogにより接続できない旨のメッセージが出力されます。
これらの機能を組み合わせると、数字を受け取ってそれを含む文字列を出力するネットワークを組むことができます。数字の自動生成にはLoopモジュールを利用することにします。
以下のようなネットワークを組みます。

図3 animate filename機能のネットワーク
これらを一つのマクロモジュールとしてまとめます。
モジュールライブラリStandard Objectsの中のMacrosカテゴリにあるmacroを選択し、ワークスペースに配置します。組んだネットワークを全て選択してmacroに移動させます。
macroの名前を変更します。
macroを選択してマウス左ボタンを押し、"Rename..."を選択します。現れたパネルに"Animate Filename"と入力してOKボタンを押して下さい。
このマクロにデータを入出力するためのポートを作成しておきます。
Animate Filenameマクロをダブルクリックして閉じた後、再度ダブルクリックで開きます。
中に配置してあるモジュールがきちんと収まっていない場合、ワークスペースの背景にマウスポインタを持っていき右ボタンを押します。現れたパネルからArrange Iconsを選択すればAVS/Expressが自動的にモジュールをウインドウに収まるように再配置します。
linkオブジェクトを利用して下図のように線をつなぐことにより、int型のカウンター数とそれに対応する文字列用のポートを作成します。

図4 Animate Filenameマクロモジュール
出力用ポートを作成したらマクロを閉じておきます。
次に、作成したAnimate Filenameマクロを保存しておきます。
Animate Filenameを選択している状態で、プルダウンメニューよりObject -> Save Objects... を選びファイル名を入力します。
次回からは、AVS/Expressを起動したあとマクロの読み込み先のカテゴリーを選択し、プルダウンメニューよりObject -> Read Objects... を選びマクロの読み込みを行います。
作業用のプロジェクトを作成してマクロをモジュールライブラリLibrary WorkspacesのWorkspace1カテゴリに加えた状態でプロジェクトを保存しておいてもよいでしょう。次回からはプロジェクトを指定して起動すれば、Workspace1にマクロが読み込まれていることになります。
では、実際に使ってみましょう。
図5のようなネットワークを作成して動作を確認して下さい。

図5 ネットワーク
ただし、デフォルトの設定では orthosliceモジュールのplane、Write Imageモジュールのfilenameにデータを渡すことができません。
Write Imageモジュールを例にしてデフォルトの設定を変更する方法を説明します。
以上の操作でファイル名を入力するためのポートが現れます。
同様に、orthosliceモジュールのplaneについてもポートを作成します。
以下のパラメーターについてはデフォルトから変更してください。
stringでディレクトリの指定として"/"(スラッシュ) を用いていますが、これはUNIX版AVS/Expressでの表記方法です。Windows版AVS/Expressでは "\"(バックスラッシュ)を2つ続けて表記してください。
LoopモジュールのStart Value, End Value, Incrementを指定し、Loopモジュールを動作させるとstringで指定されたパスにイメージファイルが出力されます。
AVS5ではフリーソフトを利用しなければならなかった機能が、AVS/Express では自作できるようになりました。これは、AVS/Expressが可視化アプリケーションの開発環境ツールとしての機能を持っているからです。
AVS/Express Vizでは開発機能について制限が設けられていますが、intやfloat,stringなどのブリミティブに対して論理演算、AVS/Expressビルトイン関数が使えます。
簡単な機能を持つモジュールならば、標準モジュールの組み合わせと、これらの機能を利用することにより作成することが可能です。(ビルトイン関数などの詳細は、英文Developer's Reference第2章を参照下さい)
実際にこうした機能を利用してLoopモジュールをカスタマイズし、LoopとAnimate Filenameの機能を持ったモジュール
を作成してみました。
このモジュールのVファイルをダウンロードすることが可能です。
興味のある方はお試し下さい。
anim fileモジュールはマクロ機能を用い、AVS/Express Vizの標準提供オブジェクトのみで構築したマクロモジュールです。
パラメーターFilename base、Filename suffixとマクロ内部にあるLoopモジュールから出力されるカウンタ値から連続したファイル名を生成し、出力ポートから文字列として出力します。
ZIPDownload anim_file module V file [2KB]
| Name | anim file | ||
|---|---|---|---|
| Type | data input | ||
| Input | なし | ||
| Output | filename | string | |
| count | float | ||
| Parameters | Name | Type | Default |
| Run Loop | toggle | -- | |
| Reset | oneshot | -- | |
| Cycle Loop | toggle | -- | |
| Start Value | typein | 0 | |
| End Value | typein | 100 | |
| Increment | typein | 1 | |
| Loop count | typein | 0 | |
| decimal position | slider | 0 | |
| Filename base | typein | test | |
| Filename suffix | typein | x | |
| integer decimal precision | slider | 0 | |
| Filename | typein | test0.x | |
| PATH | typein | " " | |
| Directory | oneshot | -- | |
anim fileモジュールは、連続したファイル名を生成します。
出力される文字列は以下の形式になります。
"Filename base"###."Filename suffix"
###の部分には数字が入ります。この桁数はスライダ decimal positionで指定できます。値は0から始まり、Loopのカウント値が更新されると1インクリメントされた値が出力されます。
このマクロは、中の仕組みが見えないように属性を設定しています。マクロの仕組みを調べたい方はダウンロードしたVファイルの一行目を以下のように修正してください。
修正前:NEopenable=0
修正後:NEopenable=1
| 入力 | |
|---|---|
| なし | |
| 出力 | |
| filename | 生成したファイル名を連続的に出力します。 |
| count | ループのカウント値 Loop countが変更されたら1インクリメントした数値を出力します。 |
| パラメーター | |
| Run Loop | ループ実行ボタンです。 オンの場合は、ループが開始されます。ループ終了時にCycle Loopがオンの場合には、そのままループは継続されます。ループ中にオフにすると、ループは終了します。 |
| Reset Loop | ループ初期化ボタンです。 オンの場合は、Loop countが初期化されます。 |
| Cycle Loop | ループ繰り返しボタンです。 Run Loopがオンの間、ループが継続されます。 |
| Start Value | ループの初期値です。 |
| End Value | ループの最終値です。 |
| Increment | ループの加算値です。 |
| Loop count | ループのカウント値です。 |
| decimal position | ループの最小有効桁数です。 AVS/Express Viz に用意されている Loop モジュールは小数第2位までしか入力できません。このスライダーは小数有効桁数を9桁まで指定することができます。 |
| Filename base | 基準となるファイル名です。 |
| Filename suffix | ファイル名の拡張子です |
| integer decimal precision | ファイル名の中でカウントさせる数字の桁数です。 |
| Filename | 出力ファイル名が表示されます。 |
| PATH | ファイルを出力するディレクトリを指定します。 |
| Directory | ディレクトリを指定するブラウザを表示させるためのボタンです。 |
1) ファイル読み込み例

2) ファイル書出し例

AVS Support Center, fns-avssup@cs.jp.fujitsu.com