今回はドキュメント内にある図形やテキスト、画像の座標をテキストファイルに書き出すスクリプトです。
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();
})();
[
サンプルをダウンロード]