Skip to main content
sqistudio
Participant
July 8, 2015
Answered

Freeze layer within group folders

  • July 8, 2015
  • 1 reply
  • 326 views

I would like to freeze a check layer. This layer is sometimes repeated many times and can also be within many sub folders in the layer groups.

Currently it doesn't have a recursive function and I'm not sure how to add one.

This is what I currently have

if(app.documents.length>0){

    app.activeDocument.suspendHistory ('Hide Check Layers', 'HideCheckLayers()');

}

function HideCheckLayers(){

  var doc = app.activeDocument;

  var hideLayer = "Check Layer"; // Layer name to freeze

  for (var i=0; i < doc.artLayers.length; i++){

  if(doc.artLayers.name==hideLayer){

  doc.artLayers.visible = false;

  }

  }

}

This topic has been closed for replies.
Correct answer Chuck Uebele

Make these changes:

#target photoshop

if(app.documents.length>0){ 

        var doc = app.activeDocument;

        app.activeDocument.suspendHistory ('Hide Check Layers', 'HideCheckLayers(doc)'); 

    } 

    function HideCheckLayers(lay){ 

      var hideLayer = "Check Layer"; // Layer name to freeze 

     

      for (var i=0; i < lay.layers.length; i++){ 

          var currentLayer = lay.layers

          try{

          if(currentLayer.layers.length>0){HideCheckLayers (currentLayer)}

          }

      catch(e){}

      if(currentLayer.name==hideLayer){ 

     currentLayer.visible = false; 

      } 

      } 

    } 

1 reply

Chuck Uebele
Community Expert
Chuck UebeleCommunity ExpertCorrect answer
Community Expert
July 8, 2015

Make these changes:

#target photoshop

if(app.documents.length>0){ 

        var doc = app.activeDocument;

        app.activeDocument.suspendHistory ('Hide Check Layers', 'HideCheckLayers(doc)'); 

    } 

    function HideCheckLayers(lay){ 

      var hideLayer = "Check Layer"; // Layer name to freeze 

     

      for (var i=0; i < lay.layers.length; i++){ 

          var currentLayer = lay.layers

          try{

          if(currentLayer.layers.length>0){HideCheckLayers (currentLayer)}

          }

      catch(e){}

      if(currentLayer.name==hideLayer){ 

     currentLayer.visible = false; 

      } 

      } 

    } 

sqistudio
sqistudioAuthor
Participant
July 9, 2015

Thank you so much Chuck!

To add a little flexibility to the script I wonder if the hideLayer variable can be an array?

Chuck Uebele
Community Expert
Community Expert
July 9, 2015

Are you talking about having all the layers that you want the visibilty turned off, selected and do that all at once? If so, I think you still need to loop through the layers to find the ones that need it turned off, so I'm not sure how much would be gained by doing it that way. Plus getting multiple layers selected is a bit more involved.