用于重命名图层的Photoshop脚本使它们全部可见

时间:2016-06-10 13:59:03

标签: javascript photoshop

我写了一个小小的JS脚本来重命名图层名称,以便它们都是唯一的。它只是递归循环遍历您打开的Photoshop文档中的所有图层,并将列出所有名称。如果它发现某个名称已经在该列表中,它会在图层名称后附加一个数字,直到找到唯一的名称。

我有这个工作,但有一个奇怪的行为是,在这个脚本运行过程中,它会使每一层都可见。我的脚本中没有任何部分旨在影响可见性。为了进行测试,我添加了一些行来在检查/重命名后关闭每个层的可见性,但这并没有改变任何东西。最后,每一层仍然可见。

作为参考,我使用的是Photoshop CS2,脚本通过 File>运行。脚本>重命名重复图层

这是我用来禁用可见性的两条线(不起作用):

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
}

1 个答案:

答案 0 :(得分:1)

我认为该属性为visibility而非layerSet.artLayers[i].visible = false; layerSet.layerSets[i].visible = false; ,即

<div class="row">
      <div class="form-group col-md-6">
        <label for="">label_1</label>
        <input type="text">
      </div>
      <div class="form-group col-md-5">
        <label for="">label_2</label>
        <input type="text">
      </div>
    </div>
    <div class="row">
      <div class="form-group col-md-6">
        <label for="">label_3</label>
        <input type="text">
      </div>
      <div class="form-group col-md-5">
        <div>&nbsp;</div>
      </div>
    </div>