グローバル変数に値を代入しても、それはメモリ上に保持されているだけなので、アプリケーションを終了したらその値は消えてしまいます。
MELスクリプトで設定したパラメータなどをアプリケーション終了後も保持しておきたいときには、ハードディスクに書き出す必要があります。
普通にfopen、fwrite、fprint、freadおよび fcloseコマンドを使用して、ファイルを操作できますが、それはMayaのHelpに載っていることなので、ここでは別のアプローチ方法を紹介しようと思います。
この方法では高度なことはできないですが、一つの方法として覚えていて損はないです。
ここで紹介しているのは、systemを利用した方法です。Windows用のスクリプトですが、systemを他のOS用に書き換えれば他のOSでも使えます。
例としてC:/maya/test.txtへtest testという文字列を出力し、それを再び読み込みます。
まずは、任意の文字列のテキストファイルへの書き込みからです。
次のスクリプトは、ファイルへ書き込みたい文字列を定義して、test.txtというファイルへ書き込みを行います。
string $output = "text test";
system("echo "+$output+"> test.txt");
たったのこれだけです。
これでtest.txtというファイルに
test test
と書き込まれました。
また、文字列をファイルに追加したい場合は
system("echo "+$output+">> test.txt");
という風にします。
次は文字列の読み込みです。
string $input = `system(type text.txt)`;
これで$inputという変数に先ほど書き込んだ
test test
という文字列が代入されます。
これを利用してツールのテキストフィールドなどに入れておくパラメータを保持しておき、Mayaの起動時に読み込むように設定すれば、毎回、パラメータを設定しなおす必要がなくなるので非常に便利です。
さっきも言いましたが、通常はfopenなどを使用します。
これはいざという時の裏技的な方法だと思っておいて下さい。
MELスクリプトで設定したパラメータなどをアプリケーション終了後も保持しておきたいときには、ハードディスクに書き出す必要があります。
普通にfopen、fwrite、fprint、freadおよび fcloseコマンドを使用して、ファイルを操作できますが、それはMayaのHelpに載っていることなので、ここでは別のアプローチ方法を紹介しようと思います。
この方法では高度なことはできないですが、一つの方法として覚えていて損はないです。
ここで紹介しているのは、systemを利用した方法です。Windows用のスクリプトですが、systemを他のOS用に書き換えれば他のOSでも使えます。
例としてC:/maya/test.txtへtest testという文字列を出力し、それを再び読み込みます。
まずは、任意の文字列のテキストファイルへの書き込みからです。
次のスクリプトは、ファイルへ書き込みたい文字列を定義して、test.txtというファイルへ書き込みを行います。
string $output = "text test";
system("echo "+$output+"> test.txt");
たったのこれだけです。
これでtest.txtというファイルに
test test
と書き込まれました。
また、文字列をファイルに追加したい場合は
system("echo "+$output+">> test.txt");
という風にします。
次は文字列の読み込みです。
string $input = `system(type text.txt)`;
これで$inputという変数に先ほど書き込んだ
test test
という文字列が代入されます。
これを利用してツールのテキストフィールドなどに入れておくパラメータを保持しておき、Mayaの起動時に読み込むように設定すれば、毎回、パラメータを設定しなおす必要がなくなるので非常に便利です。
さっきも言いましたが、通常はfopenなどを使用します。
これはいざという時の裏技的な方法だと思っておいて下さい。