文章目录

  • 1.算法程序
  • 2.文本转执行
  • 3.作者答疑

1.算法程序

  illustrator是矢量编辑软件,画板是绘制处理的重要容器,在印刷方面的一个重要功能就是裁切标记,开发一个裁切标记功能,源代码如下所示:

if (app.documents.length == 0) {alert("请先建立一个新文件", "错误");var myDoc = app.documents.add();
}
luRes = "dialog {alignChildren: 'fill', text: '裁切标记',margins:[8,8,8,8]\nall: Group { orientation: 'row',alignChildren: 'fill', \n    myType: Panel {text:'类型',alignChildren: 'right',orientation: 'column',bounds:[100,0,225,110],properties:{borderStyle:'sunken'},\n                  lineType: Group { orientation: 'row',  spacing:1,\n                               st: StaticText { text:'角线:' }, \n                             ddl: DropDownList {preferredSize: [54, 20] ,fontsize:3,properties:{items:['日式', '罗马','中式']}},\n                                          } \n                crossType: Group { orientation: 'row',  spacing:1,\n                              cb: Checkbox { text:'套准', value: true}, \n                             ddl: DropDownList {preferredSize: [54, 20],properties:{items:['带圆', '无圆']}},\n                                          } \n                          } \n    mySize: Panel {text:'角线设置',alignChildren: 'fill',orientation: 'column',bounds:[100,0,240,0],properties:{borderStyle:'sunken'},\n                        lineLen: Group { orientation: 'row',  \n                                    s: StaticText { text:'长度:' }, \n                                    e: EditText {text: 6 , preferredSize: [36, 20],active:true}, \n                                    s: StaticText { text:'毫米' }, \n                                              } \n                    lineBleed: Group { orientation: 'row', \n                                    s: StaticText { text:'出血:' }, \n                                    e: EditText { text:3, preferredSize: [36, 20] },\n                                    s: StaticText { text:'毫米' }, \n                                             } \n                  lineStroke: Group { orientation: 'row', \n                                    s: StaticText { text:'描边:' }, \n                                    e: EditText { text:0.25, preferredSize: [36, 20] },\n                                    s: StaticText { text:'点' }, \n                                             } \n                         }  \n           } \nall2: Group { orientation: 'row',alignChildren: 'fill',\n        checkboxes: Panel { text:'选项', orientation:'column', alignChildren:'left',properties:{borderStyle:'black'},\n                 cb1: Checkbox { text:'添加角线图层 ', value: true}, \n                 cb2: Checkbox { text:'添加色标名称', value: true}, \n                 cb3: Checkbox { text:'添加文档信息' , value: true}, \n                 cb6: Checkbox { text:'包含对象边宽' }, \n                 cb4: Checkbox { text:'添加色条框',  value: true}, \n                 cb5: Checkbox { text:'色条框线',alignment: 'center',  value: true}, \n                }\n    myBisector: Panel { text:'等分线',alignChildren: 'left',orientation: 'column',bounds:[100,0,240,0],properties:{borderStyle:'sunken'},\n                               cb: Checkbox {text:'使用', value: true}\n            myUse: Group { orientation: 'column',alignChildren: 'fill',\n                        myHor: Group { orientation: 'row', \n                                    s: StaticText { text:'水平数:' }, \n                                    e: EditText { text:2, preferredSize: [55, 20]},  } \n                      myHor2: Group { orientation: 'row', \n                                    s3: StaticText { text:'切线距:' }, \n                                    e2: EditText { text:6, preferredSize: [25, 20]},\n                                    s4: StaticText { text:'毫米' }, \n                                           } \n                        myVer: Group { orientation: 'row', \n                                    s: StaticText {text:'垂直数:' }, \n                                    e: EditText { text:4, preferredSize: [55, 20] },  } \n                     myVer2: Group { orientation: 'row',  \n                                    s3: StaticText { text:'切线距:' }, \n                                    e2: EditText { text:6, preferredSize: [25, 20]},\n                                    s4: StaticText { text:'毫米' }, \n                                            } \n                                  }\n                            }\n              }\nbuttonGroups: Group { orientation: 'row', alignment: 'center', \ncancelBtn: Button { text:'取消',properties:{name:'cancel'}}, \nokBtn: Button { text:'确定',properties:{name:'ok'}}, \n        }\n}";
var win = new Window(luRes);
win.all.myType.lineType.ddl.selection = win.all.myType.lineType.ddl.items[0];
win.all.myType.crossType.ddl.selection = win.all.myType.crossType.ddl.items[0];
selLine = win.all.myType.lineType.ddl.items[0];
selLine1 = win.all.myType.lineType.ddl.items[1];
selellipse = win.all.myType.crossType.ddl.items[0];
win.all.myType.crossType.cb.onClick = function() {win.all.myType.crossType.ddl.enabled = this.value;
};
win.all2.myBisector.cb.onClick = function() {win.all2.myBisector.myUse.enabled = this.value;
};
if (win.all2.myBisector.cb.value == true) {win.all2.myBisector.cb.notify()
}
win.all2.checkboxes.cb4.onClick = function() {win.all2.checkboxes.cb5.enabled = this.value;
};
win.center();
myReturn = win.show();
if (myReturn == true) {var docRef = app.activeDocument;var pointTomm = 2.83464566929134;var pw = 0;var ph = 0;var x = 0;var y = 0;var aiver = app.version;var fileNameLocation = 0;var pageNumberLocation = 0;var mCMYK = [setCMYKcolor(100, 0, 0, 0), setCMYKcolor(0, 100, 0, 0), setCMYKcolor(0, 0, 100, 0), setCMYKcolor(0, 0, 0, 100)];mCMYK.push(setCMYKcolor(100, 100, 0, 0), setCMYKcolor(100, 0, 100, 0), setCMYKcolor(0, 100, 100, 0), setCMYKcolor(0, 0, 0, 50));var colorBarSize = 5 * pointTomm;var regRoundSize = 3.6 * pointTomm;var myFont = textFonts.getByName("MicrosoftYaHei");var myFontSize = 9;var lineLen = eval(win.all.mySize.lineLen.e.text) * pointTomm;var lineBleed = eval(win.all.mySize.lineBleed.e.text) * pointTomm;var hBisector = eval(win.all2.myBisector.myUse.myHor.e.text);var vBisector = eval(win.all2.myBisector.myUse.myVer.e.text);var hBSpace = eval(win.all2.myBisector.myUse.myHor2.e2.text) * pointTomm;var vBSpace = eval(win.all2.myBisector.myUse.myVer2.e2.text) * pointTomm;var SW = eval(win.all.mySize.lineStroke.e.text);placeCropline = true;win.all2.checkboxes.cb1.value ? creatCropMarkLayer = true : creatCropMarkLayer = false;win.all2.myBisector.cb.value ? placeBisector = true : placeBisector = false;win.all2.checkboxes.cb2.value ? placeColorName = true : placeColorName = false;win.all2.checkboxes.cb3.value ? placeFileDateName = placePageSize = true : placeFileDateName = placePageSize = false;win.all.myType.crossType.cb.value ? placeRegMark = true : placeRegMark = false;win.all2.checkboxes.cb4.value ? placeColorBar = true : placeColorBar = false;win.all2.checkboxes.cb5.value ? colorBarStroked = true : colorBarStroked = false;if (lineLen <= 0 || lineBleed <= 0 || isNaN(lineLen) == true || isNaN(lineBleed) == true) {alert("输入的数值必须大于零!已自动更正为 长度:6mm 出血:3mm。", "错误");lineLen = 6 * pointTomm;lineBleed = 3 * pointTomm;}if (creatCropMarkLayer == true) {docRef.layers.add();docRef.layers[0].name = "角线图层";}if (docRef.selection.length > 0) {var sl = true;var obj = docRef.selection;var selVB = getBounds(obj);var docName = "文件名: " + docRef.name;pw = selVB[2] - selVB[0];ph = selVB[1] - selVB[3];x = selVB[0];y = selVB[3];for (var i = 0; i < obj.length; i += 1) {obj[i].selected = false;}setOpt();} else if (aiver.slice(0, 2) >= 14) {var ab = docRef.artboards.length - 1;if (ab >= 49) {alert("注意:页面数量超过 50 时需要较多的内存与较长的运行时间,请耐心等候。\n当出现 \"PARM\"错误时,请关掉一些不用的软件以释放可用内存!", "提示");}for (var j = 0; j <= ab; j += 1) {docRef.artboards.setActiveArtboardIndex(j);var artboardnumber = docRef.artboards.getActiveArtboardIndex() + 1;var docName = "文件名: " + docRef.name + "  页码: " + docRef.artboards.length + "-" + artboardnumber;pw = docRef.width;ph = docRef.height;x = docRef.cropBox[0];y = docRef.cropBox[1] - ph;setOpt();}} else {pw = docRef.width;ph = docRef.height;var docName = "文件名: " + docRef.name;setOpt();}
}function setOpt() {regGroup = docRef.groupItems.add();textGroup = docRef.groupItems.add();colorBarGroup = docRef.groupItems.add();cropmark();if (placeColorName == true) {colorname();}if (placeColorBar == true) {colorBar();}if (placeBisector == true) {Bisector();}if (placeFileDateName == true) {filenameDate();}if (placeRegMark == true) {Regmark();}if (placePageSize == true) {pagesize();}
}function setCMYKcolor(c, m, y, k) {var newCMYKcolor = new CMYKColor();newCMYKcolor.cyan = c;newCMYKcolor.magenta = m;newCMYKcolor.yellow = y;newCMYKcolor.black = k;return newCMYKcolor;
}function filenameDate() {var today = new Date();var week = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];var thisDate = today.getFullYear() + "年" + today.getMonth() + 1 + "月" + today.getDate() + "日" + " " + week[today.getDay()];var textString = "文件名: " + docName + "  " + thisDate;var textRef = textGroup.textFrames.add();textRef.contents = docName + "  " + thisDate;textRef.textRange.characterAttributes.size = myFontSize;textRef.textRange.characterAttributes.textFont = myFont;textRef.textRange.characterAttributes.fillColor = docRef.swatches[1].color;textRef.top = (y - 2) - lineBleed;textRef.left = ((pw - textRef.width) - lineBleed) + x;
}function colorname() {var textRef = textGroup.textFrames.add();textRef.contents = "青色(C) 洋红(M) 黄色(Y) 黑色(K)";textRef.textRange.characterAttributes.size = myFontSize;textRef.textRange.characterAttributes.textFont = myFont;textRef.top = (y - 2) - lineBleed;textRef.left = x + lineBleed;for (var i = 0; i <= 5; i += 1) {textRef.textRange.characters[i].characterAttributes.fillColor = mCMYK[0]}for (var i = 6; i <= 11; i += 1) {textRef.textRange.characters[i].characterAttributes.fillColor = mCMYK[1]}for (var i = 12; i <= 17; i += 1) {textRef.textRange.characters[i].characterAttributes.fillColor = mCMYK[2]}for (var i = 18; i <= 22; i += 1) {textRef.textRange.characters[i].characterAttributes.fillColor = mCMYK[3]}
}function pagesize() {var sizeUnit = "MM";var sizeX = pw;var sizeY = ph;switch (docRef.rulerUnits) {case RulerUnits.Centimeters:sizeUnit = " 厘米";sizeX = Math.round(((pw / pointTomm) / 10) * 100) / 100;sizeY = Math.round(((ph / pointTomm) / 10) * 100) / 100;break;case RulerUnits.Inches:sizeUnit = " 英吋";sizeX = Math.round((pw / 72) * 100) / 100;sizeY = Math.round((ph / 72) * 100) / 100;break;case RulerUnits.Millimeters:sizeUnit = " 毫米";sizeX = Math.round(((pw / pointTomm) + 0.001) * 100) / 100;sizeY = Math.round(((ph / pointTomm) + 0.001) * 100) / 100;break;case RulerUnits.Points:sizeUnit = " 点";sizeX = Math.round(pw * 100) / 100;sizeY = Math.round(ph * 100) / 100;break;case RulerUnits.Pixels:sizeUnit = " 像素";sizeX = Math.round(pw * 100) / 100;sizeY = Math.round(ph * 100) / 100;break;case RulerUnits.Qs:sizeUnit = " Ha";sizeX = Math.round(pw * 141.111) / 100;sizeY = Math.round(ph * 141.111) / 100;break;default:}var textPageSize = textGroup.textFrames.add();textPageSize.contents = "尺寸: " + sizeX + "X" + sizeY + sizeUnit;textPageSize.textRange.characterAttributes.size = myFontSize;textPageSize.textRange.characterAttributes.textFont = myFont;textPageSize.textRange.characterAttributes.fillColor = docRef.swatches[1].color;textPageSize.position = [((x + pw) - lineBleed) - textPageSize.width, y + ph + textPageSize.height + lineBleed];
}function cropmark() {var lineGroup = regGroup.groupItems.add();var myLine = {line: function(PTS) {var myLineSet = lineGroup.pathItems.add();myLineSet.setEntirePath(PTS);myLineSet.filled = false;myLineSet.stroked = true;myLineSet.strokeWidth = SW;myLineSet.strokeColor = docRef.swatches[1].color;}};if (win.all.myType.lineType.ddl.selection == selLine) {var PTS1 = [[0, lineLen + lineBleed],[lineLen, lineLen + lineBleed],[lineLen, 0]];myLine.line(PTS1);var PTS2 = [[0, lineLen],[lineLen + lineBleed, lineLen],[lineLen + lineBleed, 0]];myLine.line(PTS2);} else if (win.all.myType.lineType.ddl.selection == selLine1) {var PTS1 = [[0, lineLen + lineBleed],[lineLen, lineLen + lineBleed]];myLine.line(PTS1);var PTS2 = [[lineLen + lineBleed, lineLen],[lineLen + lineBleed, 0]];myLine.line(PTS2);} else {var PTS1 = [[0, lineLen + lineBleed],[lineLen, lineLen + lineBleed]];myLine.line(PTS1);var PTS2 = [[0, lineLen],[lineLen + (lineBleed / 2), lineLen]];myLine.line(PTS2);var PTS3 = [[lineLen + lineBleed, lineLen],[lineLen + lineBleed, 0]];myLine.line(PTS3);var PTS4 = [[lineLen, lineLen + (lineBleed / 2)],[lineLen, 0]];myLine.line(PTS4);}lineGroup.position = [-lineGroup.width + x, y];lineGroup2 = lineGroup.duplicate();lineGroup2.rotate(90);lineGroup2.left = lineGroup2.left + lineGroup2.width + pw;lineGroup3 = lineGroup.duplicate();lineGroup3.rotate(270);lineGroup3.top = lineGroup3.top + lineGroup3.height + ph;lineGroup4 = lineGroup2.duplicate();lineGroup4.rotate(90);lineGroup4.top = lineGroup4.top + lineGroup4.height + ph;
}function Regmark() {var lineGroup = regGroup.groupItems.add();if (win.all.myType.crossType.ddl.selection == selellipse) {ellipse = lineGroup.pathItems.ellipse((regRoundSize / 2) + y, (-regRoundSize / 2) + x, regRoundSize, regRoundSize, false, true);with(ellipse) {filled = false;stroked = true;strokeWidth = SW;strokeColor = docRef.swatches[1].color;}}var myLine = {line: function(X1, Y1, X2, Y2) {var myLineSet = lineGroup.pathItems.add();myLineSet.setEntirePath([[X1, Y1],[X2, Y2]]);myLineSet.filled = false;myLineSet.stroked = true;myLineSet.strokeWidth = SW;myLineSet.strokeColor = docRef.swatches[1].color;}};myLine.line((-lineLen / 2) + x, y, (lineLen / 2) + x, y);myLine.line(x, -(lineLen + lineBleed) + y, x, lineLen + lineBleed + y);lineGroup.position = [(-lineGroup.width - lineBleed) + x, ((ph + lineGroup.height) / 2) + y];lineGroup.duplicate().position = [pw + lineBleed + x, ((ph + lineGroup.height) / 2) + y];lineGroup.duplicate();lineGroup.rotate(90);lineGroup.position = [((pw - lineGroup.width) / 2) + x, -lineBleed + y];lineGroup.duplicate().position = [((pw - lineGroup.width) / 2) + x, ph + lineGroup.height + lineBleed + y];
}function colorBar() {var rectangle = {bar: function(y, x, colorBarSize, fiColor, swColor) {var myRectangle = colorBarGroup.pathItems.rectangle(y, x, colorBarSize, colorBarSize);myRectangle.fillColor = fiColor;myRectangle.stroked = false;if (colorBarStroked == true) {myRectangle.strokeColor = swColor;myRectangle.strokeWidth = SW;}}};for (var i = 0; i <= 10; i += 1) {rectangle.bar(y + (i * colorBarSize) + colorBarSize + lineBleed, ((-colorBarSize - lineBleed) + x) - 1, colorBarSize, colorBarSize, setCMYKcolor(10 * i, 0, 0, 0), mCMYK[0]);rectangle.bar((((y + (i * colorBarSize)) - (10 * colorBarSize)) - lineBleed) + ph, ((-colorBarSize - lineBleed) + x) - 1, colorBarSize, colorBarSize, setCMYKcolor(0, 10 * i, 0, 0), mCMYK[1]);rectangle.bar((((y + (i * colorBarSize)) - (10 * colorBarSize)) - lineBleed) + ph, lineBleed + x + pw + 1, colorBarSize, colorBarSize, setCMYKcolor(0, 0, 10 * i, 0), mCMYK[2]);rectangle.bar(y + (i * colorBarSize) + colorBarSize + lineBleed, lineBleed + x + pw + 1, colorBarSize, colorBarSize, setCMYKcolor(0, 0, 0, 10 * i), mCMYK[3]);}for (var j = 0; j <= 7; j += 1) {rectangle.bar(y + ph + colorBarSize + lineBleed + 1, lineBleed + x + (j * colorBarSize), colorBarSize, colorBarSize, mCMYK[j], docRef.swatches[1].color)}
}function Bisector() {var lineGroup = regGroup.groupItems.add();var myLine = {line: function(X1, Y1, X2, Y2) {var myLineSet = lineGroup.pathItems.add();myLineSet.setEntirePath([[X1, Y1],[X2, Y2]]);myLineSet.filled = false;myLineSet.stroked = true;myLineSet.strokeWidth = SW;myLineSet.strokeColor = docRef.swatches[1].color;}};if (vBSpace == 0) {for (var vML = 1; vML < vBisector; vML += 1) {var vEquidistant = ph / vBisector;myLine.line((x - lineLen) - lineBleed, y + (vML * vEquidistant), x - lineBleed, y + (vML * vEquidistant));myLine.line(x + lineLen + lineBleed + pw, y + (vML * vEquidistant), x + lineBleed + pw, y + (vML * vEquidistant));}} else {for (var vML = 1; vML < vBisector; vML += 1) {var vEquidistant = (ph + vBSpace) / vBisector;myLine.line((x - lineLen) - lineBleed, y + (vML * vEquidistant), x - lineBleed, y + (vML * vEquidistant));myLine.line((x - lineLen) - lineBleed, (y - vBSpace) + (vML * vEquidistant), x - lineBleed, (y - vBSpace) + (vML * vEquidistant));myLine.line(x + lineLen + lineBleed + pw, y + (vML * vEquidistant), x + lineBleed + pw, y + (vML * vEquidistant));myLine.line(x + lineLen + lineBleed + pw, (y - vBSpace) + (vML * vEquidistant), x + lineBleed + pw, (y - vBSpace) + (vML * vEquidistant));}}if (hBSpace == 0) {for (var hML = 1; hML < hBisector; hML += 1) {var hEquidistant = pw / hBisector;myLine.line(x + (hML * hEquidistant), (y - lineLen) - lineBleed, x + (hML * hEquidistant), y - lineBleed);myLine.line(x + (hML * hEquidistant), y + ph + lineBleed + lineLen, x + (hML * hEquidistant), y + ph + lineBleed);}} else {for (var hML = 1; hML < hBisector; hML += 1) {var hEquidistant = (pw + hBSpace) / hBisector;myLine.line(x + (hML * hEquidistant), (y - lineLen) - lineBleed, x + (hML * hEquidistant), y - lineBleed);myLine.line(x + (hML * hEquidistant), y + ph + lineBleed + lineLen, x + (hML * hEquidistant), y + ph + lineBleed);myLine.line((x + (hML * hEquidistant)) - hBSpace, (y - lineLen) - lineBleed, (x + (hML * hEquidistant)) - hBSpace, y - lineBleed);myLine.line((x + (hML * hEquidistant)) - hBSpace, y + ph + lineBleed + lineLen, (x + (hML * hEquidistant)) - hBSpace, y + ph + lineBleed);}}
}function getBounds(obj) {var selObj1 = new Array();var selObj2 = new Array();var vgb1 = new Array();var vgb2 = new Array();var n = obj.length;if (n > 0) {if (obj[0].typename == "GroupItem" && obj[0].clipped && obj[0].pageItems.length > 1) {clipObj = obj[0].pathItems[0].geometricBounds;vgb1 = clipObj;} else {selObj1 = obj[0];if (win.all2.checkboxes.cb6.value) {vgb1 = selObj1.visibleBounds;} else {vgb1 = selObj1.geometricBounds;}}if (n > 1) {for (var i = 1; i < n; i += 1) {selObj2 = obj[i];if (obj[i].typename == "GroupItem" && obj[i].clipped && obj[i].pageItems.length > 1) {if (win.all2.checkboxes.cb6.value) {vgb2 = obj[i].pathItems[0].visibleBounds;} else {vgb2 = obj[i].pathItems[0].geometricBounds;}} else {if (win.all2.checkboxes.cb6.value) {vgb2 = selObj2.visibleBounds;} else {vgb2 = selObj2.geometricBounds;}}if (vgb1[0] > vgb2[0]) {vgb1[0] = vgb2[0]}if (vgb1[1] < vgb2[1]) {vgb1[1] = vgb2[1]}if (vgb1[2] < vgb2[2]) {vgb1[2] = vgb2[2]}if (vgb1[3] > vgb2[3]) {vgb1[3] = vgb2[3]}}}}return vgb1;
}

