illustrator插件-拼版功能开发-自动拼版-js脚本开发-ai插件
文章目录
- 1.算法程序
- 2.作者答疑
1.算法程序
illustrator是矢量编辑软件,画板是绘制处理的重要容器,在印刷方面的一个重要功能就是拼版,开发一个自动拼版功能,源代码如下所示:
if (app.documents.length == 0) {Mydoc = app.documents.add();
} else {Mydoc = app.activeDocument;
}function MyfistDialog() {this.windowRef = null;
}
MyfistDialog.prototype.run = function() {var MyDocSelected = app.activeDocument.selection;if (MyDocSelected.length > 0) {var AutoX = Math.round((app.activeDocument.selection[0].width * 25.4) / 72, 2).toString();AutoY = Math.round((app.activeDocument.selection[0].height * 25.4) / 72, 2).toString();AutoXQty = Math.floor((Mydoc.width - 5) / app.activeDocument.selection[0].width).toString();AutoYQty = Math.floor((Mydoc.height - 5) / app.activeDocument.selection[0].height).toString();} else {AutoX = "0";AutoY = "0";AutoXQty = "1";AutoYQty = "1";}res = "dialog { \n\t\ttext: '自动拼版工具', \n\t\tmypnl: Panel { orientation:'column', alignChildren:['right', 'top'],\n\t\t\ttext: '拼版信息:', \n\t\t\tmyX: Group { orientation: 'row', \n\t\t\t\tst: StaticText { text:'成品水平尺寸' }, \n\t\t\t\tmyXSize: EditText { characters: 5,text:" + AutoX + ", justify:'right' } \n\t\t\t\tst: StaticText { text:'mm 水平共拼' }, \n\t\t\t\tmyXQty : EditText { characters: 3,text:" + AutoXQty + ", justify:'right' } \n\t\t\t\tst: StaticText { text:'个' }, \n\t\t\t}, \n\t\t\tmyY: Group { orientation: 'row', \n\t\t\t\tst: StaticText { text:'成品垂直尺寸' }, \n\t\t\t\tmyYSize: EditText { characters: 5,text:" + AutoY + ", justify:'right' } \n\t\t\t\tst: StaticText { text:'mm 垂直共拼' }, \n\t\t\t\tmyYQty : EditText { characters: 3,text:" + AutoYQty + ", justify:'right' } \n\t\t\t\tst: StaticText { text:'个' }, \n\t\t\t}, \n\t\t}, \n\t\tmypnl2: Panel { orientation:'column', alignChildren:['right', 'top'],\n\t\t\ttext: '割线信息:(mm)', \n\t\t\tmyOther: Group { orientation: 'row', \n\t\t\tst: StaticText { text:'割线离成品' }, \n\t\t\tmyCropSpace : EditText { characters: 3,text:2, justify:'right' } \n\t\t\tst: StaticText { text:'割线长' }, \n\t\t\tmyCropLength : EditText { characters: 3,text:3, justify:'right' } \n\t\t\tst: StaticText { text:'成品间隙' }, \n\t\t\tmyBlood : EditText { characters: 3,text:0, justify:'right' } \n\t\t\t}, \n\t\t}, \n\t\tCheckboxs: Group { orientation: 'row', \n\t\t\tCheckContent: Checkbox { \n\t\t\t\torientation:'row', text:'带内容拼版 .', value:false \n\t\t\t}, \n\t\t\tCheckCutline: Checkbox { \n\t\t\t\torientation:'row', text:'自动加割线', value:true \n\t\t\t}, \n\t\t}, \n\t\tmypnl3: Group { orientation: 'row', \n\t\t\tst: StaticText { text:'注:水平与垂直尺寸需>0, 拼数需≥1,其它值需≥0' }, \n\t\t} \n\t\tbuttons: Group { orientation: 'row', \n\t\t\tcancelBtn: Button { text:'取消', properties:{name:'cancel'} } \n\t\t\tokBtn: Button { text:'确定', properties:{name:'ok'} }, \n\t\t} \n}";myDialog = new Window(res);this.windowRef = myDialog;myDialog.buttons.okBtn.onClick = function() {myXSizeV = (Number(myDialog.mypnl.myX.myXSize.text) * 72) / 25.4;myXQtyV = Math.round(Number(myDialog.mypnl.myX.myXQty.text));myYSizeV = (Number(myDialog.mypnl.myY.myYSize.text) * 72) / 25.4;myYQtyV = Math.round(Number(myDialog.mypnl.myY.myYQty.text));myCropSpaceV = (Number(myDialog.mypnl2.myOther.myCropSpace.text) * 72) / 25.4;myCropLengthV = (Number(myDialog.mypnl2.myOther.myCropLength.text) * 72) / 25.4;myBloodV = (Number(myDialog.mypnl2.myOther.myBlood.text) * 72) / 25.4;StartpositionX = 0;StartpositionY = 0;if (app.activeDocument.selection.length > 0) {StartpositionX = app.activeDocument.selection[0].position[0];StartpositionY = (app.activeDocument.selection[0].position[1] - ((myYSizeV + myBloodV) * myYQtyV)) + myBloodV;}var isInputOk = false;if (myXSizeV > 0 && myXQtyV >= 1 && myYSizeV > 0 && myYQtyV >= 1 && myCropSpaceV >= 0 && myCropLengthV >= 0 && myBloodV >= 0) {isInputOk = true;}if ((myXQtyV * myYQtyV) > 5000) {isInputOk = false;}if (isInputOk == true) {myDialog.close();if (myDialog.Checkboxs.CheckContent.value) {AutoCopy(myXSizeV, myXQtyV, myYSizeV, myYQtyV, myBloodV, StartpositionX, StartpositionY);}if (myDialog.Checkboxs.CheckCutline.value) {AddCutline(myXSizeV, myXQtyV, myYSizeV, myYQtyV, myCropSpaceV, myCropLengthV, myBloodV, StartpositionX, StartpositionY);}}};myDialog.buttons.cancelBtn.onClick = function() {myDialog.close();};myDialog.show();return true;
};
if (typeof MyfistDialog_unitTest == "undefined") {new MyfistDialog().run();
}function AutoCopy(myXSizeV, myXQtyV, myYSizeV, myYQtyV, myBloodV, StartpositionX, StartpositionY) {var MyDocSelected = app.activeDocument.selection;if (MyDocSelected.length > 0) {for (var v = 1; v <= myYQtyV; v += 1) {for (var h = 1; h <= myXQtyV; h += 1) {if (MyDocSelected.length > 0) {for (var i = 0; i < MyDocSelected.length; i += 1) {MyDocSelected[i].selected = false;if (v > 1 || h > 1) {newItem = MyDocSelected[i].duplicate(app.activeDocument, ElementPlacement.PLACEATEND);newItem.translate((myXSizeV + myBloodV) * (h - 1), -(myYSizeV + myBloodV) * (v - 1));}}} else {MyDocSelected.selected = false;newItem = MyDocSelected.parent.duplicate(app.activeDocument, ElementPlacement.PLACEATEND);newItem.left += ((myXSizeV + myBloodV) * (h - 1));newItem.top += (-(myYSizeV + myBloodV) * (v - 1));}}}}
}function AddCutline(myXSizeV, myXQtyV, myYSizeV, myYQtyV, myCropSpaceV, myCropLengthV, myBloodV, StartpositionX, StartpositionY) {var MyDocSelected = app.activeDocument.selection;if (MyDocSelected.length > 0) {for (var v = 1; v <= 2; v += 1) {for (var h = 1; h <= 2; h += 1) {if (MyDocSelected.length > 0) {for (var i = 0; i < MyDocSelected.length; i += 1) {MyDocSelected[i].selected = false;if (v > 1 || h > 1) {}}} else {MyDocSelected.selected = false;}}}}var cmykColor = new CMYKColor();cmykColor.cyan = 0;cmykColor.yellow = 0;cmykColor.magenta = 0;cmykColor.black = 100;var MyCutlineGroup = activeDocument.groupItems.add();if (myBloodV != 0) {for (var i = 0; i < myXQtyV + 1; i += 1) {if (i > 0) {var MyTestPathBottom1 = MyCutlineGroup.pathItems.add();MyTestPathBottom1.setEntirePath(new Array(new Array((StartpositionX + ((myXSizeV + myBloodV) * i)) - myBloodV, StartpositionY - myCropSpaceV), new Array((StartpositionX + ((myXSizeV + myBloodV) * i)) - myBloodV, (StartpositionY - myCropSpaceV) - myCropLengthV)));MyTestPathBottom1.strokeColor = cmykColor;MyTestPathBottom1.stroked = true;MyTestPathBottom1.filled = false;MyTestPathBottom1.strokeWidth = 0.425196850393701;MyTestPathBottom1.selected = true;var MyTestPathUp1 = MyCutlineGroup.pathItems.add();MyTestPathUp1 = MyTestPathBottom1.duplicate();MyTestPathUp1.top += (((myYSizeV + myBloodV) * myYQtyV) - myBloodV) + (myCropSpaceV * 2) + myCropLengthV;MyTestPathUp1.strokeColor = cmykColor;MyTestPathUp1.stroked = true;MyTestPathUp1.filled = false;MyTestPathUp1.strokeWidth = 0.425196850393701;MyTestPathUp1.selected = true;}if (i < myXQtyV) {var MyTestPathBottom2 = MyCutlineGroup.pathItems.add();MyTestPathBottom2.setEntirePath(new Array(new Array(StartpositionX + ((myXSizeV + myBloodV) * i), StartpositionY - myCropSpaceV), new Array(StartpositionX + ((myXSizeV + myBloodV) * i), (StartpositionY - myCropSpaceV) - myCropLengthV)));MyTestPathBottom2.strokeColor = cmykColor;MyTestPathBottom2.stroked = true;MyTestPathBottom2.filled = false;MyTestPathBottom2.strokeWidth = 0.425196850393701;MyTestPathBottom2.selected = true;var MyTestPathUp2 = MyCutlineGroup.pathItems.add();MyTestPathUp2 = MyTestPathBottom2.duplicate();MyTestPathUp2.top += (((myYSizeV + myBloodV) * myYQtyV) - myBloodV) + (myCropSpaceV * 2) + myCropLengthV;MyTestPathUp2.strokeColor = cmykColor;MyTestPathUp2.stroked = true;MyTestPathUp2.filled = false;MyTestPathUp2.strokeWidth = 0.425196850393701;MyTestPathUp2.selected = true;}}for (var i = 0; i < myYQtyV + 1; i += 1) {if (i > 0) {var MyTestPathLeft1 = MyCutlineGroup.pathItems.add();MyTestPathLeft1.setEntirePath(new Array(new Array(StartpositionX - myCropSpaceV, (StartpositionY + ((myYSizeV + myBloodV) * i)) - myBloodV), new Array((StartpositionX - myCropSpaceV) - myCropLengthV, (StartpositionY + ((myYSizeV + myBloodV) * i)) - myBloodV)));MyTestPathLeft1.strokeColor = cmykColor;MyTestPathLeft1.stroked = true;MyTestPathLeft1.filled = false;MyTestPathLeft1.strokeWidth = 0.425196850393701;MyTestPathLeft1.selected = true;var MyTestPathRight1 = MyCutlineGroup.pathItems.add();MyTestPathRight1 = MyTestPathLeft1.duplicate();MyTestPathRight1.left += (((myXSizeV + myBloodV) * myXQtyV) - myBloodV) + (myCropSpaceV * 2) + myCropLengthV;MyTestPathRight1.strokeColor = cmykColor;MyTestPathRight1.stroked = true;MyTestPathRight1.filled = false;MyTestPathRight1.strokeWidth = 0.425196850393701;MyTestPathRight1.selected = true;}if (i < myYQtyV) {var MyTestPathLeft2 = MyCutlineGroup.pathItems.add();MyTestPathLeft2.setEntirePath(new Array(new Array(StartpositionX - myCropSpaceV, StartpositionY + ((myYSizeV + myBloodV) * i)), new Array((StartpositionX - myCropSpaceV) - myCropLengthV, StartpositionY + ((myYSizeV + myBloodV) * i))));MyTestPathLeft2.strokeColor = cmykColor;MyTestPathLeft2.stroked = true;MyTestPathLeft2.filled = false;MyTestPathLeft2.strokeWidth = 0.425196850393701;MyTestPathLeft2.selected = true;var MyTestPathRight2 = MyCutlineGroup.pathItems.add();MyTestPathRight2 = MyTestPathLeft2.duplicate();MyTestPathRight2.left += (((myXSizeV + myBloodV) * myXQtyV) - myBloodV) + (myCropSpaceV * 2) + myCropLengthV;MyTestPathRight2.strokeColor = cmykColor;MyTestPathRight2.stroked = true;MyTestPathRight2.filled = false;MyTestPathRight2.strokeWidth = 0.425196850393701;MyTestPathRight2.selected = true;}}} else {for (var i = 0; i < myXQtyV + 1; i += 1) {var MyTestPathBottom1 = MyCutlineGroup.pathItems.add();MyTestPathBottom1.setEntirePath(new Array(new Array((StartpositionX + ((myXSizeV + myBloodV) * i)) - myBloodV, StartpositionY - myCropSpaceV), new Array((StartpositionX + ((myXSizeV + myBloodV) * i)) - myBloodV, (StartpositionY - myCropSpaceV) - myCropLengthV)));MyTestPathBottom1.strokeColor = cmykColor;MyTestPathBottom1.stroked = true;MyTestPathBottom1.filled = false;MyTestPathBottom1.strokeWidth = 0.425196850393701;MyTestPathBottom1.selected = true;var MyTestPathUp1 = MyCutlineGroup.pathItems.add();MyTestPathUp1 = MyTestPathBottom1.duplicate();MyTestPathUp1.top += (((myYSizeV + myBloodV) * myYQtyV) - myBloodV) + (myCropSpaceV * 2) + myCropLengthV;MyTestPathUp1.strokeColor = cmykColor;MyTestPathUp1.stroked = true;MyTestPathUp1.filled = false;MyTestPathUp1.strokeWidth = 0.425196850393701;MyTestPathUp1.selected = true;}for (var i = 0; i < myYQtyV + 1; i += 1) {var MyTestPathLeft1 = MyCutlineGroup.pathItems.add();MyTestPathLeft1.setEntirePath(new Array(new Array(StartpositionX - myCropSpaceV, (StartpositionY + ((myYSizeV + myBloodV) * i)) - myBloodV), new Array((StartpositionX - myCropSpaceV) - myCropLengthV, (StartpositionY + ((myYSizeV + myBloodV) * i)) - myBloodV)));MyTestPathLeft1.selected = true;var MyTestPathRight1 = MyCutlineGroup.pathItems.add();MyTestPathRight1 = MyTestPathLeft1.duplicate();MyTestPathRight1.left += (((myXSizeV + myBloodV) * myXQtyV) - myBloodV) + (myCropSpaceV * 2) + myCropLengthV;MyTestPathRight1.selected = true;}}
}
2.作者答疑
如有疑问,请留言。
illustrator插件-拼版功能开发-自动拼版-js脚本开发-ai插件相关推荐
- illustrator插件--常用功能开发--标注横尺寸--js脚本开发--AI插件
1.算法功能 illustrator是矢量编辑软件,画板是绘制处理的重要容器,在印刷方面的一个重要功能就是标注横尺寸,开发一个标注横尺寸功能,以下功能仅用于学习交流,请勿用于非法用途和商业用途,源 ...
- illustrator插件--常用功能开发--查找白色叠印--js脚本开发--AI插件
illustrator是矢量编辑软件,画板是绘制处理的重要容器,在印刷方面的一个重要功能就是查找白色叠印,开发一个查找白色叠印功能,以下功能仅用于学习交流,请勿用于非法用途和商业用途,源代码如下所 ...
- illustrator插件--常用功能开发--生成出血线--js脚本开发--AI插件--动作--菜单
文章目录 1.算法程序 2.作者答疑 1.算法程序 illustrator是矢量编辑软件,画板是绘制处理的重要容器,在印刷方面的一个重要功能就生成出血线,开发一个生成出血线功能,以下功能仅用于学习 ...
- illustrator插件--常用功能开发--绘制外箱--js脚本开发--AI插件
illustrator是矢量编辑软件,画板是绘制处理的重要容器,在印刷方面的一个重要功能就是绘制外箱,开发一个绘制外箱功能,以下功能仅用于学习交流,请勿用于非法用途和商业用途,源代码如下所示: v ...
- AfterEffect插件-常规功能开发-高斯特效添加-js脚本开发-AE插件
文章目录 1.程序算法 2.应用 3.作者答疑 1.程序算法 高斯模糊(英语:Gaussian Blur),也叫高斯平滑 ,通常用它来减少图像噪声以及降低细节层次. 从数学的角度来看,图像的高斯模 ...
- AfterEffect插件-常规功能开发-复制组合图层-js脚本开发-AE插件
文章目录 1.算法程序 2.作者答疑 1.算法程序 AfterEffect(AE)插件是Adobe公司开发的特效制作软件,稳定快速的功能和特效,在视频制作领域使用非常广泛,本文向大家介绍如何在项目 ...
- AfterEffect(AE)插件-常规功能开发-放大缩小图层-js脚本开发-AE插件
文章目录 1.算法程序 2.文本转执行 3.作者答疑 1.算法程序 AfterEffect(AE)插件是Adobe公司开发的特效制作软件,稳定快速的功能和特效,在视频制作领域使用非常广泛,本文向大 ...
- AfterEffect插件--常规功能开发--命令行渲染--js脚本开发--AE插件
AfterEffect(AE)插件是Adobe公司开发的特效制作软件,稳定快速的功能和特效,在视频制作领域使用非常广泛,本文向大家介绍如何在项目里进行命令行渲染功能.源代码如下所示: // Com ...
- AfterEffect插件--常规功能开发--合成放大缩小--js脚本开发--AE插件
文章目录 1.算法程序 2.作者答疑 1.算法程序 AfterEffect(AE)插件是Adobe公司开发的特效制作软件,稳定快速的功能和特效,在视频制作领域使用非常广泛,本文向大家介绍如何在项目 ...
最新文章
- php 去除实体,php – 如何在学说中正确关闭实体管理器
- 【重置版】Android studio高效开发的秘密
- boost::detail模块实现数字特征的测试程序
- linux静态编译libcurl,libcurl嵌入式Linux移植
- Appium 服务器参数
- el-popover超过固定高度后出现滚动条_「测绘精选」RTK测量不出现固定解的原因...
- 克服VR眩晕之帧数:提升UE4内容实时渲染效率
- .NET的Math.Round与数学无关。没关系!
- 在Java / Maven中处理“Xerces hell”?
- 这电商代运营公司两月打造一个带泪的超级单品
- 威廉玛丽学院计算机专业,威廉玛丽学院CS排名2020年掌握的流程盘点
- Bloodsucker ZOJ - 3551(期望DP)
- java类求圆的面积周长_java编程 1. 设计一个求圆的面积和周长的类,要求:1计算当半径r,JAVA编程题。编写一个应用程序计算圆的周长和面积,设圆的半...
- 如何获取QQ邮箱授权码——步骤详解
- ECharts画分类甘特图
- 李有志——预谋着向生活发起冲锋...
- 2018春招便利蜂--你的准备永远不能覆盖面试官的提问
- Django通过celery 异步发送邮件 : django开发之天天生鲜项目知识总结【5】
- 该卸载PhotoShop了!MIT用AI实现3分钟自动抠图,精细到头发丝
- Angular4 实现多图片上传预览