2009年から仕事でMAYAを勉強。MAYAはデフォルトでは使い勝手が悪い。逆にスクリプトを覚えてカスタマイズするとかなり強力なツールになることがわかってきた。

物覚えが悪いので勉強したことはリマインダとしてココに書き留めるようにする。

2009年5月19日火曜日

【MEL】複数の配列を格納、読み込み

前回の記事で配列をファイルに読み書きするところはできたので次の段階。これを適用したい元のスクリプトは

変数A
配列B

の2つの保存したい要素があるので、これをちゃんと切り分けて読み書きできないといけない。
とりあえず変数Aは1個しかないのは確定なので変数Aと配列Bをただ直列に並べて

“一つ目の文字列は変数A、2つ目以降は配列”

という決まりごとを設定してしまえばいいと考える。

まず書き込み。


{
string $center = "777";
string $str[] = { "aaa", "bbb", "ccc", "ddd" };
string $fname = "C:/onogu2/test.txt";

int $fid = `fopen $fname "w"`;

//まず1個目に文字列変数$centerを格納
$val = $center+="\n";
fprint $fid $val;

//2個目以降に$strを格納
string $val;

  for( $val in $str )
  {
  $val+="\n";
  fprint $fid $val;
  }

fclose $fid;
}

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
次に書き込み。しかしうまくいかない…


{
string $str[];
string $center;
$fname = "C:/onogu2/test.txt";
$fileId=`fopen $fname "r"`;
$nextLine = `fgetline $fileId`;

//ファイルの1行目を$centerに格納
$center=$nextLine;
//試しにロケータを作ってみるが、printで中身はちゃんと表示されるのに名前のないロケータになってしまう…
print $center;
spaceLocator -name $center;

//2行目以降を配列に入れたいが1行目から配列に格納されてしまう
int $cnt = 0;
while ( size( $nextLine ) > 0 )
{
$str[ $cnt ] = $nextLine;
$nextLine = `fgetline $fileId`;
$cnt++;
}

fclose $fileId;

print $str;
  for ($val in $str)
  {
  spaceLocator -name $val;
  }

}





0 件のコメント: