重命名图层的 Photoshop 脚本使它们全部可见
Photoshop Script to rename layers turns them all visible
我写了一个小的 JS 脚本来重命名图层名称,以便它们都是唯一的。它只是递归地遍历您打开的 Photoshop 文档中的所有图层,并将列出所有名称。如果它发现该列表中已经有一个名称,它将在图层名称后附加一个数字,直到找到一个唯一的名称。
我有那个工作,但是一个奇怪的行为是在这个脚本的过程中 运行ning 它使每一层都可见。我的脚本的任何部分都不会影响可见性。为了进行测试,我在 每个 层上添加了一些行以关闭它们的可见性 checked/renamed,但这并没有改变任何东西。最后每一层仍然可见。
作为参考,我使用的是 Photoshop CS2,脚本是 运行 到 文件 > 脚本 > 重命名重复图层
这是我用来禁用可见性的两行代码(没有用):
layerSet.artLayers[i].visibility = false;
和
layerSet.layerSets[i].visibility = false;
这里是楷书的全文,完全没有试图改变可见性。
function main()
{
if (app.documents.length <= 0)
{
return;
}
var doc = app.activeDocument;
layerNames = [];
renameLayerNames(doc, layerNames);
alert("Script complete.");
}
// Recursively iterate over layers to rename them
function renameLayerNames(layerSet, layerNames)
{
var name = '';
for (var i = 0; i < layerSet.artLayers.length; i++)
{
name = layerSet.artLayers[i].name;
name = uniqueName(name, layerNames);
layerSet.artLayers[i].name = name;
}
for (var i = 0; i < layerSet.layerSets.length; i++)
{
name = layerSet.layerSets[i].name;
name = uniqueName(name, layerNames);
layerSet.layerSets[i].name = name;
// Recurse
renameLayerNames(layerSet.layerSets[i], layerNames);
}
}
// Ensure name is unique, or add an incrementing number to it.
function uniqueName(name, layerNames)
{
dupe = 0;
original = name;
while (contains(layerNames, name)){
dupe++;
name = original + ' ' + dupe.toString();
}
layerNames.push(name);
return name;
}
// Check if array contains object
function contains(array, object)
{
for (var i = 0; i < array.length; i++){
if (array[i] == object){
return true
}
}
return false
}
我认为 属性 是 visible
而不是 visibility
即
layerSet.artLayers[i].visible = false;
layerSet.layerSets[i].visible = false;
我写了一个小的 JS 脚本来重命名图层名称,以便它们都是唯一的。它只是递归地遍历您打开的 Photoshop 文档中的所有图层,并将列出所有名称。如果它发现该列表中已经有一个名称,它将在图层名称后附加一个数字,直到找到一个唯一的名称。
我有那个工作,但是一个奇怪的行为是在这个脚本的过程中 运行ning 它使每一层都可见。我的脚本的任何部分都不会影响可见性。为了进行测试,我在 每个 层上添加了一些行以关闭它们的可见性 checked/renamed,但这并没有改变任何东西。最后每一层仍然可见。
作为参考,我使用的是 Photoshop CS2,脚本是 运行 到 文件 > 脚本 > 重命名重复图层
这是我用来禁用可见性的两行代码(没有用):
layerSet.artLayers[i].visibility = false;
和
layerSet.layerSets[i].visibility = false;
这里是楷书的全文,完全没有试图改变可见性。
function main()
{
if (app.documents.length <= 0)
{
return;
}
var doc = app.activeDocument;
layerNames = [];
renameLayerNames(doc, layerNames);
alert("Script complete.");
}
// Recursively iterate over layers to rename them
function renameLayerNames(layerSet, layerNames)
{
var name = '';
for (var i = 0; i < layerSet.artLayers.length; i++)
{
name = layerSet.artLayers[i].name;
name = uniqueName(name, layerNames);
layerSet.artLayers[i].name = name;
}
for (var i = 0; i < layerSet.layerSets.length; i++)
{
name = layerSet.layerSets[i].name;
name = uniqueName(name, layerNames);
layerSet.layerSets[i].name = name;
// Recurse
renameLayerNames(layerSet.layerSets[i], layerNames);
}
}
// Ensure name is unique, or add an incrementing number to it.
function uniqueName(name, layerNames)
{
dupe = 0;
original = name;
while (contains(layerNames, name)){
dupe++;
name = original + ' ' + dupe.toString();
}
layerNames.push(name);
return name;
}
// Check if array contains object
function contains(array, object)
{
for (var i = 0; i < array.length; i++){
if (array[i] == object){
return true
}
}
return false
}
我认为 属性 是 visible
而不是 visibility
即
layerSet.artLayers[i].visible = false;
layerSet.layerSets[i].visible = false;