Hatena::ブログ(Diary)

名もないテクノ手 このページをアンテナに追加 RSSフィード Twitter

EPUB版『InDesign者のための正規表現入門』

InDesignのTips一覧

2011-11-15

[][][]選択したページアイテムを新規ドキュメントに複製して、アートボードをフィットさせる

D

/*
    duplicate_and_fit_for_selection
    選択したページアイテムを新規ドキュメントに複製して、アートボードをフィットさせる
    for Illustrator CS5
    (c)2011 seuzo
    
   2011-11-15   ver.0.1 とりあえず
*/

#target "Illustrator"

//複数のオブジェクト全体のvisibleBoundsを得る
function get_bounds(my_objs) {
    var my_bounds = my_objs[0].visibleBounds;
    var my_Left = 0;
    var my_Right = 1;
    var my_Top = 2;
    var my_Bottom = 3; 
    for ( var i = 1; i < my_objs.length ; i ++ ) { 
        my_bounds[my_Left] = Math.min( my_bounds[my_Left], my_objs[i].visibleBounds[my_Left]);
        my_bounds[my_Right] = Math.max( my_bounds[my_Right], my_objs[i].visibleBounds[my_Right]);
        my_bounds[my_Top] = Math.max( my_bounds[my_Top], my_objs[i].visibleBounds[my_Top]);
        my_bounds[my_Bottom] = Math.min( my_bounds[my_Bottom], my_objs[i].visibleBounds[my_Bottom]);
    }
    return my_bounds;
}

//メイン
function main(){
    var my_dup = true;//新規ドキュメントを作って複製するモード
    var my_doc = app.documents[0];//ドキュメント
    var my_abi = my_doc.artboards.getActiveArtboardIndex();//インデックス
    var my_ab = my_doc.artboards[my_abi];//アートボードオブジェクト
    var my_objs = my_doc.selection;//選択したオブジェクト。とりあえず、アートボードをまたぐ選択は考慮していない。

    if (my_objs.length > 0) {
        var my_bounds = get_bounds(my_objs);
        
        //複製モードかどうか
        if (my_dup) {
            var new_doc = app.documents.add();//新規ドキュメント
            var new_ab = new_doc.artboards[0];

            //オブジェクトの複製
            for (var i = 0; i < my_objs.length; i++) {
                var tmp_position = my_objs[i].position;
                var tmp_obj = my_objs[i].duplicate(new_doc, ElementPlacement.PLACEATEND);
                tmp_obj.position = tmp_position;
            }
            new_ab.artboardRect = my_bounds;//アートボードの大きさを合わせる
        } else {
            my_ab.artboardRect = my_bounds;
        }
    }
}
main();

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/seuzo/20111115/1321287522