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

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

menu();

function menu() {
    var res = "dialog {text: '包袋线', margins: [10,5,10,5], spacing: 8, \n\tPositive: Group {\n\t\tsText: StaticText {text: '正面长:', },\n\t\teText: EditText {preferredSize: [60,20], text: 300, active:1},\n\t\t},\n\tSide: Group {\n\t\tsText: StaticText {text: '侧面宽:', },\n\t\teText: EditText {preferredSize: [60,20], text: '80', },\n\t\t},\n\tBag: Group {\n\t\tsText: StaticText {text: '包袋高:', },\n\t\teText: EditText {preferredSize: [60,20], text: '400', },\n\t\t},\n\tSticky: Group {\n\t\tsText: StaticText {text: '粘口宽:', },\n\t\teText: EditText {preferredSize: [60,20], text: '20', },\n\t\t},\n\tFlap: Group {\n\t\tsText: StaticText {text: '勒口高:', },\n\t\teText: EditText {preferredSize: [60,20], text: '50', },\n\t\t},\n\tBottom: Group {\n\t\tsText: StaticText {text: '下底高:', },\n\t\teText: EditText {preferredSize: [60,20], text: '65', },\n\t\t},\n    Bleed: Group {\n\t\tsText: StaticText {text: '出血宽:', },\n\t\teText: EditText {preferredSize: [60,20], text: '3', },\n\t\t},\n    Eye: Group {\n\t\tsText: StaticText {text: '扣眼距:', },\n\t\teText: EditText {preferredSize: [60,20], text: '110', },\n\t\t},\n\tUnit: Group {\n\t\tsText: StaticText {text: '单  位:', },\n\t\tddL: DropDownList {preferredSize: [60,20], properties:{items:['Pt','派卡','英寸','毫米','厘米','Ha','像素']}, },\n\t\t},\n    eText: EditText {preferredSize: [120,80], properties:{multiline:true} },\n\tcom: Group {\n\t\tBtn: Button {preferredSize: [55,20], text: '确定'},\n\t\tBtn1: Button {preferredSize: [55,20], text: '取消', properties:{name:'cancel'},},\n\t\t},\n\t}";
    bags = new Window(res);
    bags.Unit.ddL.selection = bags.Unit.ddL.items[3];
    var conv = 2.83464566929134;
    bags.eText.text = "大2开手提袋:330mm(长)    90mm(侧面)   450mm(高)\n正2开手提袋:280mm(长)     80mm(侧面)   420mm(高)\n大3开手提袋:250mm(长)     80mm(侧面)   350mm(高)\n正3开手提袋:240mm(长)     80mm(侧面)   290mm(高)\n......";
    var b = {
        positive: Number(bags.Positive.eText.text) * conv,
        side: Number(bags.Side.eText.text) * conv,
        bag_h: Number(bags.Bag.eText.text) * conv,
        sticky: Number(bags.Sticky.eText.text) * conv,
        flap: Number(bags.Flap.eText.text) * conv,
        bottom: Number(bags.Bottom.eText.text) * conv,
        bleed: Number(bags.Bleed.eText.text) * conv,
        eye: Number(bags.Eye.eText.text) * conv,
        all_w: function() {
            return ((this.positive + this.side) * 2) + this.sticky;
        },
        all_h: function() {
            return this.flap + this.bag_h + this.bottom;
        }
    };
    bags.Unit.ddL.onChange = function() {
        conv = unitConv(bags.Unit.ddL.selection);
        bags.Positive.eText.text = b.positive / conv;
        bags.Side.eText.text = b.side / conv;
        bags.Bag.eText.text = b.bag_h / conv;
        bags.Sticky.eText.text = b.sticky / conv;
        bags.Flap.eText.text = b.flap / conv;
        bags.Bottom.eText.text = b.bottom / conv;
        bags.Bleed.eText.text = b.bleed / conv;
        bags.Eye.eText.text = b.eye / conv;
    };
    bags.Positive.eText.onChange = function() {
        b.positive = Number(this.text) * conv;
    };
    bags.Side.eText.onChange = function() {
        b.side = Number(this.text) * conv;
    };
    bags.Side.eText.onChanging = function() {
        bags.Bottom.eText.text = Number(this.text) - (42.5196850393701 / conv);
    };
    bags.Bag.eText.onChange = function() {
        b.bag_h = Number(this.text) * conv;
    };
    bags.Sticky.eText.onChange = function() {
        b.sticky = Number(this.text) * conv;
    };
    bags.Flap.eText.onChange = function() {
        b.flap = Number(this.text) * conv;
    };
    bags.Bottom.eText.onChange = function() {
        b.bottom = Number(this.text) * conv;
    };
    bags.Bleed.eText.onChange = function() {
        b.bleed = Number(this.text) * conv;
    };
    bags.Eye.eText.onChange = function() {
        b.eye = Number(this.text) * conv;
    };
    bags.com.Btn.onClick = function() {
        Bags(b);
        bags.close();
    };
    bags.show();
}

