イラストレーターをスクリプトで操作する機会があったので、備忘録としてまとめます。
言語はExtendScriptで、JavaScriptの書き方とほとんど同じですが、ECMAScript3に準拠しており、書き方が古いため注意が必要です。
スクリプト例
アートボードに四角のオブジェクトを追加
// アートボードのx軸20、y軸-30の位置に縦横100の四角のオブジェクトを追加
addRectangle(20, -30)
function addRectangle(x, y) {
// アクティブのアートボードにグループアイテムを追加
var groupItems = activeDocument.groupItems.add()
// 縦横のサイズを12の四角に設定
var rect = groupItems.pathItems.rectangle(0, 0, 100, 100)
// 座標の設定
rect.position = [x, y]
// 枠線の有無
rect.stroked = false
// 色の生成(灰色の場合)
var color = new RGBColor()
color.red = 200
color.green = 200
color.blue = 200
// 塗りつぶしの色の設定
rect.fillColor = color
}
アートボードにテキストを追加
// アートボードのx軸20、y軸-30の位置にテキスト「Hello World」を追加
addText(20, -30, 'Hello World')
// テキストの追加
function addText(x, y, text) {
// アクティブのアートボードにテキストのフレームを追加
var pointText = activeDocument.textFrames.add()
// 文字の追加
pointText.contents = text
// 座標の設定
pointText.position = [x, y]
// 文字サイズの設定
pointText.textRange.characterAttributes.size = 12
// 色の生成(赤色の場合)
var color = new RGBColor()
color.red = 255
color.green = 0
color.blue = 0
// 文字色の設定
pointText.textRange.characterAttributes.fillColor = color
}
JSON.stringifyを使えるように
下記サイトのjson2.js
ファイルをダウンロードして、スクリプトファイルと同じディレクトリに配置する。
// JSON.stringifyを使用可能にするためのインポート
#include ./json2.js
var list = [
{
name: 'taro',
age: 10
},
{
name: 'hanako',
age: 20
}
]
var json = JSON.stringify(list)
データの保存
// 「Hello World」のテキストを保存
saveFile('Hello World')
function saveFile(text) {
var file
// 保存ダイアログを出す
file = File.saveDialog('Export')
file.open('w')
file.write(text)
file.close()
}
グループアイテムの座標を取得
var groupRefs = activeDocument.activeLayer.groupItems
var groupPositionList = getGroupPositionList(groupRefs)
// 取得例)
// [
// {
// "x": 20,
// "y": -30
// },
// {
// "x": 50,
// "y": -100
// }
// ]
// 全てのグループアイテムのx軸とy軸の座標を取得
function getGroupPositionList(groupRefs) {
// 空の配列を用意
var positionList = []
for (var i = 0; i < groupRefs.length; i++) {
// 対象のグループアイテム
var targetRef = groupRefs[i]
// x軸
var x = targetRef.visibleBounds[0]
// y軸
var y = targetRef.visibleBounds[1]
var payload = {
x: x,
y: y,
}
positionList.push(payload)
}
return positionList
}
まとめ
座標の取得は、手動だと数が多いと時間がかかりますが、スクリプトだと一瞬で取得できるので便利ですね。
参考サイト
最後に
GoQSystemでは一緒に働いてくれる仲間を募集中です!
ご興味がある方は以下リンクよりご確認ください。