文章目录
1.illustrator1.1.app.activeDocument1.2.artboards 2.程序算法2.1.全部页加矩形2.2.垂直两分2.3.水平两分 3.作者答疑1.illustrator
脚本由JavaScript语言形式表达,包括一系列表示illustrator内部对象的属性和方法。通过调用这些对象,来实现illustrator内部功能的自动化处理和批处理。脚本分为两部分,一部分是常规的ExtendScript,另一部分是illustrator内置对象。学习如何开发illustrator脚本插件,必须对涉及到的这两块内容有充分的了解,前者作者推荐,JavaScript Tools Guide CC这个文档来学习,下载地址:/download/m0_67316550/86502055,后者推荐,Illustrator_JavaScript_Scripting_Reference_,这个文档来了解illustrator软件常用的对象,掌握其调用方式,编写作业功能。下载地址:/download/m0_67316550/86502072
1.1.app.activeDocument
app是脚本运行环境的内置对象,代表整个应用程序。在Illustrator_JavaScript_Scripting_Reference_这个文档中可以查到。如下所示:
app是Adobe®Illustrator®应用程序对象,使用预定义的全局应用程序对象引用,其中包含所有其他Illustrator对象。
activeDocument是一个Document对象。表示当前AI文档。文档包含在Application对象中。
那些以单词“default”开头的属性是默认的文档设置。 确保只在文档打开时修改这些默认属性。 注意,如果在创建新对象之前将默认属性设置为所需的值,就可以简化脚本,消除了指定具有默认属性的特定属性(如fillColor和stroke)的需要。 文档的颜色空间、高度和宽度只能在创建文档时设置。 不能在现有文档中修改这些属性。
1.2.artboards
当前文档画板集合。画板对象表示文档中的单个画板。 在一个文档中可以有1到100个画板。 画板属性如下图所示:
2.程序算法
illustrator是矢量编辑软件,画板是绘制处理的重要容器,开发一个全部页加矩形、垂直两分和水平两分的功能。
2.1.全部页加矩形
源代码如下所示:
//全部页加矩形function allArtboard() {bt=new BridgeTalk();bt.target="illustrator-21.064";bt.body="{\n" +"var docRef = app.activeDocument;\n" + "var artboardRef= docRef.artboards;\n" +"for(i=0;i<artboardRef.length;i++){\n" +"var top=artboardRef[i].artboardRect[1] ;\n" + "var left=artboardRef[i].artboardRect[0];\n" + "var width=artboardRef[i].artboardRect[2]-artboardRef[i].artboardRect[0];\n" + "var height=artboardRef[i].artboardRect[1]-artboardRef[i].artboardRect[3];\n" + "var rect = docRef.pathItems.rectangle (top, left, width, height);\n" + "var noColor = new NoColor();\n"+"rect.fillColor=noColor;\n"+"var rectColor = new CMYKColor();\n" + "rectColor.cyan = 0;\n" + "rectColor.magenta = 100;\n" + "rectColor.yellow = 0;\n" + "rectColor.black = 0;\n" + "rect.strokeColor = rectColor;\n" + "}\n" + "docRef.selection=null;\n" + "rect.selected=true;\n"+"}\n";bt.send();}
2.2.垂直两分
源代码如下所示:
//垂直两分var docRef = app.activeDocument;var artboardRef = docRef.artboards;var isVer = parseFloat(app.version);var artboardnumber = artboardRef.getActiveArtboardIndex();function art_Rect() {return artboardRef[artboardnumber].artboardRect;}var art_left = art_Rect();var art_right = art_Rect();art_left[2] += art_left[0];art_left[2] /= 2;artboardRef[artboardnumber].artboardRect = art_left;art_right[0] += art_right[2];art_right[0] /= 2;isVer >= 15 ? artboardRef.insert(art_right, artboardnumber + 1) : myInsert(art_right, artboardnumber);function myInsert(rect, myIndex) {var temp_Arr = [];var art_Length = artboardRef.length;for (var i = 0; i < art_Length; i += 1) {temp_Arr.push(artboardRef[i].artboardRect);}temp_Arr.splice(myIndex + 1, 0, rect);artboardRef.add(rect);var new_Art_Length = artboardRef.length;for (var i = 0; i < new_Art_Length; i += 1) {temp_Arr.push(artboardRef[i].artboardRect = temp_Arr[i]);}docRef.artboards.setActiveArtboardIndex(myIndex + 1);}
2.3.水平两分
源代码如下所示:
//水平两分var docRef = app.activeDocument;var artboardRef = docRef.artboards;var isVer = parseFloat(app.version);var artboardnumber = artboardRef.getActiveArtboardIndex();function art_Rect() {return artboardRef[artboardnumber].artboardRect;}var art_top = art_Rect();var art_bottom = art_Rect();art_top[3] += art_top[1];art_top[3] /= 2;artboardRef[artboardnumber].artboardRect = art_top;art_bottom[1] += art_bottom[3];art_bottom[1] /= 2;isVer >= 15 ? artboardRef.insert(art_bottom, artboardnumber + 1) : myInsert(art_bottom, artboardnumber);function myInsert(rect, myIndex) {var temp_Arr = [];var art_Length = artboardRef.length;for (var i = 0; i < art_Length; i += 1) {temp_Arr.push(artboardRef[i].artboardRect);}temp_Arr.splice(myIndex + 1, 0, rect);artboardRef.add(rect);var new_Art_Length = artboardRef.length;for (var i = 0; i < new_Art_Length; i += 1) {temp_Arr.push(artboardRef[i].artboardRect = temp_Arr[i]);}docRef.artboards.setActiveArtboardIndex(myIndex + 1);}
3.作者答疑
如有疑问,敬请留言。
如果觉得《illustrator插件-画板功能开发-全部页面加矩形-垂直两分-水平两分-AI插件》对你有帮助,请点赞、收藏,并留下你的观点哦!