クリエイター手抜きプロジェクト[381]Adobe Illustrator CS5〜CC編 アートボード単位で座標を書き出す/古籏一浩

投稿:  著者:  読了時間:7分(本文:約3,100文字)


今回はドキュメント内にある図形やテキスト、画像の座標をテキストファイルに書き出すスクリプトです。


IllustratorはCS4以降は複数のアートボードを扱うことができます。ただし、スクリプトで原点座標を設定できるようになるのはCS5からです。このため、今回のスクリプトはCS5以降が対象となっています。

Illustrator CS5以降では、ドキュメント単位かアートボード単位か、どちらかの座標を基準にして図形の座標を求めることができます。以下のスクリプトは(アクティブな)アートボード単位になっています。

// ドキュメント内にある座標を書き出す
function writeCoords(saveObj){
var pItems = activeDocument.pageItems;
for(var i=0; i<pItems.length; i++){
var rect = pItems[i].geometricBounds;
var x1 = rect[0];
var y1 = rect[3];
var x2 = rect[2];
var y2 = rect[1];
saveObj.writeln("("+x1+","+y1+")-("+x2+","+y2+")");
}
}
(function (){
var f = File.saveDialog("保存ファイル名を指定してください");
if (!f){ return; }
var flag = f.open("w");
if (!flag){ return; }
app.coordinateSystem = CoordinateSystem.ARTBOARDCOORDINATESYSTEM;
//app.coordinateSystem = CoordinateSystem.DOCUMENTCOORDINATESYSTEM;
//activeDocument.artboards.setActiveArtboardIndex(2);
writeCoords(f);
f.close();
})();

アートボード単位でなく、ドキュメント単位にするには、以下のように書き換えます。

app.coordinateSystem = CoordinateSystem.ARTBOARDCOORDINATESYSTEM;
//app.coordinateSystem = CoordinateSystem.DOCUMENTCOORDINATESYSTEM;
//activeDocument.artboards.setActiveArtboardIndex(2);



//app.coordinateSystem = CoordinateSystem.ARTBOARDCOORDINATESYSTEM;
app.coordinateSystem = CoordinateSystem.DOCUMENTCOORDINATESYSTEM;
//activeDocument.artboards.setActiveArtboardIndex(2);


複数のアートボードがある場合、それぞれのアートボード(の左上)を原点にした座標で書き出したいことがあります(実際にそういう仕事がありました)。このような場合は、以下のスクリプトを使用します。アートボードごとに座標
をテキストファイルに書き出してくれます。


// ドキュメント内にある座標をアートボード単位の座標で書き出す
function writeCoords(saveObj){
var pItems = activeDocument.pageItems;
for(var i=0; i<pItems.length; i++){
var rect = pItems[i].geometricBounds;
var x1 = rect[0];
var y1 = rect[3];
var x2 = rect[2];
var y2 = rect[1];
saveObj.writeln("("+x1+","+y1+")-("+x2+","+y2+")");
}
}
(function (){
var f = File.saveDialog("保存ファイル名を指定してください");
if (!f){ return; }
var flag = f.open("w");
if (!flag){ return; }
app.coordinateSystem = CoordinateSystem.DOCUMENTCOORDINATESYSTEM;
for(var i=0; i<activeDocument.artboards.length; i++){
var aName = activeDocument.artboards[i].name;
f.writeln("アートボード番号:"+(i+1)+" / 名称:"+aName);
activeDocument.artboards.setActiveArtboardIndex(i);
writeCoords(f);
f.writeln("-------------------------");
}
f.close();
})();


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

マシンパワーがすべてな気がするお絵かきソフト。むかしMacIIにあったPixelPaint見て凄いと思ったけど、その後でたPhotoshopも凄かった。時代が進むとやっぱりいろいろ凄いソフト(昔は妄想だけで実現できなかったとか)が出てくるもんですねぇ。

・Verve
< http://3dnchu.com/archives/verve/ >

四十肩じゃないけど、左鎖骨付近が急に痛くなって寝返りもうてず f(^^;原稿書くのもいまいちなので、データのバックアップとったりしたけど、映像データはサイズが大きいので10時間とか結構かかります。

寝て起きても治らないので、湿布貼って痛みを抑えてどうにかこうにか。ということで、今回は短めの後書き。

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

・D3.js例文辞典
< http://www.openspc2.org/reibun/D3.js/ >

・Dart例文辞典
< http://www.openspc2.org/reibun/Dart/ver1.1/ >

・Adobe CS2〜CS6,CC JavaScriptリファレンス&ライブラリ
< http://www.openspc2.org/reibun/AdobeJS/index.html >

・Adobe JavaScriptリファレンス(検索できないのはKindleのバグらしい)
< http://www.amazon.co.jp/dp/4844395955 >

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

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

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

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