选择一组颜色,创建一个新图层,然后使用 Illustrator 脚本发送到该图层

问题描述 投票:0回答:1

我正在尝试创建一个插画脚本,该脚本将选择一组具有相同颜色的点,然后创建一个新图层并将其发送到该图层。该脚本在执行一层时有效,但在执行两层时则无效。

我不明白我的代码做错了什么。当我按原样运行代码时,出现错误“操作无法完成,因为没有选择”。但是,代码仍然运行,但它将黄点移动到红点层,仅此而已。但是,当我注释掉填充了参数的任一 selectColor 行时,它会正确运行,不会出现错误,并将正确的点放在正确的新图层上。

有什么建议吗?

var doc = app.activeDocument;//Gets the active document
var layerName;
var lay = doc.layers;
var myLayer = lay.add();

var yellow = new RGBColor();
yellow.red = 252;
yellow.green = 253;
yellow.blue = 1;

var red = new RGBColor();
red.red = 252;
red.green = 0;
red.blue = 0;




function selectColor(swatch, layerName) {

        var temp = app.documents[0].pathItems.rectangle(10, 10, 150, 150);
        temp.fillColor = swatch;

        // To select object that have CMYK Red swatch applied to fill.
        app.executeMenuCommand('Find Fill Color menu item');

    temp.remove();


    myLayer.name = layerName;
    app.executeMenuCommand('Selection Hat 2');
}

selectColor(yellow, "Yellow Dots");

selectColor(red, "Red Dots");
javascript adobe-illustrator
1个回答
1
投票

史蒂文!据我所知你想要这个:

var yellow = new RGBColor();
yellow.red = 252;
yellow.green = 253;
yellow.blue = 1;

var red = new RGBColor();
red.red = 252;
red.green = 0;
red.blue = 0;

function selectColor(swatch, layerName) {
    app.selection = null;

    var doc = app.activeDocument;
    var temp = doc.pathItems.rectangle(10, 10, 150, 150);
    temp.fillColor = swatch;
    temp.selected = true;
    app.executeMenuCommand('Find Fill Color menu item');
    temp.remove();

    try {
        var myLayer = doc.layers.getByName(layerName);
    } catch (e) {
        var myLayer = doc.layers.add();
        myLayer.name = layerName;
    }

    doc.activeLayer = myLayer;
    app.executeMenuCommand('Selection Hat 2'); // send the selection to current layer

    app.selection = null;
}

selectColor(yellow, "Yellow Dots");
selectColor(red, "Red Dots");
© www.soinside.com 2019 - 2024. All rights reserved.