1. create.js

#include
"../entry/artboard.js";
#include
"judgement.js";


function create_color(color_type, c, m, y, k, ptname, ptinit) {

/**
* color_type 类型 (非必填 '','cmyk','pt','nocolor' 四选一)
* c, m, y, k, ptname, ptinit 非必填
*
* 例子
* 创建默认色是个黑色
* create_color()
* 创建黑色
* create_color('',0,0,0,100)
* 创建红色
* create_color('',0,100,100,0)
* 创建无色
* create_color('nocolor')
* 创建专色 专色名称 die 专色百分比 100 专色颜色 蓝色
* create_color('pt', 100, 0, 0, 0,'die',100)
* 创建套版色
* create_color('reg')
*
*/
if (color_type == 'nocolor') return new NoColor();
if (color_type == 'reg') {

regColor = new SpotColor();
regColor.spot = doc.spots[doc.spots.length-1];
return regColor;
}

if (color_type == '' || color_type == 'cmyk') {
var cmykColor = new CMYKColor();//创建颜色变量
cmykColor.cyan = c;//设置颜色的值
cmykColor.magenta = m;//设置颜色的值
cmykColor.yellow = y;//设置颜色的值
cmykColor.black = k;//设置颜色的值
return cmykColor;
}

if (color_type == 'pt') {
var newSpot = undefined;
try {
newSpot = doc.spots.getByName(ptname);
} catch (e) {
newSpot = doc.spots.add();
}
newSpot.name = ptname;
newSpot.colorType = ColorModel.SPOT;
newSpot.color = create_color('', c, m, y, k);
var newSpotColor = new SpotColor();
newSpotColor.spot = newSpot;
newSpotColor.tint = ptinit;
return newSpotColor;
}

return create_color('', 0, 0, 0, 100)
}


function create_line(canvas, x1, y1, x2, y2, line_width, position, stroke_color) {
/**
* 两点确定一个坐标
* x1 (必填)
* y1 (必填)
* x2 (必填)
* y2 (必填)
* line_width 线宽 (非必填 默认0.1mm)
* position 位置[relative>相对|abs>绝对] (非必填 默认relative>相对)
* stroke_color:描边颜色 (非必填 默认黑色)
*
* 例子
* create_line('',0,0,30,30,'','abs')
* create_line('',0,0,30,0)
*/
canvas = is_empty(canvas) ? doc : canvas;
line_width = is_empty(line_width) ? 0.1 * pt : line_width
position = is_empty(position) ? 'relative' : position
//在当前文档添加一条线段
line = canvas.pathItems.add();
//设置他的坐标
if (position == 'relative') {
line.setEntirePath([[x1, y1], [x1 + x2, y1 - y2]]);
} else {
line.setEntirePath([[x1, y1], [x2, y2]]);
}
line.strokeWidth = line_width; //指定标线宽度
//设置他的颜色
if (line_width > 0 && (!is_empty(stroke_color))) {
stroke_color = is_empty(stroke_color) ? create_color() : stroke_color
line.strokeColor = stroke_color;
}
obj_evenodd(canvas, line)
return line;
}

function create_rect(canvas, x, y, width, height, line_width, expand_size, fill_color, stroke_color) {
/**
* 添加一个矩形
* (x,y) 左上角坐标(必填)
* (width,height)尺寸(必填)
* line_width 描边(默认0)
* expand_size 外扩尺寸(默认0)
* fill_color 填充色(默认随系统设置)
* stroke_color 描边色(默认随系统设置)
*
* 例子
* 最简单的例子
* create_rect('',0, 0, 100, 100)
* 最全的例子
* rect = create_rect('',0, 0, 100, 100,0.1,0,create_color('',100,0,0,0),create_color('',0,100,0,0))
*
*/
if (x == undefined || y == undefined || width == undefined || height == undefined) return undefined
canvas = is_empty(canvas) ? doc : canvas;
line_width = is_empty(line_width) ? 0 : line_width
expand_size = is_empty(expand_size) ? 0 : expand_size
// fill_color = is_empty(fill_color) ? create_color() : fill_color
// stroke_color = is_empty(stroke_color) ? create_color() : stroke_color
rect = canvas.pathItems.rectangle(y + expand_size, x - expand_size, width + expand_size * 2, height + expand_size * 2);
// 设置描边宽度
rect.strokeWidth = line_width;
// 设置描边颜色
if (line_width > 0 && !is_empty(stroke_color)) rect.strokeColor = stroke_color;
// 设置填充颜色
if (!is_empty(fill_color)) rect.fillColor = fill_color;
obj_evenodd(canvas, line)
return rect;
}

