DTPab

印刷やデザイン、アドビ製アプリやスクリプトなど、雑多な技術ブログ

アートボードから飛び出た部分を収めたい

イラレスクリプトを久しぶりに作ってみました。

f:id:uske_S:20171003101102g:plain

コードは以下の通りです

#target "illustrator"

var result = main();
if (result) alert(result);

function main(){
    if (parseInt(app.version,10)<15) return "IllustratorCS5以降対応のスクリプトです";
    if (!app.documents.length) return "ドキュメントが開かれていません";
    var myDoc = app.activeDocument;
    if (!myDoc.selection.length || myDoc.selection.length>1) return "オブジェクトを一つだけ選択してください";
    var myArb = myDoc.artboards[myDoc.artboards.getActiveArtboardIndex()];
    var myArbRec = roundAry (myArb.artboardRect, 3);
    var mySel = myDoc.selection[0];
    var mySelBou = roundAry (mySel.visibleBounds, 3);

    if (mySelBou[0] < myArbRec[0]) mySel.translate (-mySelBou[0]+myArbRec[0], 0);//左
    if (mySelBou[1] > myArbRec[1]) mySel.translate (0, -mySelBou[1]+myArbRec[1]);//上
    if (mySelBou[2] > myArbRec[2]) mySel.translate (-mySelBou[2]+myArbRec[2], 0);//右
    if (mySelBou[3] < myArbRec[3]) mySel.translate (0, -mySelBou[3]+myArbRec[3]);//下

    function roundAry (ary, round){
        for (var i=0; i<ary.length; i++){
            ary[i] = Math.round (ary[i]*(Math.pow (10, round))) / Math.pow (10, round);
            }
        return ary;
        }
    }

久しぶりにイラレのDOMいじったのでいい勉強になりました。小数点丸めたりしているのは好みです。
それと、InDesignと違ってexitメソッドがないため、関数の実行として、エラーで処理を中断する場合はreturn噛ませるとしてみました。

それと、このネタ自体はTwitterで@AJABON先生と雑談する中でできあがったもので、是非先生のスクリプトもご参照ください。

Illustrator:アートボードを「フィッ」とするやつ / 車車車く本牛勿 -Rollin' Real-

イラレスクリプトは経験値が少ないので、何か不具合ありましたらコメントにてお知らせください。
よろしくお願いします。