论坛帮助 |
社区圈子 |
日历事件 |
2021-06-23, 07:58 | #1 | ||
|
|||
正式会员
等级: 四袋长老
|
使用说明: 先替换一个要批量替换的链接对象,并置该对象于顶层 然后选中此对象和要被批量替换的链接对象 最后执行脚本即可完成所有的替换 和其它类似批量替换的脚本区别: 1、没有界面和任何选项 2、保留被替换对象的角度和新对象的尺寸,参考点为被替换对象的中心位置 ------------ 除了分享,有两个求助: 1、完善 脚本一直在使用,发现一个小瑕疵或者说是小bug,就是替换时偶尔会卡个10-30秒的样子,是整个AI软件都卡,不知道是哪里出了问题,反正知道自己脚本写的是没啥水平 2、改进 想请大佬加上对普通对象的支持,猜测对象角度问题会是难点 以下是完整脚本 ------------------- var doc = app.activeDocument; var sel = doc.selection; var t =0;//新对象度数 var o = new Array();//新对象复制出来的数组 var d=0;//对象角度 var d1=0;//要旋转的度数 var a=0;//和新对象尺寸不符的对象数量 if (sel.length==0){alert('提示:需要选中多个对象,且替换对象在最顶层!'+' \n '+'替换后保留替换对象的尺寸和被替换对象的角度'+' \n \n '+'脚本作者:星驰周 编于:20210330')} else{ for (var i=0;i<sel.length; i++) { var x=sel[i].left, y=sel[i].top, w=sel[i].width, h=sel[i].height; matrix =sel[i].matrix;//链接图单一对象 rotation = 180/Math.PI * Math.atan2(matrix.mValueC, matrix.mValueD) dushu=(180+Number(rotation)).toFixed(1) if (dushu==360){d=0} else{d=dushu} if (i==0){t=d} //把替换对象当前的角度存入变量t if(i>0){ o[i]=sel[0].duplicate();//复制 if (d != t) { d1=d-t; if(d1<0){d1=d1+360} o[i].rotate(d1);//旋转为目标对象的度数 } if(o[i].width.toFixed(3) != w.toFixed(3) || o[i].height.toFixed(3) != h.toFixed(3)){ if(o[i].width.toFixed(3) != w.toFixed(3)){x=x+(w-o[i].width)/2} if(o[i].height.toFixed(3) != h.toFixed(3)){y=y-(h-o[i].height)/2} a=a+1; } o[i].position =[x,y];//定位粘贴 sel[i].remove();//删除原对象 } }//for循环 if (a>0){alert('共有 '+sel.length+' 个(选中项目总数)链接被替换!'+'\n'+'\n'+'有'+a+'个对象尺寸不一致,请注意核对!')} else{alert('共有 '+sel.length+' 个(选中项目总数)链接被替换!')} } |
||
右列会员因为此帖价值甚高向 hyjcpc 表示感谢: |
jialan75 (2021-06-23)
|
2021-06-25, 07:07 | 只看该作者 #4 | ||
|
|||
正式会员
等级: 四袋长老
|
引用:
木棉大神,(链接图数量不限,一般一到几十不等)能看出前3点是你对脚本改进的方法指导,但你高估我的水平了,虽然脚本出自我手,但做脚本用了很久(断断续续好多天吧,都是网上搜相关代码改的),目前确实没有改的能力 曾留意你在我之前的贴子中有过精彩的回复,觉得这个脚本对你来说没什么难度,还是挺奢望你有空了出手相助,我也能可以学习学习,等着你啊 |
||