
ReplaceItems.jsx 批量替换脚本上手指南Illustrator 里几百个对象换新从一下午到三分钟【免费下载链接】illustrator-scriptsAdobe Illustrator scripts项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts周三晚上九点四十七分交付前夜我还在 Illustrator 里跟 36 个旧版图标较劲点选、删除、粘贴、拖回原位、对齐周而复始房间里只有键盘声。朋友从聊天窗口甩来一个文件附带一句用这个别手动了。那个文件叫replaceItems.jsx来自开源脚本合集illustrator-scripts作者 Alexander LadyginMIT 协议完全免费。它的核心功能一句话就能说清批量替换 Illustrator 对象——把一个或多个对象当作模板一次性换掉你选中的几百个对象尺寸、位置、颜色一并处理甚至还能随机旋转。这篇文章不是官方文档的翻译而是我这几个月把它从好奇试用用到离不开的真实记录它怎么装、怎么配、每一步为什么这么做、哪些地方容易翻车以及这笔时间账到底怎么算。一、一个 .jsx 文件把我从复制粘贴地狱里捞了出来先花十秒说清楚这个脚本解决的是什么。Illustrator 里替换对象这件事手动做就是四步循环选旧的、删掉、粘新的、手动对齐。一次两次没问题几十次之后手指会替你记住这种酸痛。replaceItems.jsx 的界面里有一组单选按钮它把拿什么来替换这件事分成了四种情况我觉得这比脚本本身更值得佩服——它把设计师脑子里的需求真正枚举干净了模式干的事什么时候用Object in buffer剪贴板对象把剪贴板里那个对象当作模板复制 N 份去顶替所有目标从别的文档或素材库复制模板跨文档替换Top object顶层对象用当前选中里最上面那个对象做模板模板就在画布上随手改一版就全局换新All in group (successively)组内顺序替换从最上层对象所在的组里按子对象顺序逐个取模板想把 A 组里的一排小部件按顺序换成 B 组里的一排All in group (random)组内随机替换同上但从组里随机抽模板做有机图案、自然变化的效果四种模式对应四种直觉盖一个章拿一个现成的换排队领号抽签。脚本本身不炫技但它把你可能想到的每一种替换来源都兜住了。二、尺寸、位置、颜色三个最容易出错的环节它都替你处理了手动替换最崩溃的不是替换本身而是替换完发现尺寸不对、位置偏了、颜色没跟上。这块才是 replaceItems.jsx 真正的技术含量。尺寸上它默认等比放进框里。看这段核心逻辑var __size (item.height item.width ? item.width : item.height) * __ratio, precent __size * 100 / node[__fn] / 100; if (fitInSizeCheckbox.value) { node[__fn] __size; node[__fnReverse] * precent; }翻译成人话它取目标对象较短的那条边作为基准把替换对象等比缩放到这条边刚好等于目标长边按比例跟着走——就像往相框里放照片照片自动按比例适应框不会变形。如果你勾上 Copy Width Height复制宽高它就直接把目标的宽高抄过去像素级对齐适合对尺寸有严格要求的场景。位置上它做的是中心对齐。替换完它把新对象挪到原来那个对象的中心点上node.left item.left - (node.width - item.width) / 2; node.top item.top (node.height - item.height) / 2;颜色上它玩的是递归。因为 Illustrator 里对象类型杂群组里套复合路径、复合路径里再套路径脚本用递归把填充色一层层剥出来再按同构结构填回去function setFillColor (items, color) { if (color) { var i items.length; if (i) while (i--) { if (items[i].typename GroupItem) { setFillColor(items[i].pageItems, color); // 群组钻进去递归 } else if (items[i].typename CompoundPathItem) { if (items[i].pathItems.length) items[i].pathItems[0].fillColor color; } else if (items[i].typename PathItem) { items[i].fillColor color; } } } }还有一个只有踩过坑的人才懂的细节符号对象的注册点。符号在缩放、旋转时是围绕注册点转的注册点在中心的话替换完位置就会偏。脚本的getSymbolPositionByRegistrationPoint会临时把符号注册点改成左上角去量一次真实位置、替换完再改回来保证符号也贴得准。这个处理是我见过很多同类脚本没做到位的。三、第一次完整跑通把 36 个旧图标换成新图标说一千道一万不如走一遍。下面这个案例就是我开头那个周三晚上做的事你也照做一遍十分钟内能跑通。第 0 步安装只用做一次仓库地址https://gitcode.com/gh_mirrors/il/illustrator-scriptsgit clone下来后把replaceItems.jsx放进 Illustrator 的脚本目录然后重启 IllustratormacOS/Applications/Adobe Illustrator [版本]/Presets.localized/zh_CN/ScriptsWindows 64 位C:\Program Files\Adobe\Adobe Illustrator [版本] (64 Bit)\Presets\zh_CN\Scripts装好之后菜单栏文件 → 脚本 → replaceItems就能打开它。第 1 步准备模板选中新版图标CtrlC 复制到剪贴板。为什么用剪贴板模式因为模板可能来自素材库文档跨文档复制后脚本执行时会在当前文档里app.paste()粘贴一份再复制 N 份全程不用切窗口。第 2 步选中所有旧图标框选或点选 36 个旧图标。此时选中的对象就是待替换目标。第 3 步配置选项选 Object in buffer勾上 Fit to element size让新图标按旧图标比例缩放和 Copy colors from element沿用旧图标的填充色。注意 Copy Width Height 会和前面两项互斥勾一个另一个自动变灰这是脚本故意做的防呆。第 4 步先预览再确认第一次跑建议勾上 Save original element保留原对象这样替换完新旧叠在一起肉眼检查位置和比例是否满意。确认没问题后取消勾选再跑一次旧对象就会被清掉一次性交付。这个先留原稿预览、再全量替换的习惯能帮你把返工成本降到接近零。四、给英文界面对个表每个选项什么时候用脚本界面是英文的第一次用容易懵。我把所有选项翻译并注上用途你可以存着对照界面原文含义我的建议Object in buffer用剪贴板对象替换模板在外部文档时首选Top object用最上层选中对象替换模板就在画布上时用All in group (successively / random)用组内对象按顺序 / 随机替换批量换组内小部件时用Replace items in a group?替换范围变为组内子对象想整体换掉某个组的内容时勾Fit to element size等比缩放到目标大小图标、图形替换推荐Copy Width Height精确复制目标宽高对尺寸要求严苛时用Save original element保留原对象不删除预览、对比方案时勾Copy colors from element继承原对象填充色品牌色统一时勾Random element rotation随机旋转 0-360 度做图案、自然散布时勾Align symbols by registration point按注册点对齐符号替换符号对象时务必勾右侧数字输入框默认 100缩放比例百分比想统一缩小就改成 80、50 等五、用了一个月才总结出的避坑清单这些坑我都踩过写下来帮你绕开剪贴板模式的模板最后会被删掉。脚本跑完会执行nodes.remove()把粘贴进来的缓冲对象清掉。如果你还想拿同一个模板继续替换别处记得再复制一次。非剪贴板模式下选中列表里第一个对象不会被替换。看循环开头那句if (!bufferRadio.value !i) break;——它在 i 归零时提前跳出。在顶层对象模式下那个顶层对象本身就是模板留着是合理的但如果你用的是组内模式却少换了一个别怀疑自己手滑这是脚本的行为把原型单独放一层就好。复制宽高和适应尺寸只能二选一勾了前者比例输入框会变灰别误以为脚本坏了。颜色复制只取找到的第一个填充色。如果原对象是群组且内部混色结果可能不是你想要的要做纯色替换建议先把目标拆组或只选单一填充对象。符号对象不勾注册点对齐必偏。普通对象的居中算法对符号不成立替换符号类素材时记得勾 Align symbols by registration point。设置会自动持久化。脚本会把你的选择存成 JSON在我的文档下的LA_AI_Scripts/ReplaceItems__setting.json下次打开自动恢复。换电脑或换账号时配置不跟着走别奇怪。对象量大就分批。几千个对象一次全选进度条再好看 Illustrator 也会卡。建议按图层或画板分批每批控制在千级以内稳。六、一小时还是三分钟这笔账可以算用数字说话数据来自我自己那个 36 图标的真实案例以及基于同样操作节奏的推算供参考场景手动耗时脚本耗时说明36 个图标换新实测约 26 分钟约 1 分 40 秒含配置手动按每个约 40 秒估算选中、删除、粘贴、对齐、核对120 个按钮更新实测约 70 分钟约 3 分钟脚本耗时主要在前几次配置500 个对象批量替换推算约 5-6 小时10-15 分钟按同样节奏线性外推含分批执行提升 15-20 倍是个保守数字因为脚本还免掉了替换完重新核对一致性这步隐形成本——手动操作得一个个确认没漏没偏脚本则是同一套逻辑跑到底。前提是先在小批量上把选项配对配错了 500 个对象一起错返工成本照样惊人。七、它只是整个工具箱里的一把螺丝刀最后说点大局观illustrator-scripts 不是一个孤立脚本而是一整个AI 效率工具箱replaceItems.jsx 只是其中一把螺丝刀。同一个仓库里还躺着harmonizer.jsx——把一堆乱糟糟的对象一键排序整理randomus.jsx——随机填充色、随机缩放、随机旋转、随机透明度实时预览cropulka.jsx——把超出画板的内容裁剪掉做微利图库和印刷特别好用batchTextEdit.jsx——批量编辑文本内容fillinger.jsx——用其他对象去填充一个封闭图形artboardsResizeWithObjects.jsx——画板连同上面所有对象一起缩放。这些脚本的安装方式完全一样丢进 Scripts 文件夹重启即可共享的工具函数则收在libraries/AI_PS_Library.js里。整套代码 MIT 协议可以自由阅读、修改、分发——想加功能、提 bug直接在仓库提 issue 就行想改得趁手直接改源码改动一个 .jsx 文件比想象中简单得多。八、结尾那个周三晚上我在 23:12 给客户发出了预览稿比原计划提前了整整大半天。后来我把这份省下来的时间用在了真正该花的地方——把 36 个图标重新画了三版挑最好的那版交付。工具的意义不是让你干得更快而是让那些本不该由人反复做的事从此不用人来做。替换对象是这样设计里的许多重复劳动大概也是这样。【免费下载链接】illustrator-scriptsAdobe Illustrator scripts项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考