function create_rect_with_artboard(canvas, x, y, width, height, line_width, expand_size, fill_color, stroke_color, artboard) {
/**
* 添加一个矩形
* (x,y) 左上角坐标(必填)
* (width,height)尺寸(必填)
* line_width 描边(默认0)
* expand_size 外扩尺寸(默认0)
* fill_color 填充色(默认随系统设置)
* stroke_color 描边色(默认随系统设置)
*
* 例子
* 最简单的例子
* add_rect('',0, 0, 100, 100)
* 最全的例子
* rect = add_rect('',0, 0, 100, 100,0.1,0,create_color('',100,0,0,0),create_color('',0,100,0,0))
*
*/
if (x == undefined || y == undefined || width == undefined || height == undefined) return undefined
artboard = is_empty(artboard)?new Artboard():artboard

width = width == 'artboard_width' ? artboard.width : width
height = height == 'artboard_height' ? artboard.height : height
canvas = is_empty(canvas) ? doc : canvas;
line_width = is_empty(line_width) ? 0 : line_width
expand_size = is_empty(expand_size) ? 0 : expand_size
// fill_color = is_empty(fill_color) ? create_color() : fill_color
// stroke_color = is_empty(stroke_color) ? create_color() : stroke_color
rect = canvas.pathItems.rectangle(artboard.top - y + expand_size, artboard.left + x - expand_size, width + expand_size * 2, height + expand_size * 2);
// 设置描边宽度
rect.strokeWidth = line_width;
// 设置描边颜色
if (line_width > 0 && !is_empty(stroke_color)) rect.strokeColor = stroke_color;
// 设置填充颜色
if (!is_empty(fill_color)) rect.fillColor = fill_color;
obj_evenodd(canvas, rect)
return rect;
}

function create_text(canvas, content, font_name, font_size, fill_color, outline) {
/**
* content (非必填,默认hello world)
* font_name (非必填,默认微软雅黑)
* font_size (非必填,默认12)
* fill_color (非必填,默认黑色)
* outline (非必填,默认false)
* 例子
* create_text()
* t = create_text('你在就好了','MicrosoftYaHei',24,create_color('pt',100,100,0,0,'cut',100),true)
*/
canvas = is_empty(canvas) ? doc : canvas;
var text1 = canvas.textFrames.add();
content = is_empty(content) ? 'hello world' : content
font_name = is_empty(font_name) ? "MicrosoftYaHei" : font_name
font_size = is_empty(font_size) ? 12 : font_size
fill_color = is_empty(fill_color) ? create_color() : fill_color
outline = is_empty(outline) ? false : outline
//文本的内容
text1.contents = content;
//给文本填个颜色
text1.textRange.characterAttributes.fillColor = fill_color;
//设置文本的字体大小
text1.textRange.characterAttributes.size = font_size;
//设置文本的字体 为微软雅黑
try {

text_font = textFonts.getByName(font_name)
} catch (e) {
try {
text_font = textFonts[font_name]
} catch (e) {
text_font = textFonts.getByName('MicrosoftYaHei')
}
}
text1.textRange.characterAttributes.textFont = text_font;
if (outline) {
text1 = text1.createOutline();
obj_evenodd(canvas, text1)
}
return text1;
}

function obj_evenodd(canvas, obj) {
if ('CompoundPathItem' == canvas.typename) obj.evenodd = true
}

2.file.js

#include "judgement.js";
function file_save_pdf(dest,opt) {
/**
* 保存pdf
* dest 目录 (非必填)
* opt 选项 (非必填 说几个就知道是啥了)
* [Illustrator 默认值],[印刷质量],[最小文件大小]
* 使用例子
* 默认值保存 (原路径)
* file_save_pdf()
* 自定义的3保存 (原路径)
* file_save_pdf('','3')
* 自定义的3保存 (指定路径)
* file_save_pdf('C:/Users/Administrator/Desktop/1.pdf','3')
*/
dest = is_empty(dest)?get_pdf_name():dest;
opt = is_empty(opt)?'[Illustrator 默认值]':opt;
saveOpts = new PDFSaveOptions();
saveOpts.pDFPreset = opt;
doc.saveAs(new File(dest), saveOpts);
}

