我正在尝试创建一个插画脚本,该脚本将选择一组具有相同颜色的点,然后创建一个新图层并将其发送到该图层。该脚本在执行一层时有效,但在执行两层时则无效。
我不明白我的代码做错了什么。当我按原样运行代码时,出现错误“操作无法完成,因为没有选择”。但是,代码仍然运行,但它将黄点移动到红点层,仅此而已。但是,当我注释掉填充了参数的任一 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");
史蒂文!据我所知你想要这个:
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");