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