function Bags(b) {
    var doc = app.activeDocument;
    W = b.all_w();
    H = b.all_h();
    newBlack = new GrayColor();
    newBlack.gray = 100;
    creat_layer();

    function creat_layer() {
        var layercheck = 0;
        for (var u = doc.layers.length - 1; u >= 0; u--) {
            var targetLayer = doc.layers[u];
            var layerName = new String(targetLayer.name);
            if (layerName.indexOf("包袋线") == 0) {
                speclayer = doc.layers[u];
                doc.layers[0].visible = true;
                layercheck = 1;
            }
        }
        if (layercheck == 0) {
            speclayer = doc.layers.add();
            speclayer.name = "包袋线";
        }
    }
    speclayer.visible = true;
    speclayerlocked = false;
    var objGroup = speclayer.groupItems.add();
    var rect_GP = objGroup.groupItems.add();
    var line_GP = objGroup.groupItems.add();
    if (app.version.slice(0, 2) >= 14) {
        var padBox = doc.pathItems.rectangle(0, 0, W, H, false);
        padBox.stroked = false;
        doc.artboards[0].artboardRect = padBox.visibleBounds;
        padBox.remove();
    }
    rectangle(rect_GP, b.bleed, -b.bleed, W + (2 * b.bleed), H + (2 * b.bleed));

    function recgroup(bp, bh) {
        rectangle(rect_GP, bp, 0, b.sticky, bh);
        rectangle(rect_GP, bp, b.sticky, b.positive, bh);
        rectangle(rect_GP, bp, b.sticky + b.positive, b.side, bh);
        rectangle(rect_GP, bp, b.sticky + b.positive + b.side, b.positive, bh);
        rectangle(rect_GP, bp, b.sticky + b.side + (b.positive * 2), b.side, bh);
    }
    recgroup(0, b.flap);
    recgroup(-b.flap, b.bag_h);
    recgroup(-b.flap - b.bag_h, b.bottom);

    function ellipseGroup(left) {
        ellipse(rect_GP, -b.flap + 77.9527559055118, left);
        ellipse(rect_GP, -b.flap - 77.9527559055118, left);
    }
    ellipseGroup(b.sticky + ((b.positive - b.eye) / 2));
    ellipseGroup(b.sticky + ((b.positive + b.eye) / 2));
    ellipseGroup(b.sticky + b.positive + b.side + ((b.positive - b.eye) / 2));
    ellipseGroup(b.sticky + b.positive + b.side + ((b.positive + b.eye) / 2));
    line();

    function line() {
        var line = line_GP.pathItems.add();
        setPathStyle(line, [5, 3]);
        line.setEntirePath([
            [(b.sticky + b.positive) - b.bottom, -H],
            [b.sticky + b.positive + (b.side / 2), (b.bottom + (b.side / 2)) - H],
            [b.sticky + b.positive + b.bottom + b.side, -H]
        ]);
        line.duplicate().setEntirePath([
            [0, (b.bottom + b.sticky) - H],
            [b.bottom + b.sticky, -H]
        ]);
        line.duplicate().setEntirePath([
            [b.sticky + b.positive + (b.side / 2), -H],
            [b.sticky + b.positive + (b.side / 2), 0]
        ]);
        line.duplicate().setEntirePath([
            [(b.sticky + (b.positive * 2) + b.side) - b.bottom, -H],
            [b.sticky + (b.positive * 2) + ((b.side * 3) / 2), (b.bottom + (b.side / 2)) - H],
            [b.sticky + (b.positive * 2) + (b.side * 2), b.bottom - H]
        ]);
        line.duplicate().setEntirePath([
            [b.sticky + (b.positive * 2) + ((b.side * 3) / 2), -H],
            [b.sticky + (b.positive * 2) + ((b.side * 3) / 2), 0]
        ]);
        line.duplicate().setEntirePath([
            [b.sticky + b.positive + (b.side / 2), (b.bottom + (b.side / 2)) - H],
            [b.sticky + (b.positive * 2) + ((b.side * 3) / 2), (b.bottom + (b.side / 2)) - H]
        ]);
    }
}

function rectangle(parent, y, x, w, h) {
    var rect = parent.pathItems.rectangle(y, x, w, h);
    setPathStyle(rect, []);
}

function ellipse(parent, top, left) {
    var elli = parent.pathItems.ellipse(top, left, 14.1732283464567, 14.1732283464567, 0, 1);
    setPathStyle(elli, []);
}

function setPathStyle(path, Dash) {
    path.filled = false;
    path.stroked = true;
    path.strokeColor = newBlack;
    path.strokeWidth = 0.25;
    path.strokeOverprint = true;
    path.strokeDashes = Dash;
}

function unitConv(UN) {
    switch (UN) {
        case bags.Unit.ddL.items[0]:
            conv = 1;
            break;
        case bags.Unit.ddL.items[1]:
            conv = 12;
            break;
        case bags.Unit.ddL.items[2]:
            conv = 72;
            break;
        case bags.Unit.ddL.items[3]:
            conv = 2.83464566929134;
            break;
        case bags.Unit.ddL.items[4]:
            conv = 28.3464566929134;
            break;
        case bags.Unit.ddL.items[5]:
            conv = 0.709;
            break;
        case bags.Unit.ddL.items[6]:
            conv = 1;
            break;
        default:

    }
    return conv;
}

  合理的脚本代码可以有效的提高工作效率,减少重复劳动。

文章引用至 作者知了-联系方式1

文章引用至 作者知了-联系方式2

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355

推荐阅读更多精彩内容