function file_words_save_txt(file_name,words) {
/**
* 文本存txt
* 使用例子
* file_words_save_txt('','dj\r\nll简单\r\n123');
* file_words_save_txt('C:/Users/Administrator/Desktop/1.txt','dj\r\nll简单\r\n123')
*/
file_name = is_empty(file_name)?get_txt_name():file_name
f = new File(file_name);//文件位置
f.open('w');
f.write(words);
f.close();
}

function file_list_save_txt(file_name,list_) {
/**
* 列表存txt
* 使用例子
* file_list_save_txt('',['123','kk空间的']);
* file_list_save_txt('c:/Users/Administrator/Desktop/1.txt',['123','kk空间的'])
*/
file_name = is_empty(file_name)?get_txt_name():file_name
f = new File(file_name);
f.open('w');
for(i=0;i<list_.length;i++){
f.write(list_[i]+'\r\n');
}
f.close();
}

function get_pdf_name() {
/**
* 获取文pdf路径
* 返回 C:\Users\Administrator\Desktop\hd1024.pdf
*/
return get_parent()+'/'+get_name_no_suffix()+'.pdf';
}
function get_ai_name() {
/**
* 获取文ai路径
* 返回 C:\Users\Administrator\Desktop\hd1024.ai
*/
return get_parent()+'/'+get_name_no_suffix()+'.ai';
}
function get_txt_name() {
/**
* 获取文ai路径
* 返回 C:\Users\Administrator\Desktop\hd1024.ai
*/
return get_parent()+'/'+get_name_no_suffix()+'.txt';
}
function get_name_no_suffix() {
/**
* 获取文件名 无后缀
* 返回 hd1024
*/
n = decodeURI(doc.fullName.name);
return n.substring(0, n.lastIndexOf('.'));
}
function get_name() {
/**
* 获取文件名
* 返回 hd1024.ai(也有可能 hd1024.pdf | hd1024.eps)
*/
return decodeURI(doc.fullName.name);
}

function get_parent() {
/**
* 获取父路径
* 返回 C:\Users\Administrator\Desktop
*/
return decodeURI(doc.fullName.parent);
}

3.judgement.js

function is_empty(obj) {
/**
* 判断是不是空
*/
return obj == undefined || obj == '';
}

4. layer.js

#include "judgement.js";
var doc = app.activeDocument;
function obj_move_to_active_layer(obj, layer) {
/**
* obj (必填)ai里面的对象
* layer (必填)图层
* 例子
* sels = doc.selection;
* obj_move_to_active_layer(sels[0],doc.activeLayer)
*/
if (is_empty(obj))return;
obj.move(layer, ElementPlacement.PLACEATEND);
}
function objs_move_to_active_layer(objs, layer) {
/**
* objs (必填)ai里面的对象
* layer (必填)图层
* objs_move_to_active_layer(doc.selection,doc.activeLayer)
*/
if (is_empty(objs))return;
for (i = 0; i < objs.length; i++) {
obj_move_to_active_layer(objs[i], layer);
}
}
function layer_all_selected(layer) {
/**
* 图层所有内容被选中
* layer 图层 (必填)
*
* 例子
* 最上面的所有内容选中
* layer_all_selected(doc.layers[0])
*/
layer.hasSelectedArtwork = true
}
function create_layer(layer_name) {
/**
* layer_name 图层名称 (非必填 默认 layer)
* 新建图层
* 如果图层已经存在就返回该图层并且激活该图层
*
* 例子
* create_layer()
* create_layer('图层名称')
*/
try{
return doc.layers.getByName(layer_name)
}catch(e){
layer_name = is_empty(layer_name) ? 'layer' : layer_name;
layer_ = doc.layers.add();
layer_.name = layer_name;
return layer_;
}
}

5.list.js

