亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 辦公 > Illustrator > 正文

AI腳本建立點到點的連線教程

2020-04-17 23:19:15
字體:
來源:轉載
供稿:網友

這篇教程像武林網的AI愛好者們介紹用AI腳本建立點到點的連線這個腳本是將對象上能互相連接的點做一個連接。示例如圖:

連接之后類似于曼陀羅的形狀。在多邊形、星型或者手繪圖形上也試試吧。
點最好多一些,這樣能得到更好的形狀;較少的點可能沒有什么變化。

要用“文件-腳本”來使用,以CS3為例應放在"C:/Program Files/Adobe/Adobe Illustrator CS3/預設/腳本"下。
當然,也可以放置在其他文件夾中,通過Ctrl+F12定位到腳本所在處來使用。
復制以下全部文字到記事本中,保存為以.js結尾的腳本文件(如:腳本.js)即可。


復制代碼
代碼如下:
/////////////////////////////////////////////////////////////////
// All Points v.1.3 -- CS,CS2,CS3,CS4
//>=--------------------------------------
// This script simply draws a line from every point to every other point of your selected pathitem.
// Handy for making Mandalas. Try on polygons, stars or even freehand shapes.
//>=--------------------------------------
// JS code (c) copyright: John Wundes ( john@wundes.com ) www.wundes.com
//copyright full text here: http://www.wundes.com/js4ai/copyright.txt
//////////////////////////////////////////////////////////////////
function Loadbar(x){
this.versionNum= app.version.split(".")[0] ;
if (this.versionNum >= 13){
this.w = new Window('window', "Processing...", undefined, {independent:true});
this.w.frameLocation = [600,400];
this.w.tracker = this.w.add ('statictext' , [15,15,250,35], "processing");
this.w.prog = this.w.add ('progressbar' , [15,15,250,35], 0, x);
//this.w.show();
}
}
Loadbar.prototype.close = function(){
if (this.versionNum >= 13){
this.w.close();
}
}
Loadbar.prototype.hide=function(){
if (this.versionNum >= 13){
this.w.hide();
}
}
Loadbar.prototype.show=function(){
if (this.versionNum >= 13){
this.w.show();
}
}
Loadbar.prototype.update=function(x){
if (this.versionNum >= 13){
this.w.prog.value = x;
}
}
Loadbar.prototype.label=function(x){
if (this.versionNum >= 13){
this.w.tracker.text = x;
}
}
Array.prototype.indexOf = function(i){
var len = this.length;
for (var a=0;a{
if (this[a]==i)
{
return a;
}
return -1;
}
}
Array.prototype.man = function(test, tvars_arr, doThis, dovars_arr) {
var FUN="function";
var OBJ="object";
var UND="undefined";
var a=typeof test;
var b=typeof tvars_arr;
var c=typeof doThis;
var d=typeof dovars_arr;
// if only an array is given, it is assumed we wish to copy to it:
if (a==OBJ && tvars_arr ==undefined && doThis==undefined && dovars_arr==undefined)
{
dovars_arr = test;
test=undefined;
}
//if we just want to process all items without any testing: doThis,[dovars_arr] fun,ob
if (a==FUN && b==OBJ && doThis==undefined && dovars_arr==undefined)
{
//alert("correct");
doThis=test;
test=undefined;
dovars_arr=tvars_arr;
tvars_arr=undefined;
}else if(a==FUN && b==FUN){ // fun,fun OR fun,fun,ob
if (c==OBJ)
{
dovars_arr=doThis;
}
doThis=tvars_arr;
tvars_arr=undefined;
}
// Either case should work as normal: fun,ob,fun OR fun,ob,fun,ob
// Now set defaults if anything is missing:
test= test==undefined?AMT_exists:test;
tvars_arr= tvars_arr==undefined?[0]:tvars_arr;
doThis= doThis==undefined?AMA_exportTo:doThis;
dovars_arr= dovars_arr==undefined?[0]:dovars_arr;
//
var sl = this.length;
for (var ds = 0; ds<(sl-1); ds++) {
//first referenced function call
if (test(this[ds], tvars_arr)) {
// second referenced function call
var ret = doThis(this[ds], dovars_arr);
//change original array item if something is returned
if (ret != undefined) {
this[ds] = ret;
}
}
}
}
//DEFAULT TEST:
function AMT_exists(item, y_arr) {
//filler function for arrayMan
//always true
return 1;
}
//DEFAULT ACTION:
// exports each tested item to exp_arr
function AMA_exportTo(item, exp_arr) {
//alert(item);
exp_arr.unshift(item); //unshift because the array is being processed backwards.
}
function AMA_LinesTo(item, vars_arr) {
var count = vars_arr[0];
var group = vars_arr[1];
var src_arr = vars_arr[2];
var sal = src_arr.length;
// draw a line from this point, to every remaining point in the array
if (count == sal-1)
{
//alert("last one");
return
}
//
for (var p=(count+1);p<sal></sal>{
var myLine = drawLine(item.anchor, src_arr[p].anchor);

/* // uncomment for some fun grayscale action
var col=255/(sal/(count+1));
myLine.strokeColor.red = col;
myLine.strokeColor.green= col;
myLine.strokeColor.blue = col;
*/

b.update(p);
b.label("Item:"+(s+1)+" of "+selLen+". (node "+count+" of "+(sal-1)+")");
//redraw();
//alert("drawing count:"+count+"/nindex of "+item+" in:"+src_arr+":"+src_arr.indexOf(item));
}
vars_arr[0]++; //note: count++ doesnt work
}
function drawLine(anchor1,anchor2) {
//alert(anchor1+" and "+anchor2);
//draw a single line from point a to point b
var linePath = shapeGroup.pathItems.add();
var offset=0; // [anchor1[0]-offset,anchor1[1]-offset]
linePath.setEntirePath( Array(anchor1,anchor2) );
linePath.closed = false;
linePath.stroked = true;
linePath.filled = false;
linePath.strokeWidth = 1;
return linePath;
}
//----------------main
alert0="請打開一個文檔";
alert1="只能對單一對象生效!/n不能是剪切蒙版、復合路徑、復合形狀、群組等!";
if ( app.documents.length == 0 ) {
alert(alert0);
}else if (app.activeDocument.selection.length == 0){
alert(alert1);
}else if (app.activeDocument.selection[0].typename != "PathItem"){
alert(alert1);
}else{
doc=activeDocument;
sel=doc.selection;
selLen=sel.length;
// walk through each selected item
for (var s=0;s<sellen></sellen>{
if (sel[s].typename == "PathItem")
{
var b = new Loadbar(sel[s].selectedPathPoints.length);
b.show();
var obj = sel[s];
var src_arr = obj.selectedPathPoints;
var count = 0;
var shapeGroup = app.activeDocument.groupItems.add();
src_arr.man(AMA_LinesTo,[count,shapeGroup,src_arr]);
b.close();
}
}
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲网站视频福利| 久久久久久国产精品三级玉女聊斋| 久久免费视频观看| 亚洲综合中文字幕在线| 8090理伦午夜在线电影| 亚洲免费小视频| 18一19gay欧美视频网站| 国产91免费观看| 欧美成人性色生活仑片| 一级做a爰片久久毛片美女图片| 亚洲第一精品夜夜躁人人爽| 亚洲精品av在线播放| 欧美肥臀大乳一区二区免费视频| 欧美一级片免费在线| 精品国产成人av| 亚洲全黄一级网站| 亚洲精品视频在线观看视频| 欧美精品激情在线观看| 亚洲色图25p| www.日韩视频| 国产日韩欧美视频在线| 欧美国产激情18| 国产精品流白浆视频| 亚洲最大激情中文字幕| 国产69精品久久久久9999| 78色国产精品| 尤物九九久久国产精品的特点| 7777精品视频| 欧美日韩中文字幕日韩欧美| 国产成人精品最新| 亚洲护士老师的毛茸茸最新章节| 欧美日韩在线观看视频小说| 欧洲美女免费图片一区| 国产精品久久久久99| 亚洲天堂影视av| 91大神在线播放精品| 91夜夜未满十八勿入爽爽影院| 亚洲国产天堂久久综合| 日韩美女在线播放| 中文字幕在线成人| 日韩av电影院| 久久精品人人做人人爽| 亚洲三级 欧美三级| 色悠久久久久综合先锋影音下载| 成人写真视频福利网| 亚洲一级免费视频| 45www国产精品网站| 国产成人久久久| 中文字幕在线精品| 国产网站欧美日韩免费精品在线观看| 国产在线观看精品| 欧洲亚洲免费在线| 欧美男插女视频| 日韩不卡中文字幕| 亚洲国产精久久久久久| 色婷婷av一区二区三区久久| 午夜精品久久久久久久久久久久久| 国产美女91呻吟求| 成人高h视频在线| 福利一区福利二区微拍刺激| 欧美在线精品免播放器视频| 中文字幕精品在线| 国产日韩欧美日韩大片| 久久影视免费观看| 九九精品在线观看| 日韩免费电影在线观看| 人人澡人人澡人人看欧美| 在线观看精品国产视频| 欧美激情一二区| 日韩中文在线不卡| 欧美在线视频观看| 久久在精品线影院精品国产| **欧美日韩vr在线| 疯狂做受xxxx高潮欧美日本| 国产欧美精品日韩| 国产成+人+综合+亚洲欧美丁香花| 欧美裸体男粗大视频在线观看| 日韩av一卡二卡| 亚洲精品电影网站| 欧美中文字幕视频在线观看| 亚洲精品电影网站| 日韩在线免费视频| 色综合伊人色综合网站| 日本精品视频在线观看| 亚洲欧美日韩中文在线| 高清亚洲成在人网站天堂| 欧美中文字幕在线观看| 精品久久久国产精品999| 精品无人区太爽高潮在线播放| 亚洲国产美女精品久久久久∴| 伊人男人综合视频网| 国产精品高潮呻吟久久av无限| 亚洲色在线视频| 欧美成人全部免费| 国产午夜精品视频| 国产自产女人91一区在线观看| 欧美二区乱c黑人| 亚洲国产天堂网精品网站| 日韩成人久久久| 欧美黑人又粗大| 久久九九国产精品怡红院| 成人网址在线观看| 日本精品视频在线| 97久久国产精品| 精品激情国产视频| 最近2019中文字幕大全第二页| 日韩精品极品在线观看播放免费视频| 日韩国产精品一区| 另类视频在线观看| 亚洲精品国产福利| 日韩一区二区av| 欧美中文字幕在线视频| 国产精品九九久久久久久久| 成人信息集中地欧美| 日韩网站免费观看| 91亚洲国产成人精品性色| 91av网站在线播放| 国产欧美日韩中文| www.日韩视频| 国产婷婷97碰碰久久人人蜜臀| 青青草原成人在线视频| 亚洲一级免费视频| 国内精品在线一区| 亚洲天堂av综合网| 久久夜色精品国产欧美乱| 538国产精品一区二区在线| 欧美中文字幕第一页| 自拍视频国产精品| 日韩精品免费综合视频在线播放| 久久久久久尹人网香蕉| 成人综合国产精品| 欧美另类第一页| 色悠悠国产精品| 青青精品视频播放| 欧美精品18videos性欧| 97国产精品视频人人做人人爱| 91视频国产高清| 国产主播喷水一区二区| 亚洲人成电影在线播放| 国产精品国语对白| 国产一区二区免费| 国产成人小视频在线观看| 日韩精品在线视频美女| 91精品国产91久久久久久不卡| 亚洲第一中文字幕在线观看| 欧美视频在线观看免费| 色婷婷成人综合| 亚洲精品av在线播放| 国产精品久久久久久久久男| 国产精品91视频| 91a在线视频| 久久久久久久一区二区三区| 欧美日韩爱爱视频| 国产拍精品一二三| 色综合久久天天综线观看| 欧美一级高清免费| 中文字幕欧美日韩在线| 揄拍成人国产精品视频| 成人福利视频在线观看| 欧美精品18videosex性欧美| 欧美一级大片在线观看| 精品国产福利视频| 97在线观看视频| 亚洲视频精品在线|