首页 > 技术 > AI/人工智能

illustrator插件读取数据库 | ai自动拼版

人阅读 2023-09-03 15:20:07

【illustrator插件读取数据库 | ai自动拼版】lot物联网小编为你整理了的相关内容,希望能为你解答。

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 { ntttext: '自动拼版工具', nttmypnl: Panel { orientation:'column', alignChildren:['right', 'top'],nttttext: '拼版信息:', ntttmyX: Group { orientation: 'row', nttttst: StaticText { text:'成品水平尺寸' }, nttttmyXSize: EditText { characters: 5,text:" AutoX ", justify:'right' } nttttst: StaticText { text:'mm 水平共拼' }, nttttmyXQty : EditText { characters: 3,text:" AutoXQty ", justify:'right' } nttttst: StaticText { text:'个' }, nttt}, ntttmyY: Group { orientation: 'row', nttttst: StaticText { text:'成品垂直尺寸' }, nttttmyYSize: EditText { characters: 5,text:" AutoY ", justify:'right' } nttttst: StaticText { text:'mm 垂直共拼' }, nttttmyYQty : EditText { characters: 3,text:" AutoYQty ", justify:'right' } nttttst: StaticText { text:'个' }, nttt}, ntt}, nttmypnl2: Panel { orientation:'column', alignChildren:['right', 'top'],nttttext: '割线信息:(mm)', ntttmyOther: Group { orientation: 'row', ntttst: StaticText { text:'割线离成品' }, ntttmyCropSpace : EditText { characters: 3,text:2, justify:'right' } ntttst: StaticText { text:'割线长' }, ntttmyCropLength : EditText { characters: 3,text:3, justify:'right' } ntttst: StaticText { text:'成品间隙' }, ntttmyBlood : EditText { characters: 3,text:0, justify:'right' } nttt}, ntt}, nttCheckboxs: Group { orientation: 'row', ntttCheckContent: Checkbox { nttttorientation:'row', text:'带内容拼版 .', value:false nttt}, ntttCheckCutline: Checkbox { nttttorientation:'row', text:'自动加割线', value:true nttt}, ntt}, nttmypnl3: Group { orientation: 'row', ntttst: StaticText { text:'注:水平与垂直尺寸需>0, 拼数需≥1,其它值需≥0' }, ntt} nttbuttons: Group { orientation: 'row', ntttcancelBtn: Button { text:'取消', properties:{name:'cancel'} } ntttokBtn: Button { text:'确定', properties:{name:'ok'} }, ntt} 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.作者答疑

代码长度过长,如需全部项目或有疑问,请留言。

提示: 作者知了-联系方式1 提示: 作者知了-联系方式2

以上内容为【illustrator插件读取数据库 | ai自动拼版】的相关内容,更多相关内容关注lot物联网。

LOT物联网

iot产品 iot技术 iot应用 iot工程

Powered By LOT物联网  闽ICP备2024036174号-1

联系邮箱:support1012@126.com