var doc = app.activeDocument;
function list_duplicate(objs) {
/**
* 列表克隆一份
* objs (必填)
* list_duplicate(doc.selection)
*/
if (is_empty(objs)) return;
var list_ = new Array();
for (i = 0; i < objs.length; i++) {
newitem = objs[i].duplicate();
list_.push(objs[i])
}
return list_;
}
function list_duplicate_and_selected(objs) {
/**
* 列表克隆一份并且选中
*/
var list_ = new Array();
for (i = 0; i < objs.length; i++) {
newitem = objs[i].duplicate();
newitem.selected=true;
list_.push(objs[i])
}
return list_;
}
function list_to_group(objs, group_item) {
/**
* 列表内图形 群组
*/
group_item = is_empty(group_item)?doc.groupItems.add():group_item;
for (i = 0; i < objs.length; i++)objs[i].move(group_item, ElementPlacement.INSIDE);
}

6.set.js

function set_color_fill(obj, color) {
/**
* 填充颜色
*/
if(obj == undefined) return
if(obj.fillColor == undefined) return
if(color == undefined) return
if(color == undefined && obj.fillColor == undefined) return
obj.fillColor = color;
return obj;
}
function set_color_stroke(obj, color) {
/**
* 描边颜色
*/
if(obj == undefined) return
if(obj.strokeColor == undefined) return
if(color == undefined) return
obj.strokeColor = color
return obj;
}
function set_position_xy(obj, x, y) {
/**
* 移动到 x y
*/
if (obj == undefined || x == undefined || y == undefined) return
obj.left = x;
obj.top = y;
return obj;
}
function set_size_wh(obj, w, h) {
/**
* 设置尺寸 w h
*/
if (w == undefined || w == undefined) return
obj.width = w;
obj.height = h;
return obj;
}
function set_selection_null() {
/**
* 取消选择
*/
doc.selection = undefined;
}

7.artboard.js

var doc = app.activeDocument;
var pt = 72 / 25.4
function Artboard(index) {

/**
* index 下标 (非必填 默认当前画板)
* 画板类用于获取画板的属性
* 宽度,高度,坐标(上下左右垂直中,水平中),简单的信息
*
* 例子
* artboard = Artboard()
* artboard = Artboard(0)
* 打印信息
* alert(artboard.info)
*/
index = index == undefined ? doc.artboards.getActiveArtboardIndex() : index
var abBounds = doc.artboards[index].artboardRect;
this.width = abBounds[2] - abBounds[0];
this.height = abBounds[1] - abBounds[3];
this.left = abBounds[0];
this.top = abBounds[1];
this.bottom = abBounds[3];
this.right = abBounds[2];
this.centerX = this.left + this.width / 2;
this.centerY = this.bottom + this.height / 2;
this.info = '当前是第' + index + '个页面\n页面尺寸为' + this.width / pt + 'x' + this.height / pt + ' mm'
return this;
}

测试代码

// 创建的函数 比如 矩形 文本 线条
#include
"utils/create.js";
// 文件的函数 比如 获取文件名
#include
"utils/file.js";
// 判断的函数
#include
"utils/judgement.js";
// 图层函数 比如 创建图层
#include
"utils/layer.js";
// 列表函数 比如 复制列表
#include
"utils/list.js";
// 修改函数 比如 修改坐标 尺寸
#include
"utils/set.js";

// 以下是逐一使用

info2 = ''
/**
* 1. artboard.js
* 这里没有引用 artboard.js
* 因为 create.js 里面包含了 此js
* 所以 无需引用
*/
artboard_info = '以下是artboard.js\n'
artboard = Artboard()
artboard_info += 'left:' + artboard.left + '\n';
artboard_info += 'top:' + artboard.top + '\n';
artboard_info += 'right:' + artboard.right + '\n';
artboard_info += 'bottom:' + artboard.bottom + '\n';
artboard_info += 'width:' + artboard.width + '\n';
artboard_info += 'height:' + artboard.height + '\n';
artboard_info += 'centerX:' + artboard.centerX + '\n';
artboard_info += 'centerY:' + artboard.centerY + '\n';
info2 += artboard_info+'\n\n';

