Answered
How should I modify this script to define colors as spot colors?
#target illustrator
// 获取当前选中的对象
var selectedObject = app.activeDocument.selection[0];
// 检查是否选择了对象
if (selectedObject == null) {
alert("请选择一个对象!");
} else {
// 获取对象的填充颜色
var fillColor = selectedObject.fillColor;
// 检查对象是否有填充色
if (fillColor.typename == "NoColor") {
alert("所选对象没有填充色!");
} else {
// 1. 选中相同填充色的对象
app.activeDocument.selection = null; // 清空当前选择
for (var i = 0; i < app.activeDocument.pageItems.length; i++) {
var pageItem = app.activeDocument.pageItems[i];
if (pageItem.fillColor.typename !== "NoColor" &&
pageItem.fillColor.cyan === fillColor.cyan &&
pageItem.fillColor.magenta === fillColor.magenta &&
pageItem.fillColor.yellow === fillColor.yellow &&
pageItem.fillColor.black === fillColor.black) {
pageItem.selected = true;
}
}
// 2. 获取 CMYK 颜色值
var c = Math.round(fillColor.cyan * 100);
var m = Math.round(fillColor.magenta * 100);
var y = Math.round(fillColor.yellow * 100);
var k = Math.round(fillColor.black * 100);
// 3. 使用 CMYK 值作为专色名称
var spotColorName = "C" + c + "M" + m + "Y" + y + "K" + k;
// 4. 创建新的专色
var newSpotColor = app.activeDocument.swatches.add();
// 先设置颜色类型为专色
newSpotColor.colorType = ColorModel.SPOT;
// 再设置颜色值
newSpotColor.color = fillColor;
newSpotColor.name = spotColorName;
// 将信息输出到控制台
$.writeln("已创建专色: " + newSpotColor.name);
}
}