DTP駆け込み寺
  1. [2523] レイヤー連続保存スクリプトやってみましたが 旧掲示板 2006/11/16 21:38

[ 返信 ]

レイヤー連続保存スクリプトやってみましたが

jsで即席です。私のところでは、一応動きました(CS2 Win)。
ただしひとつ(すくなkともひとつ、というのが正確でしょうが)解決できません。
最後のコメントアウトしてある//myNewDoc.close();を活かすと、2番目に処理されるレイヤーから、duplicateのところでエラーが起きてしまうのです。

〜〜〜...どうしても、解決できません....
新規作成したファイルを開けっ放しだと、処理は問題なく終わりますけど...。
あるいはもっと根本的なところに問題があるのでしょうか。。。。

詳しい方おられれば、勝手ながら、お教えいただけると幸いです。

docObj = app.activeDocument;
layObj = docObj.layers;
layLength = layObj.length;

//保存先のフォルダを選びます。
myFolderName = Folder.selectDialog("Select a folder to save");

//レイヤーごとの処理。
//見た目で要不要が決められるよう可視レイヤーのみ書き出すという設定にしてみました。
if(myFolderName) {

for (i=0; i<layLength; i++){
theLay = layObj[i];
if(theLay.visible) {
if (theLay.locked)theLay.locked = false;
myLayName = theLay.name;
myNewFname = myFolderName+"\\"+myLayName+".ai";
mySaveFile = new File(myNewFname);

myNewDoc = documents.add();
myPItems = theLay.pageItems;
alert(myPItems);
//各レイヤーにある項目を複製
for(j=0; j<myPItems.length; j++){
if (myPItems[j].locked) myPItems[j].locked = false;
myDupObj = myPItems[j].duplicate();
//複製したものを別ドキュメントに移動です myDupObj.moveToBeginning(myNewDoc);
}
myNewDoc.saveAs(mySaveFile);
//myNewDoc.close();
}
}
}

....どなたかご存知の方おられないでしょうか。

野良猫 2006/11/16 21:38:49
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

001

//複製したものを別ドキュメントに移動です
のコメントの後、改行いれてください。
すみません。

野良猫 2006/11/16 21:40:08
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

002

ごめんなさい、それと

alert(myPItems);

をコメントアウトしてください。

何しろ即席なので...

野良猫 2006/11/16 22:07:08
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

003

javaは解りませんが、closeする前にnillで解放してあげればいいんじゃないかと思いました。

スクリプトって凄い! 2006/11/17 13:04:46
Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−

[2523] 旧掲示板 (2006/11/16 Thu 21:38)