/**
* 2. file.js
*
*/
file_info = '以下是file.js\n'
//2.1 保存文件
file_save_pdf('C:/Users/Administrator/Desktop/file_save_pdf.pdf')
//2.2 文本存txt
file_words_save_txt('C:/Users/Administrator/Desktop/file_words_save_txt.txt', 'dj\r\nll简单\r\n123')
//2.3 列表存txt
file_list_save_txt('c:/Users/Administrator/Desktop/file_list_save_txt.txt', ['中文CPC', 'http://www.cnprint.org/bbs/'])
//2.4 获取pdf路径
file_info += 'get_pdf_name:' + get_pdf_name() + '\n'
//2.5 获取ai路径
file_info += 'get_ai_name:' + get_ai_name() + '\n'
//2.6 获取txt路径
file_info += 'get_txt_name:' + get_txt_name() + '\n'
//2.7 获取文件名称不带后缀
file_info += 'get_name_no_suffix:' + get_name_no_suffix() + '\n'
//2.8 获取文件名称
file_info += 'get_name:' + get_name() + '\n'
//2.9 获取父路径
file_info += 'get_parent:' + get_parent() + '\n'
info2 += file_info;

/**
* 3. layer.js
*
*/
/**
sels = doc.selection;
//3.1 单个图形移动到指定图层
obj_move_to_active_layer(sels[0],doc.activeLayer)
//3.2 一堆(列表)图形移动到指定图层
objs_move_to_active_layer(sels,doc.layers[0])
//3.3 选择 指定图层 所有内容
layer_all_selected(doc.activeLayer)
//3.4 创建图层
create_layer()
*/

/**
* 4. list.js
*
*/

/**
sels = doc.selection;
// 4.1 复制列表 返回一个新列表
new_list = list_duplicate(sels);
// 4.2 复制列表 返回一个新列表 并且选中 新的列表
new_list = list_duplicate_and_selected(sels);

// 4.3 列表群组
list_to_group(sels);
*/

/**
* 5. set.js
*/

/**

sels = doc.selection;
// 填个色
set_color_fill(sels[0],create_color())
// 填个描边色
set_color_stroke(sels[0],create_color())
// 设置坐标
set_position_xy(sels[0],20,20)
// 设置尺寸
set_size_wh(sels[0],20,20)
// 取消选择
set_selection_null();

*/


/**
* 6. create.js
*/
sels = doc.selection;
// 6.1 创建颜色
color_red = create_color('', 0, 100, 100, 0);
if (sels.length > 0) {


set_color_fill(sels[0], color_red)

color_black = create_color('', 0, 100, 100, 0);
set_color_fill(sels[0], color_black)

color_485C = create_color('pt', 0, 100, 95, 0, '485C', 100);
set_color_fill(sels[0], color_485C)

color_485C_50 = create_color('pt', 0, 100, 95, 0, '485C', 50);
set_color_fill(sels[0], color_485C_50)

color_nocolor = create_color('nocolor');
set_color_fill(sels[0], color_nocolor)

color_reg = create_color('reg');
set_color_fill(sels[0], color_reg)

}


//6.2 创建线条
// 温馨提示 ai的 原点在 画板的左上角
/**
* 6.2.1
* 1.在 doc下创建 线条
* 2.第一点绝对坐标 (10,10)
* 3.第二点绝对坐标 (30,30)
* 4.线条粗细 0.1mm
* 5.第二点的坐标是 绝对坐标
* 6.颜色为红色
*/
create_line(doc, 10, 10, 30, 30, 0.1 * pt, 'abs', color_red)
//第二点的坐标(20,5)[相对于第一点]
create_line(doc, 0, 0, 20, 5, 0.1 * pt, 'relative', color_red)
//此函数最简单的写法 为啥可以这样写 因为设置了默认值
create_line('', 10, 10, 30, 0)

/**
* 6.2.2
* 1.在一开始创建了一个 artboard
* 2.配合 画板 使用 创建线条
* 3.下面例子 在画板的左下教画脚线
* 4.并且是群组的
*/
g = doc.groupItems.add();
jx = 3 * pt
create_line(g, artboard.left - jx, artboard.bottom, -jx, 0, 0.1 * pt, '', create_color('reg'));
create_line(g, artboard.left, artboard.bottom - jx, 0, jx, 0.1 * pt, '', create_color('reg'));
create_line(g, artboard.left - jx, artboard.bottom - jx, -jx, 0, 0.1 * pt, '', create_color('reg'));
create_line(g, artboard.left - jx, artboard.bottom - jx, 0, jx, 0.1 * pt, '', create_color('reg'));

