木曜日, 8月 20, 2026

JavaScriptでAI遊び 104 
Illustratorで選択したオブジェクトのタック値を確認

Illustratorで選択したオブジェクトのユーザー指定のタック値を確認します。塗りと線に対応。

// 選択オブジェクトからCMYK合計値(TAC)が指定値以上のものだけを選択

if (app.documents.length == 0) {
alert("ドキュメントを開いてください。");
} else {

var doc = app.activeDocument;

if (doc.documentColorSpace != DocumentColorSpace.CMYK) {
alert("CMYKドキュメントのみ対応です。");
} else {

var limit = Number(prompt("CMYK合計値(%)以上を選択", "300"));

if (!isNaN(limit)) {

var sel = doc.selection;

if (sel.length == 0) {
alert("オブジェクトを選択してください。");
} else {

var keep = [];

for (var i = 0; i < sel.length; i++) {
if (checkItem(sel[i], limit)) {
keep.push(sel[i]);
}
}

doc.selection = null;

for (var i = 0; i < keep.length; i++) {
keep[i].selected = true;
}

alert(keep.length + " 個選択しました。");
}
}
}
}

function checkItem(item, limit) {

switch (item.typename) {

case "GroupItem":
for (var i = 0; i < item.pageItems.length; i++) {
if (checkItem(item.pageItems[i], limit)) return true;
}
return false;

case "CompoundPathItem":
for (var i = 0; i < item.pathItems.length; i++) {
if (checkItem(item.pathItems[i], limit)) return true;
}
return false;

case "PathItem":

if (item.filled && checkColor(item.fillColor, limit))
return true;

if (item.stroked && checkColor(item.strokeColor, limit))
return true;

return false;

default:
return false;
}
}

function checkColor(col, limit) {

if (col.typename != "CMYKColor")
return false;

var total =
col.cyan +
col.magenta +
col.yellow +
col.black;

return total >= limit;
}
チェックしたいオブジェクトを選択して実行すると・・・

CMYKの合計値を求めてくるので適宜入力して実行すれば・・・

直ぐに該当データを選出します。

こんな感じです。

※Illustratorのアップデートで不具合が出る場合があります。気がついた時点でデバッグするように心がけていますが、すぐに対応できないのでご容赦ください。