リンクをクリップボードにコピー
コピー完了
Illustratorで、アートボードをアートワークのバウンディングボックスに合わせる処理を開いている全てのファイルに実行したいのですが、うまくいきませんでした。
スクリプトは
https://gist.github.com/kanemu/1136345
こちらのページのものを使って、ファイルの数だけ繰り返すコードを加えました。
#target "Illustrator"
//アートボードをアートワークのバウンディングボックスに合わせる
var docObj = app.documents;
var fitToAllObject = function(doc){
//アクティブなアートボードをとる
var board = doc.artboards[doc.artboards.getActiveArtboardIndex()];
//オブジェクトを全てとる
var sels = doc.pageItems;
//0以上なら
if(sels.length > 0){
var bns;
for(i=0 ; i < docObj.length ; i++) {
var sel = sels[i];
//ガイドか、隠されていたらスルー
if(sel.guides||sel.hidden)continue;
//レイヤーが非表示ならスルー
if(!sel.layer.visible)continue;
var nowBns = sel.visibleBounds;
if(!bns){
//bnsがなければ設定
bns = nowBns;
}else{
//あったら比較
if(bns[0]>nowBns[0])bns[0]=nowBns[0];
if(bns[1]<nowBns[1])bns[1]=nowBns[1];
if(bns[2]<nowBns[2])bns[2]=nowBns[2];
if(bns[3]>nowBns[3])bns[3]=nowBns[3];
}
};
//アートボードのサイズを設定
board.artboardRect = bns;
};
};
var doc = app.activeDocument;
fitToAllObject(doc);
環境は2023を使用しています。
分かる方にご教示いただければ幸いです。
よろしくお願いいたします。
元のスクリプトの
for(var i=sels.length-1;i>=0;i--){
のところを
for(i=0 ; i < docObj.length ; i++) {
に書き換えたんですね。
簡単に説明すると、アートボードにあるオブジェクトすべてのサイズを取得するところを、アートボードにあるオブジェクトのサイズを、開いているドキュメントの数だけ取得することに変更されています。
まず、元のスクリプトの1行1行が何をやっているのかを理解するところから学習してください。
一番下の
var doc = app.activeDocument;
fitToAllObject(doc);
を、
for(var d=0; d<documents.length; d++){
app.activeDocument = documents[d]
var doc = app.activeDocument;
fitToAllObject(doc);
};
といったところでしょうか。
リンクをクリップボードにコピー
コピー完了
元のスクリプトの
for(var i=sels.length-1;i>=0;i--){
のところを
for(i=0 ; i < docObj.length ; i++) {
に書き換えたんですね。
簡単に説明すると、アートボードにあるオブジェクトすべてのサイズを取得するところを、アートボードにあるオブジェクトのサイズを、開いているドキュメントの数だけ取得することに変更されています。
まず、元のスクリプトの1行1行が何をやっているのかを理解するところから学習してください。
リンクをクリップボードにコピー
コピー完了
ご返信ありがとうございます。
他の全てのファイルに処理を実行しているスクリプトを参考に加えたのですが、勉強不足で申し訳ありません。
もう少し学習します。
リンクをクリップボードにコピー
コピー完了
一番下の
var doc = app.activeDocument;
fitToAllObject(doc);
を、
for(var d=0; d<documents.length; d++){
app.activeDocument = documents[d]
var doc = app.activeDocument;
fitToAllObject(doc);
};
といったところでしょうか。
リンクをクリップボードにコピー
コピー完了
ご返信ありがとうございます。
教えていただいた通りに書き直すとうまくできました!本当にありがとうございます。大変助かりました!