アンドゥアニメーション (Illustrator CS3編)

Illustrator CS3から新たにアンドゥ、リドゥ機能がスクリプトから制御できるようになりました。不思議な事にPhotoshopには標準でヒストリーパレットがあり、任意のヒストリーに戻せるのに対して、Illustrator CS3ではヒストリーパレットもなく、手作業またはバッチで一定回数アンドゥを繰り返して元に戻す、といった作業をしなければなりません。
また、機能が使えるようになったと言ってもヒストリー機能はないので、何回アンドゥしたのかが全く不明です。
20回前に戻したいなら

for(i=0;i <20; i++) app.undo();

のスクリプトで元に戻すことができます。
戻す時にapp.redraw()を使うと、描画過程を表示してくれます。

for(i=0;i <20; i++) { app.undo(); app.redraw(); }

app.undo()の代わりにapp.redo()にすると、やり直してくれます。
さて、このアンドゥ機能を使ってヒストリーアニメーションを作成することができます。Photoshopでは以前にやりましたが、IllustratorではCS3しかできません。また、Illustrator CS3の場合、メモリがあれば無制限に取り消しが可能になっています。
以下のスクリプトは99回までの取り消しを行ない、個別にファイルとして書き出します。これをAfterEffectsなどを使って表示すればIllustratorによるヒストリーアニメーションを作成することができます。

folderName = Folder.selectDialog("フォルダを選択してください");
if (folderName)
{
for (i=0; i<99; i++)
{
filename = folderName + "/" + i +".ai";
app.activeDocument.saveAs(new File(filename));
app.undo();
redraw();
}
}
for (i=0; i<99; i++)
{
app.redo();
}

Illustrator CS3では無制限に取り消しが可能なので任意の数まで取り消しできるようにしたい場合には以下のスクリプトを使ってください。最初に何回まで取り消し処理を行なうのかを指定します。
なお、どちらのスクリプトも実行後には最新の状態に戻すようにしてあります。

count = prompt("アンドゥ回数は?", 99);
count = eval(count);
folderName = Folder.selectDialog("フォルダを選択してください");
if (folderName)
{
for (i=0; i<count; i++)
{
filename = folderName + "/" + i +".ai";
app.activeDocument.saveAs(new File(filename));
app.undo();
redraw();
}
}
for (i=0; i<count; i++)
{
app.redo();
}

[サンプルをダウンロード]