Photoshop Script Select 所有可见的画板
Photoshop Script Select all visible Artboards
我一直在努力寻找一种方法来 select 所有可见的画板,这样我以后就可以将它们全部快速导出为 PNG。如果我也可以在脚本中包含导出部分,我也很高兴,但这不是现在的主要问题。
我有这段代码可以找到所有可见的画板并将它们存储在可见的画板中,但我似乎找不到制作它们的 selection 的方法。
var artboards = activeDoc.layers;
var visibleArtboards = [];
for (var i=0; i<artboards.length; i++){
if(artboards[i].visible){
visibleArtboards.push(artboards[i]);
}
}
activedoc.activeLayer 可以制作一个 selection,但只能制作 1 个画板。
如果有人能帮我解决丢失的部分,我将不胜感激
您可以获得画板的图层 ID 并将其添加到选区。使用您的代码,visibleArtboards 现在是画板图层的 ID。
// call the source document
var activeDoc = app.activeDocument;
var artboards = activeDoc.layers;
var visibleArtboards = [];
for (var i=0; i<artboards.length; i++)
{
if(artboards[i].visible)
{
// select ID as we go along
var layerID = artboards[i].id;
visibleArtboards.push(layerID);
}
}
// Loop over the layers again and select all the art boards
for (var i=0; i<visibleArtboards.length; i++)
{
// add to current selection of layers
select_by_ID(visibleArtboards[i], true);
}
function select_by_ID(id, add)
{
if (add == undefined) add = false;
var desc1 = new ActionDescriptor();
var ref1 = new ActionReference();
ref1.putIdentifier(charIDToTypeID('Lyr '), id);
desc1.putReference(charIDToTypeID('null'), ref1);
if (add) desc1.putEnumerated(stringIDToTypeID("selectionModifier"), stringIDToTypeID("selectionModifierType"), stringIDToTypeID("addToSelection"));
executeAction(charIDToTypeID('slct'), desc1, DialogModes.NO);
} // end of selectByID()
但是,它会添加背景(如果包含)。我相信你可以解决这个问题。
我一直在努力寻找一种方法来 select 所有可见的画板,这样我以后就可以将它们全部快速导出为 PNG。如果我也可以在脚本中包含导出部分,我也很高兴,但这不是现在的主要问题。
我有这段代码可以找到所有可见的画板并将它们存储在可见的画板中,但我似乎找不到制作它们的 selection 的方法。
var artboards = activeDoc.layers;
var visibleArtboards = [];
for (var i=0; i<artboards.length; i++){
if(artboards[i].visible){
visibleArtboards.push(artboards[i]);
}
}
activedoc.activeLayer 可以制作一个 selection,但只能制作 1 个画板。
如果有人能帮我解决丢失的部分,我将不胜感激
您可以获得画板的图层 ID 并将其添加到选区。使用您的代码,visibleArtboards 现在是画板图层的 ID。
// call the source document
var activeDoc = app.activeDocument;
var artboards = activeDoc.layers;
var visibleArtboards = [];
for (var i=0; i<artboards.length; i++)
{
if(artboards[i].visible)
{
// select ID as we go along
var layerID = artboards[i].id;
visibleArtboards.push(layerID);
}
}
// Loop over the layers again and select all the art boards
for (var i=0; i<visibleArtboards.length; i++)
{
// add to current selection of layers
select_by_ID(visibleArtboards[i], true);
}
function select_by_ID(id, add)
{
if (add == undefined) add = false;
var desc1 = new ActionDescriptor();
var ref1 = new ActionReference();
ref1.putIdentifier(charIDToTypeID('Lyr '), id);
desc1.putReference(charIDToTypeID('null'), ref1);
if (add) desc1.putEnumerated(stringIDToTypeID("selectionModifier"), stringIDToTypeID("selectionModifierType"), stringIDToTypeID("addToSelection"));
executeAction(charIDToTypeID('slct'), desc1, DialogModes.NO);
} // end of selectByID()
但是,它会添加背景(如果包含)。我相信你可以解决这个问题。