2013年9月19日木曜日

[Illustrator]バウンディングボックスサイズの四角形を作成する

イラストレーターで、選択中オブジェクトのバウンディングボックスと同じサイズの四角形を作成するスクリプトです。バウンディングボックスサイズのガイドラインが欲しい場面なんかで使えるんじゃないでしょうか?

■この状態で…

 


■スクリプトを使用すると…



■こんな四角形が作成される


//----[スクリプトここから]----
#target Illustrator
Application.active

   //選択中のオブジェクトを取得
   var sels = app.activeDocument.selection;

   //1個以上ある場合のみ動作
   if(sels.length > 0){

      //1個めのオブジェクトサイズを取得
      var bns = sels[0].visibleBounds;

      //2個以上あるなら全部比較して最大最小値を得る
      for(var i=sels.length-1; i>=0; --i){
         var sel = sels[i];
         var nowBns = sel.visibleBounds;

           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];
      };
    
      app.activeDocument.selection = null; //現在の選択を解除

       //四角形を作成
      newObj = activeDocument.pathItems.rectangle(bns[1], bns[0], (bns[2]-bns[0]), (bns[1]-bns[3]));

      newObj.filled = false; //作った四角形を塗りなしに設定
      newObj.stroked = false; //作った四角形を線なしに設定
      newObj.selected = true; //作った四角形を選択状態に設定
   };
//----[ここまで]----



※IllustratorJavaScriptを実行するには、テキストファイルスクリプトを記述(↑をコピペしてOK)してファイルの拡張子を「.jsx」にします(※テキストエンコーディングは「UTF-8」にします←重要この.jsxファイルをIllustratorのアプリケーションのスクリプトフォルダに入れてください。スクリプトフォルダの場所はイラレのバージョンやOSによって違います。たとえばWin版CS2なら「C:/Program Files/Adobe/Adobe Illustrator CS2/プリセット/スクリプト」です。ここにスクリプトを置いておけばメニューから呼び出せるようになります。

2 件のコメント:

daddy さんのコメント...

はじめまして!
daddyと申します。
スクリプトを使用させていただいており、とても便利です!
そこで、可能であればお願いしたいのですが、
現状マスクをかけているオブジェクトに対しこのスクリプトを実行すると、マスク内のオブジェクト全体の大きさの四角形ができると思うのですが、
これをマスクのサイズで四角形を生成するようにしていただくことは可能でしょうか?
よろしくお願い致します。

ギョニソ さんのコメント...

daddyさんコメントありがとうございました。
おっしゃるとおり、上記ではクリッピングマスクを無視して四角形が作成されてしまいます。
ちょっと変更すればマスクも考慮した内容に改善できると思いますが、時間とれなくていま私にはできません……。

とりいそぎ、上記スクリプトを改修する場合の、マスクされたグループの判断とマスクサイズの取得についてポイントを書きますね。

オブジェクトが「GroupItem」でかつ「clipped」プロパティが「true」の場合、それがクリッピングマスクされたグループオブジェクトだということがわかります。あとはそのグループ内で最初のパスアイテム(pathItems[0])のサイズを調べればマスクされたサイズがわかります。

それでちょっとスクリプトいじくってみて下さい。そんなに難しくないと思います。