/**
* 6.2.3
* 1.在一开始创建了一个 artboard
* 2.配合 画板 使用 创建线条
* 3.下面例子 在画板的右下教画脚线
* 4.并且组合的
*/
c = doc.compoundPathItems.add();
create_line(c, artboard.right + jx, artboard.bottom, jx, 0, 0.1 * pt, '', create_color('reg'));
create_line(c, artboard.right, artboard.bottom - jx, 0, jx, 0.1 * pt, '', create_color('reg'));
create_line(c, artboard.right + jx, artboard.bottom - jx, jx, 0, 0.1 * pt, '', create_color('reg'));
create_line(c, artboard.right + jx, artboard.bottom - jx, 0, jx, 0.1 * pt, '', create_color('reg'));


//6.3 创建矩形
create_rect('', 0, 0, 5 * pt, 10 * pt, 0.1, 0, create_color('', 100, 0, 100, 0), create_color('nocolor'))
/**
* 6.3.1 创建10x10mm矩形 且 四周放大 3mm
*/
create_rect('', 10 * pt, 0, 10 * pt, 10 * pt, 0.1, 3 * pt, create_color('', 0, 0, 100, 0), create_color('nocolor'))

/**
* 6.3.1 创建10x10mm矩形 且 四周缩小 3mm
*/
create_rect('', 30 * pt, 0, 10 * pt, 10 * pt, 0.1, -3 * pt, create_color('', 0, 0, 100, 0), create_color('nocolor'))

//6.4 创建跟画板相关的矩形 (开挂了)
line_width = 0.1 * pt;
/**
* 在 当前画板创建一个矩形
*/
create_rect_with_artboard('', 0, 0, 50, 50, line_width, 0, regColor, create_color('nocolor'), new Artboard())

/**
* 在 第二个画板 创建一个矩形
*/
create_rect_with_artboard('', 0, 0, 50, 50, line_width, 0, regColor, create_color('nocolor'), new Artboard(1))

/**
* 在每个画板创建一个矩形
* 并且 尺寸等于画板
*/
for (i = 0; i < doc.artboards.length; i++) {
create_rect_with_artboard('', 0, 0, 'artboard_width', 'artboard_height', line_width, 0, create_color('nocolor'), create_color('', 0, 100, 0, 0), new Artboard(i))
}

/**
* 在每个画板创建一个矩形
* 并且 尺寸小画板3
*/
for (i = 0; i < doc.artboards.length; i++) {
create_rect_with_artboard('', 0, 0, 'artboard_width', 'artboard_height', line_width, -3 * pt, create_color('nocolor'), create_color('', 0, 100, 0, 0), new Artboard(i))
}

/**
* 在每个画板创建一个矩形
* 并且 尺寸大画板3
*/
for (i = 0; i < doc.artboards.length; i++) {
create_rect_with_artboard('', 0, 0, 'artboard_width', 'artboard_height', line_width, 3 * pt, create_color('nocolor'), create_color('', 0, 100, 0, 0), new Artboard(i))
}


/**
* 在每个画板创建一个矩形
* 并且 尺寸 较 画板 0 3 3 3
*/
for (i = 0; i < doc.artboards.length; i++) {
r1 = create_rect_with_artboard('', 0, 0, 'artboard_width', 'artboard_height', line_width, 3 * pt, create_color('nocolor'), create_color('', 0, 100, 0, 0), new Artboard(i))
set_size_wh(r1, r1.width - 3 * pt, r1.height)
r1.left += 3 * pt;
}

// 6.5 创建文本
/**
* 创建一个文本 并且转曲
* 完了 在改成蓝色
*/
t = create_text('', '你在就好了', 'MicrosoftYaHei', 24, create_color('pt', 100, 100, 0, 0, 'cut', 100), true)
set_color_fill(t, create_color('', 100, 0, 0, 0))
/**
* 创建一个文本
* 完了 再移动到 画板 3 并且居中
*/
t2 = create_text('', '你在就好了', 'MicrosoftYaHei', 24, create_color('pt', 100, 100, 0, 0, 'cut', 100))
artboard = new Artboard(2)
set_position_xy(t2, artboard.centerX - t2.width / 2, artboard.centerY + t2.height / 2)

t3 = create_text('', info2, 'MicrosoftYaHei', 24, create_color('pt', 100, 100, 0, 0, 'cut', 100))
set_position_xy(t3,100,100)