You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:将选中对象从CMYK黑色改为Bronze色板的JS脚本修正

修复Illustrator JS脚本:将选中对象颜色改为Bronze色板

原脚本的核心问题

  • 填充判断逻辑错误:obj.fillColor > 0完全不成立,fillColor是Color类型对象,不能和数值做比较,正确方式是检查对象是否具备fillColor属性
  • 颜色赋值错误:直接用数值5赋值给fillColor无效,必须通过文档色板集合获取对应名称的色板对象,再提取其颜色值赋值

正确实现代码

// 获取当前活动文档
var doc = app.activeDocument;

// 检查是否有选中对象
if (doc.selection.length > 0) {
  // 遍历所有选中对象(支持批量处理)
  for (var i = 0; i < doc.selection.length; i++) {
    var obj = doc.selection[i];
    
    // 确认对象支持填充颜色设置
    if (obj.hasOwnProperty("fillColor")) {
      try {
        // 通过名称获取Bronze色板
        var bronzeSwatch = doc.swatches.getByName("Bronze");
        // 为对象设置填充颜色
        obj.fillColor = bronzeSwatch.color;
      } catch (err) {
        // 色板不存在时给出提示
        alert("错误:文档中未找到名为'Bronze'的色板\n" + err);
      }
    }
  }
}

关键改进点

  • 支持批量处理:遍历所有选中对象,而非仅第一个
  • 类型安全检查:通过hasOwnProperty确认对象可设置填充颜色,避免报错
  • 标准色板获取:使用doc.swatches.getByName()是Illustrator脚本中获取指定色板的正确方式
  • 异常处理:捕获色板不存在的情况,给出明确提示,避免脚本崩溃
  • 正确赋值:色板对象的color属性才是可直接赋值给fillColor的颜色值

内容的提问来源于stack exchange,提问作者Bryan Bishop Pagenkopf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 23:35:41