FAQ の 別項目 「FF018 非定常データの pointprobe 値を Annotation 更新に反映させる」という事例を扱っていますが、こちらを例に解説します。この FVX 事例では、TransientAnnotation.fvx というスクリプトファイルを用いて、 非定常計算の各ステップから出力ファイルを生成しております。その際に 173 行目から、177 行目付近の記述を以下に示します。以下の "i" という変数は計算ステップ変数を表しています。
if i < 10 then -- 1桁ファイル番号連番の処理
fv_script("PRINT GRAPHICS JPEG ./figure/draw0"..i..".jpg")
else -- 2桁ファイル番号連番の処理(通常)
fv_script("PRINT GRAPHICS JPEG ./figure/draw"..i..".jpg")
end
ご覧のように、1桁のファイル名に対して、頭に "0" の数字(赤字で表記)を差し込んでいるのがわかると思います。こちらは、2桁までの対応ができますが、3桁以上になると、 if 文を増やす必要がでてきます。
この場合、以下のような記述でもっと、簡略表記ができます。
strPrintFigure=format("PRINT GRAPHICS JPEG ./figure/draw%3.3d.jpg", i)
fv_script(strPrintFigure)
上記では、 fv_script 文の中に入れる strPrintFigure という文字列を一括定義した上で fv_script を実行しています。 文字列定義に際して、 format 文は、 fortran や C の書式指定のような役割を行います。 "%3.3d" の部分に i で定義された計算ステップ変数が入りますので、 i=1 であれば、 draw001.jpg というファイル名、 i=20 であれば、 draw020.jpg というファイル名が作られます。
----------
《補足》 FVX 内には execute 文が用意されていますので、 Windows であれば、 DOS コマンド、 Linux/Unix であれば、 shell スクリプトが実行できます。 Linux などで、ゼロパディングを行う場合は、
seq -w 10 [Enter]
や
printf "abc=%3.3d" i [Enter]
などのコマンドも使えますので、試してみてください。
|