クリエイター手抜きプロジェクト[333]Illustrator CS3〜6編 特定の座標範囲内の図形を選択/古籏一浩

投稿:  著者:  読了時間:6分(本文:約2,800文字)


今回は、指定された範囲内にある図形を選択するスクリプトです。自分で作成したデータではなく、相手先からもらうデータの中には、たとえば右上にある図形に対して処理を行いたいという場合があります。そんな時には、特定の座標範囲にある図形だけを選択する必要があります。

以下のスクリプトは、CS3/CS4用であらかじめ決められた範囲内にある図形を選択します。





// 特定の座標範囲内の図形を選択
var sx1 = 0; // 選択左座標
var sy1 = 100; // 選択上座標
var sx2 = 300; // 選択右座標
var sy2 = 2000; // 選択下座標
selectItemsXY(sx1, sx2, sy1, sy2);
// 指定された座標内にある図形を選択
function selectItemsXY(sx1, sx2, sy1, sy2){
var items = app.activeDocument.pageItems;
for(var i=0; i<items.length; i++){
var rect = items[i].geometricBounds;
var x1 = rect[0];
var y1 = rect[1];
var x2 = rect[2];
var y2 = rect[3];
if ((x1>=sx1)&&(x2<=sx2) && (y1>=sy1)&&(y2<=sy2)){
items[i].selected = true;
}else{
items[i].selected = false;
}
}
}

毎回入力して範囲を指定したい場合は以下のようになります。これもCS3/CS4
用です。

// 特定の座標範囲内の図形を選択
(function(){
var sx1 = prompt("選択開始X座標", 0);
if (!sx1){ return; }
var sy1 = prompt("選択開始Y座標", 10);
if (!sy1){ return; }
var sx2 = prompt("選択終了X座標", 3000);
if (!sx2){ return; }
var sy2 = prompt("選択終了Y座標", 2000);
if (!sy2){ return; }
sx1 = parseFloat(sx1); // 数値型に変換
sx2 = parseFloat(sx2);
sy1 = parseFloat(sy1);
sy2 = parseFloat(sy2);
var items = app.activeDocument.pageItems;
for(var i=0; i<items.length; i++){
var rect = items[i].geometricBounds;
var x1 = rect[0];
var y1 = rect[1];
var x2 = rect[2];
var y2 = rect[3];
if ((x1>=sx1)&&(x2<=sx2) && (y1>=sy1)&&(y2<=sy2)){
items[i].selected = true;
}else{
items[i].selected = false;
}
}
})();

上記のスクリプトはCS5以降では動作はしますが、CS3/CS4の座標系になれた人では感覚的に指定が難しいと思います。CS5以降でも、原点が左下にある座標系で指定したい場合は、上記のスクリプトを以下のように変更してください。

var x1 = rect[0];
var y1 = rect[1];
var x2 = rect[2];
var y2 = rect[3];

  ↓

var x1 = rect[0];
var y2 = -rect[1];
var x2 = rect[2];
var y1 = -rect[3];


【古籏一浩】openspc@alpha.ocn.ne.jp
< http://www.openspc2.org/ >

売れないと分かっていても、買わないといけない場合があります。使い物になるかどうかすら分からず、無理だろうという雰囲気しか漂わないデバイスでも勉強になることがあります。楽天koboは反面教師としては最適なデバイスではないかと思うのです。という事で、kobo glo(コボグロ?)もいつか手元に来るでしょう。

・楽天kobo
< http://rakuten.kobobooks.com/ >
< http://kobo.rakuten.co.jp/ereaders/koboglo/?scid=we_kbc_rotator121101_koboglo >

楽天koboとは対照的にiPad miniは好調、Nexus 7も割とよい感じで売れてそうです。という事で、Nexus 7のページを作ってみました。iPad miniは今までと同じだから作っても仕方なさそうです。

・Nexus 7(アンドロイドタブレット)使い方辞典【New!!】
< http://www.openspc2.org/reibun/Android/Nexus7/ >

・すべての人に知っておいてほしい jQuery & jQuery Mobileの基本原則
【発売中】
< http://www.amazon.co.jp/dp/4844362984 >

・HTML5ガイドブック 増補改訂版
お得なHTML5ガイドブック増補改訂版+その他のExpert本のセットもあります。
【11/14まで】
< http://www.amazon.co.jp/dp/4844332937 >
< http://direct.ips.co.jp/book/Template/Goods/go_contentimp.cfm?GM_ID=EL120067&SPM_ID=1&CM_ID=0071000&PM_No=51&PM_Class=N&HN_NO=00400 >

・JavaScript逆引きハンドブック
< http://www.amazon.co.jp/dp/4863541082 >

・10日で覚えるHTML5入門教室
< http://www.amazon.co.jp/dp/4798124184 >

・改訂5版JavaScriptポケットリファレンス
< http://www.amazon.co.jp/dp/4774148199 >

・ハイビジョン映像素材集
< http://www.openspc2.org/HDTV/ >

・クリエイター手抜きプロジェクト
< http://www.openspc2.org/projectX/ >

・Adobe Illustrator CS3 + JavaScript 自動化サンプル集
< http://www.openspc2.org/book/PDF/Adobe_Illustrator_CS3_JavaScript_Book/ >
吉田印刷所の「印刷の泉」でも購入できるようになりました。