landboy 发表于 2024-7-22 08:58:32

蘭雅AI工具箱 center中心对齐批量替换复制 JSX 支持蒙板






中心对齐替换插件单独版:
选择物件中最上层物件替换批量替换其他物件
参数: 1 替换;0 复制


源码见 这个帖子
https://www.52cnp.com/thread-22196-1-1.html


支持蒙板,速度比其他支持蒙板中心替换的插件要更快,更稳定。

landboy 发表于 2024-7-22 19:27:41

turh123 发表于 2024-7-22 15:20
此脚本,能否不要提示弹窗口,直接就是做成替换和复制两种脚本,无需再弹窗选择是否替换或复制。 ...



下载jsx脚本,把第一行,删除。
分别改成下面2行,就可以变成一个替换, 一个复制了
replace_align_center(!0);

replace_align_center(!1);


下面这个是老外写的另一个居中替换版本,我自己写的版本比这个简单快速,如果物件很多,速度相差 5-10倍


landboy 发表于 2024-7-23 12:55:01

turh123 发表于 2024-7-23 10:51
感觉蘭雅老师的无私奉献,有蒙版的对象,使用老外的脚本,会出问题。另外老外脚本并不完美,有时候会失灵 ...




// PageItem.duplicate 复制对象, 需要一个相对对象定位
var newGroup = sourceObj.parent.groupItems.add();
var newobj = sourceObj.duplicate(newGroup, ElementPlacement.PLACEATEND);

// 把参数 newGroup 改成 activeDocument.activeLayer ,这样建立的newobj 就不会群组了
var newobj = sourceObj.duplicate(activeDocument.activeLayer, ElementPlacement.PLACEATEND);
AI jsx 脚本没有 unGroup 函数,查看GPT,回答是可以把群组里对象都移动 activeDocument.activeLayer 然后把 groupItems 删除。


本脚本,是使用一个群组对象来存放复制出来的新文件,达到自动群组的效果。
如果你不想群组,可以修改 duplicate这个函数,把参数 newGroup 改成 activeDocument.activeLayer
这样新建立的newobj 就不会群组了。
个人感觉建立一个群组方便点,也灵活点。



landboy 发表于 2024-7-24 12:04:23

772861140 发表于 2024-7-24 11:24
下载用了 非常nice,昨天一天的工作量用了这个半天就搞完了。不过不知道是不是电脑问题,连续多运行几次就 ...





这个脚本追求简单快速,所以有一定的操作技巧:

1. 需要批量复制的物件要在顶层,最好,使用图层工具,放到独立层
2. 定位用的框架,最好很简单,不要复合路径
3. 定位物件群组了也没事,可以使用白箭头选住,就可以当多个定位处理
4. 白箭头选住定位,然后改到黑箭头加血目标物件,然后执行居中替换(复制),速度就很快了
5. 如果有时插件没用,可能是物件太大或者物件在靠边上了,计算溢出

landboy 发表于 2024-7-22 09:09:21

之前发的源码,只是发我自己写的部分,蒙板支持算法是从老外的里面提取修改的,有网友直接使用没法运行。

所以现在发的这个是完整版的,直接下载就可以使用。




针对之前问没法使用的网友: 把下面这个 NO_CLIP_BOUNDS 函数补全也就可以正常使用了

function NO_CLIP_BOUNDS(a){function c(h){if(IS_CLIP(h))b.push(h.pageItems);else if("GroupItem"==h.constructor.name)try{for(var l=h.pageItems.length,k=0;k<l;k+=1)c(h.pageItems)}catch(m){}else b.push(h)}var b=[];c(a);var d=[],e=[],g=[];a=[];for(var f=0;f<b.length;f+=1)d=b.geometricBounds,e=b.geometricBounds,g=b.geometricBounds,a=b.geometricBounds;d=MIN_IN_ARRAY(d);e=MAX_IN_ARRAY(e);g=MAX_IN_ARRAY(g);a=MIN_IN_ARRAY(a);return}
function IS_CLIP(a){try{if("GroupItem"==a.constructor.name&&a.clipped)return!0}catch(c){}return!1}function MAX_IN_ARRAY(a){for(var c=a,b=0;b<a.length;b+=1)a>c&&(c=a);return c}function MIN_IN_ARRAY(a){for(var c=a,b=0;b<a.length;b+=1)a<c&&(c=a);return c};

逆风2015 发表于 2024-7-22 10:31:04

本帖最后由 逆风2015 于 2024-7-22 10:32 编辑

landboy 发表于 2024-7-22 09:09
之前发的源码,只是发我自己写的部分,蒙板支持算法是从老外的里面提取修改的,有网友直接使用没法运行。

...
看来你是个大好人,也是华印人才,华印因你更精彩!
可以研究一下,如果原先框框有角度的,替换也可以相应对应角度。

turh123 发表于 2024-7-22 15:20:58

此脚本,能否不要提示弹窗口,直接就是做成替换和复制两种脚本,无需再弹窗选择是否替换或复制。

花红柳绿 发表于 2024-7-23 08:11:31

用文本工具打开是乱码,怎么替换,用什么软件打开,要不替换两行代码,重上传

landboy 发表于 2024-7-23 08:19:13

花红柳绿 发表于 2024-7-23 08:11
用文本工具打开是乱码,怎么替换,用什么软件打开,要不替换两行代码,重上传 ...

哪里是乱码了,选择对的代码编辑器,删除第一行。



第一行就是为了显示作者信息和软件使用方法和选择功能确认的。
不会改就先不改,或者自己去学习怎么修改。

永无止境 发表于 2024-7-23 08:42:35

支持,感谢分享

turh123 发表于 2024-7-23 10:51:29

感觉蘭雅老师的无私奉献:),有蒙版的对象,使用老外的脚本,会出问题。另外老外脚本并不完美,有时候会失灵的。蘭雅老师的脚本,支持蒙版对象归中,很棒。提个小小的建议,能否替换后不要群组呢,因为如果再次需要替换对象时,群组当成一个对象来替换的。
页: [1] 2 3 4 5
查看完整版本: 蘭雅AI工具箱 center中心对齐批量替换复制 JSX 支持蒙板