2.文本转执行

  使用记事本或者notepad++等文本编辑器,将代码拷贝至文本文件,然后修改后缀名为js或者jsx,最后再illustrator软件菜单文件》脚本》其它脚本,选择脚本文件,点执行即可,也可以将脚本放在预设文件夹内,会显示再脚本下的二级子菜单。如下图所示:

3.作者答疑


  如有疑问,请留言。

illustrator插件-拼版功能开发-裁切标记-js脚本开发-ai插件相关推荐

  1. illustrator插件-拼版功能开发-自动拼版-js脚本开发-ai插件

    文章目录 1.算法程序 2.作者答疑 1.算法程序   illustrator是矢量编辑软件,画板是绘制处理的重要容器,在印刷方面的一个重要功能就是拼版,开发一个自动拼版功能,源代码如下所示: if ...

  2. illustrator插件-拼版功能开发-一键拼版-js脚本开发-ai插件

    文章目录 1.算法程序 2.作者答疑 1.算法程序   illustrator是矢量编辑软件,画板是绘制处理的重要容器,在印刷方面的一个重要功能就是拼版,开发一个一键拼版功能,源代码如下所示: fun ...

  3. illustrator插件-拼版功能开发-阵列复制-js脚本开发-ai插件

    文章目录 1.算法程序 2.作者答疑 1.算法程序   illustrator是矢量编辑软件,画板是绘制处理的重要容器,在印刷方面的一个重要功能就是拼版,开发一个阵列复制功能,以下功能仅用于学习交流, ...

  4. illustrator插件-拼版功能-内角线-js脚本开发-ai插件

    文章目录 1.算法程序 2.作者答疑 1.算法程序   illustrator是矢量编辑软件,画板是绘制处理的重要容器,在印刷方面的一个重要功能就是拼版,开发一个内角线模块,以下功能仅用于学习交流,请 ...

  5. illustrator插件-常用功能模块-测量路径长度-js脚本开发-AI插件

    文章目录 1.算法程序 2.作者答疑 1.算法程序   illustrator是矢量编辑软件,画板是绘制处理的重要容器,在印刷方面的一个重要功能就是测量路径长度,开发一个测量路径长度功能,以下功能仅用 ...

  6. illustrator插件--常用功能开发--色标生成器--js脚本开发--AI插件

      illustrator是矢量编辑软件,画板是绘制处理的重要容器,在印刷方面的一个重要功能就是色标生成器,开发一个色标生成器功能,以下功能仅用于学习交流,请勿用于非法用途和商业用途,源代码如下所示: ...

  7. illustrator插件-画板功能开发-插入页码-js脚本开发-ai插件

    文章目录 1.算法程序 2.文本转执行 3.作者答疑 1.算法程序   illustrator是矢量编辑软件,画板是绘制处理的重要容器,开发一个插入页码功能,源代码如下所示: if (app.docu ...

  8. illustrator插件--常用功能开发--绘制手提袋--js脚本开发--AI插件

      illustrator是矢量编辑软件,画板是绘制处理的重要容器,在印刷方面的一个重要功能就是绘制手提袋,开发一个绘制手提袋功能,以下功能仅用于学习交流,请勿用于非法用途和商业用途,源代码如下所示: ...

  9. AfterEffect插件--常规功能开发--扭曲效果--js脚本开发--AE插件

    文章目录 1.扭曲效果功能 2.作者答疑 1.扭曲效果功能   AfterEffect(AE)插件是Adobe公司开发的特效制作软件,稳定快速的功能和特效,在视频制作领域使用非常广泛,本文向大家介绍如 ...

  10. AfterEffect(AE)插件-常规功能开发-创建面板-js脚本开发

    文章目录 1.算法程序 2.作者答疑 1.算法程序   AfterEffect(AE)插件是特效制作软件,本文向大家介绍如何开发插件中的子模块创建面板.源代码如下所示: {function DemoP ...

最新文章

  1. java原子变量的作用_AtomicInteger原子类的作用介绍(代码示例)
  2. 【深度学习】深入理解Batch Normalization批标准化
  3. “僵尸病毒”入侵全球电脑,7.5万部电脑中招(来源:广州日报)
  4. class路径快捷 xml配置_SpringBoot 配置文件详解(告别XML)-class文件
  5. 嵊州职教中心计算机多少分数,嵊州中考考试分数线
  6. 定时器和多线程的不同
  7. IBM 前面板显示信息提示
  8. php把字符串变成多组,php把字符串变成数组(有分隔符)
  9. 拓端tecdat|R语言泰坦尼克号随机森林模型案例数据分析
  10. phpstudy、Apache安装DVWA教程
  11. 迅捷fw325r虚拟服务器设置,迅捷FAST FW325R路由器无线桥接设置方法
  12. VSCode去除.pytest_cache文件夹
  13. [导入]运筹帷幄之中,决胜千里之外(搜索世界的监视器为你所用)
  14. mqtt 服务器 ca 证书,如何将SSL MQTT客户机与CA签名服务器证书连接?
  15. 量子计算机 叉院,清华团队首次实现量子GAN 准确率98.8%
  16. SAS:Proc Freq ,输出结果控制小数位数
  17. HUST1005 渊子赛马【枚举】
  18. flash 交互操作:裁剪位图
  19. 逆水寒服务器维护到什么时候,逆水寒11月1日更新到什么时候_维护到几点
  20. 登录后跳转又提示未登录

热门文章

  1. 分治法 循环比赛日程表
  2. 论如何熟悉HTML与css的方法-孰能生巧第一步:美食网编写(详细代码)
  3. 如何让TCP重传如丝般柔滑
  4. Scrapy 2.6 Requests and Responses 请求和响应使用指南
  5. Qt模仿360系统托盘
  6. 过年回家,还怕抢不到票?程序员教你如何抢票
  7. 摆脱五彩斑斓的黑,成为七彩程序员!
  8. Unity TimeLine学习笔记
  9. 他把科学,放进几代人的中二梦
  10. Jetbrain 如何使用教育邮箱激活