QQ登录

只需一步,快速开始

查看: 2052|回复: 15
收起左侧

AI JavaScripts 中心对齐替换,昨晚写的

[复制链接]
累计签到:207 天
连续签到:5 天
发表于 2024-7-4 09:15:26 | 显示全部楼层 |阅读模式
AI  JavaScripts 中心对齐替换,昨晚写的{tag}(1)


AI  JavaScripts 中心对齐替换,昨晚写的。
今早又改了一下,减少计算获取中心点的次数,感觉效率有提高

  1. // 拼版中心对齐
  2. function replace_align_center() {
  3.   var docRef = activeDocument;
  4.   // 判断选择物件2个以上
  5.   if (docRef.selection.length > 1) {
  6.     // 定义选择物件
  7.     mySelection = docRef.selection;

  8.     // 最上层物件为替换源
  9.     var sourceObj = docRef.selection[0];

  10.     // 定义数组用来保存选择物件的中心坐标 # 计算中心坐标
  11.     // x = (left + right) / 2    // y = (top + bottom) / 2
  12.     var alterObjectArray = new Array();
  13.     for (var i = 0; i < mySelection.length; i++) {
  14.       var bound = NO_CLIP_BOUNDS(mySelection[i]);
  15.       var sel_xy = new Array((bound[0] + bound[2]) / 2, (bound[1] + bound[3]) / 2);
  16.       alterObjectArray.push(sel_xy);
  17.     }
  18.     // 删除用来定位的下层物件
  19.     for (var i = 1; i < mySelection.length; i++) {
  20.       mySelection[i].remove();
  21.     }

  22.     // 获得替换源物件中心坐标
  23.     var bound = NO_CLIP_BOUNDS(sourceObj);
  24.     var src_xy = new Array((bound[0] + bound[2]) / 2, (bound[1] + bound[3]) / 2);

  25.     // PageItem.duplicate 复制对象, 需要一个相对对象定位
  26.     var newGroup = sourceObj.parent.groupItems.add();
  27.     for (var i = 1; i < alterObjectArray.length; i++) {
  28.       var newobj = sourceObj.duplicate(newGroup, ElementPlacement.PLACEATEND);
  29.       var move_xy = new Array(alterObjectArray[i][0] - src_xy[0], alterObjectArray[i][1] - src_xy[1]);
  30.       newobj.translate(move_xy[0], move_xy[1]);
  31.     }
  32.     sourceObj.remove();
  33.   }
  34. }
复制代码


昨晚旧版,要每次计算中心点
  1.    // PageItem.duplicate 复制对象, 需要一个相对对象定位
  2.     var newGroup = sourceObj.parent.groupItems.add();
  3.     for (var i = 1; i < alterObjectArray.length; i++) {
  4.       
  5.       var bound = NO_CLIP_BOUNDS(sourceObj);
  6.       var src_xy = new Array((bound[0] + bound[2]) / 2, (bound[1] + bound[3]) / 2);
  7.       var move_xy = new Array(alterObjectArray[i][0] - src_xy[0], alterObjectArray[i][1] - src_xy[1]);

  8.       sourceObj.translate(move_xy[0], move_xy[1]);  // 移动到中心对齐位置
  9.       sourceObj.duplicate(newGroup, ElementPlacement.PLACEATEND);
  10.     }
复制代码



评分

参与人数 2印币 +12 收起 理由
rankingzhu + 2 鼓励
金帛 + 10 感谢分享与探讨,华印有你更精彩!.

查看全部评分

华印网相关搜索

2 赠人玫瑰,手有余香!如单纯感谢,请送花!凡是以文字形式感谢,即被视为水帖,会扣币处理! 鲜花榜单
累计签到:207 天
连续签到:5 天
 楼主| 发表于 2024-7-4 09:42:42 | 显示全部楼层
caishikun12 发表于 2024-7-4 09:35
大神,支持多层蒙版对象对其吗,

AI  JavaScripts 中心对齐替换,昨晚写的{tag}(2)

目前测试支持蒙板的,速度也还挺不错的,比老外写的稳定
回复 支持 反对 送花

使用道具 举报

累计签到:207 天
连续签到:5 天
 楼主| 发表于 2024-7-10 11:01:55 | 显示全部楼层
本帖最后由 landboy 于 2024-7-10 11:05 编辑
数码快印 发表于 2024-7-9 14:01
不清楚哪里有问题 AI 2018版本

因为还有一个边界处理的函数,本帖子里没补上来


AI  JavaScripts 中心对齐替换,昨晚写的{tag}(3)
回复 支持 反对 送花

使用道具 举报

累计签到:207 天
连续签到:5 天
 楼主| 发表于 2024-7-22 09:16:05 | 显示全部楼层
XuanKaiser 发表于 2024-7-21 10:05
大佬,为啥你这个代码跑不动啊,我的2019点开来没反应。

