illustrator插件--常用功能开发--移除叠印属性--js脚本开发--AI插件

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

var Clr = 0;
var Lock = 0;
var Count = 0;
if (documents.length > 0) {
    doc = activeDocument;
    ans = confirm("你想要删除叠印吗?");
    if (ans == true) {
        Clr = 1
    }
    if (doc.selection.length) {
        sel = doc.selection;
        for (var i = 0; i < sel.length; i += 1) {
            sel[i].selected = false
        }
        for (var i = 0; i < sel.length; i += 1) {
            engine(sel[i])
        }
    } else {
        ans = confirm("检测到有锁定和隐藏的对象,需要包含锁定和隐藏的对象?");
        if (ans == true) {
            Lock = 1
        }
        engine(doc);
    }
    alert("处理对象 : " + Count);
}

function engine(xObj) {
    tname = xObj.typename;
    if (tname == "GroupItem" || tname == "Document") {
        obj = xObj.groupItems;
        for (var i = 0; i < obj.length; i += 1) {
            engine(obj[i])
        }
        selOPs(xObj.pathItems, 0);
        selOPs(xObj.textFrames, 1);
        for (var i = 0; i < xObj.compoundPathItems.length; i += 1) {
            selOPs(xObj.compoundPathItems[i].pathItems, 0);
        }
    } else {
        if (tname == "PathItem") {
            selOP1(xObj, 0)
        } else if (tname == "TextFrame") {
            selOP1(xObj, 1)
        } else {
            if (tname == "CompoundPathItem") {
                selOPs(xObj.pathItems, 0)
            }
        }
    }
}

function selOPs(itm, sw) {
    for (var i = 0; i < itm.length; i += 1) {
        selOP1(itm[i], sw)
    }
}

function selOP1(itm, sw) {
    if (itm.editable == false && Lock == 0) {
        return;
    }
    switch (sw) {
        case 0:
            if (itm.fillOverprint == true || itm.strokeOverprint == true) {
                Count++;
                if (itm.editable == false) {
                    editOn(itm)
                }
                itm.selected = true;
                if (Clr) {
                    itm.fillOverprint = false;
                    itm.strokeOverprint = false;
                }
            }
            break;
        case 1:
            var e1 = itm.layer.locked;
            var e2 = itm.layer.visible;
            var e3 = itm.locked;
            var e4 = itm.hidden;
            var st = itm.story;
            var tr = st.textRanges;
            var op = 0;
            if (itm.editable == false) {
                editOn(itm)
            }
            for (var i = 0; i < tr.length; i += 1) {
                cat = tr[i].characterAttributes;
                if (cat.overprintFill == true || cat.overprintStroke == true) {
                    if (Clr) {
                        itm.textRange.overprintFill = false;
                        itm.textRange.overprintStroke = false;
                    }
                    op = 1;
                    break;
                }
            }
            if (op) {
                Count++;
                itm.selected = true;
            } else {
                itm.locked = e3;
                itm.hidden = e4;
                itm.layer.locked = e1;
                itm.layer.visible = e2;
            }
            break;
    }
}

function editOn(itm) {
    itm.layer.locked = false;
    itm.layer.visible = true;
    itm.locked = false;
    itm.hidden = false;
}


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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容