之前发的源码,只是发我自己写的部分,蒙板支持算法是从老外的里面提取修改的,有网友直接使用没法运行。
所以现在发的这个是完整版的,直接下载就可以使用。

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



  1. function NO_CLIP_BOUNDS(a){function c(h){if(IS_CLIP(h))b.push(h.pageItems[0]);else if("GroupItem"==h.constructor.name)try{for(var l=h.pageItems.length,k=0;k<l;k+=1)c(h.pageItems[k])}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[f]=b[f].geometricBounds[0],e[f]=b[f].geometricBounds[1],g[f]=b[f].geometricBounds[2],a[f]=b[f].geometricBounds[3];d=MIN_IN_ARRAY(d);e=MAX_IN_ARRAY(e);g=MAX_IN_ARRAY(g);a=MIN_IN_ARRAY(a);return[d,e,g,a]}
  2. 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[0],b=0;b<a.length;b+=1)a[b]>c&&(c=a[b]);return c}function MIN_IN_ARRAY(a){for(var c=a[0],b=0;b<a.length;b+=1)a[b]<c&&(c=a[b]);return c};
复制代码
其实我之前很多回复里已经写清楚了,让你们自己去找  NO_CLIP_BOUNDS 只是你们都是太懒了
1 赠人玫瑰,手有余香!如单纯感谢,请送花!凡是以文字形式感谢,即被视为水帖,会扣币处理! 鲜花榜单
回复 支持 1 反对 0 送花

使用道具 举报

累计签到:1134 天
连续签到:2 天
发表于 2024-7-4 09:35:20 | 显示全部楼层
大神,支持多层蒙版对象对其吗,
回复 支持 反对 送花

使用道具 举报

累计签到:207 天
连续签到:5 天
 楼主| 发表于 2024-7-4 09:36:06 | 显示全部楼层

下面这个是论坛别人发的中心对齐替换,
下载试了一下,不支持蒙板物件中心对齐
还是自己写的中心对齐替换好

高效:提高效率 在illustrator中按需拼版
https://www.52cnp.com/thread-21818-1-1.html


AI  JavaScripts 中心对齐替换,昨晚写的{tag}(4)
回复 支持 反对 送花

使用道具 举报

累计签到:179 天
连续签到:6 天
发表于 2024-7-5 09:03:45 | 显示全部楼层
复制上面的代码,保存为jsx,AI为什么没作用呢?
回复 支持 反对 送花

使用道具 举报

累计签到:207 天
连续签到:5 天
 楼主| 发表于 2024-7-5 12:54:03 | 显示全部楼层
turh123 发表于 2024-7-5 09:03
复制上面的代码,保存为jsx,AI为什么没作用呢?

因为这是代码片段,核心功能。
还有个函数 你自己搜索就可以找到了
回复 支持 反对 送花

使用道具 举报

累计签到:286 天
连续签到:2 天
发表于 2024-7-5 17:29:49 | 显示全部楼层
landboy 发表于 2024-7-5 12:54
因为这是代码片段,核心功能。
还有个函数 你自己搜索就可以找到了

不会呀,大佬,你能给个直接能运行的那个吗,我这个有点笨,
回复 支持 反对 送花

使用道具 举报

累计签到:50 天
连续签到:2 天
发表于 2024-7-8 11:23:48 | 显示全部楼层
牛人,功能非常好。
回复 支持 反对 送花

使用道具 举报

累计签到:207 天
连续签到:5 天
 楼主| 发表于 2024-7-8 16:49:18 | 显示全部楼层
朱朱侠 发表于 2024-7-8 11:23
牛人,功能非常好。

谢谢夸奖,功能也是迭代了多次,然后从网上找到处理蒙板的代码,才逐渐完善的。
回复 支持 反对 送花

使用道具 举报

累计签到:794 天
连续签到:4 天
发表于 2024-7-9 14:01:37 | 显示全部楼层
不清楚哪里有问题 AI 2018版本
更多图片 小图 大图
组图打开中,请稍候......
回复 支持 反对 送花

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

关闭

注意注意注意:必看上一条 /1 下一条

华印网 - 华印社区
Share More 周一至周日:09:00 - 21:00
华印网旗下的设计印刷制作类专业技术站点
请勿发布违反国家法律法规的内容,会员观点不代表本站立场
企鹅群号:119572101

华印网汇集印前印后技术、PDF拼版、防伪包装、数码印刷、合版印刷、图文设计、平面设计、数码印刷及CTP等最新印刷技术,提供软件汉化、插件汉化、cdr插件、ai插件、ps插件、pdf插件、印刷流程、ctp输出、印刷软件、印能捷、esko、CorelDRAW、InDesign、Illustrator、CTP、CDR以及PDF软件下载的综合性印刷论坛社区!

Powered by Discuz! X3.4 © 2001-2021,Tencent Cloud.

站点地图|小黑屋|手机版|Archiver|华印 ( 粤ICP备19020152号-1 )

GMT+8, 2024-12-21 22:57 , Processed in 0.090040 second(s), 42 queries , Gzip On, Yac On.

快速回复 返回顶部 返回列表