Skip to main content
Inspiring
May 24, 2016
Answered

How to make the layer visible on and off

  • May 24, 2016
  • 2 replies
  • 1039 views

Hi, experts

this is my script:

        var docs = app.documents;

             for (var i = docs.length-1; i >= 0; i--) {

                    docs.layers.item("Chi").visible = true;

                    docs.layers.item("Chi").locked = false;

                    docs.layers.item("Eng").visible = false;

                    docs.layers.item("Eng").locked = true;

                     }

      alert("Done.")

but how can make the layer

1. if the layer "chi" visible = true; while "eng" visible = false

"chi" locked = false; while "eng" locked = true

just to turn the

layer "chi" visible = false; while "eng" visible = true 

"chi" locked = true; while "eng" locked = false

just like two layer switch;

regard

John

This topic has been closed for replies.
Correct answer Sajeev Sridharan

Try this,

var docs = app.documents;

for (var i = docs.length-1; i >= 0; i--) {

    if(docs.layers.item("Chi").visible == true && docs.layers.item("Chi").locked == false)

    {

        docs.layers.item("Chi").visible = false;

        docs.layers.item("Chi").locked = true;

        docs.layers.item("Eng").visible = true;

        docs.layers.item("Eng").locked = false;

    }

    else if(docs.layers.item("Eng").visible == true && docs.layers.item("Eng").locked == false)

    {

        docs.layers.item("Chi").visible = true;

        docs.layers.item("Chi").locked = false;

        docs.layers.item("Eng").visible = false;

        docs.layers.item("Eng").locked = true;

    }

}

alert("Done.")

2 replies

JohnwhiteAuthor
Inspiring
May 24, 2016

Thank you all guys

both are works, amazing.

thanks appreciate.

regard

John

Sajeev SridharanCorrect answer
Legend
May 24, 2016

Try this,

var docs = app.documents;

for (var i = docs.length-1; i >= 0; i--) {

    if(docs.layers.item("Chi").visible == true && docs.layers.item("Chi").locked == false)

    {

        docs.layers.item("Chi").visible = false;

        docs.layers.item("Chi").locked = true;

        docs.layers.item("Eng").visible = true;

        docs.layers.item("Eng").locked = false;

    }

    else if(docs.layers.item("Eng").visible == true && docs.layers.item("Eng").locked == false)

    {

        docs.layers.item("Chi").visible = true;

        docs.layers.item("Chi").locked = false;

        docs.layers.item("Eng").visible = false;

        docs.layers.item("Eng").locked = true;

    }

}

alert("Done.")

vinothr
Inspiring
May 24, 2016

Couple of things to note:

1. You should get layer by name layer.itemByName

2. Consider reuse and error handling

You can modify below code if you think your requirement is not translated.

// Toggle between Chi and Eng layers

function toggleLayers() {

     var total = app.documents.length;

     for(var i = 0; i < total; i++) {

          var doc = app.documents.item(i);

          var chiLayer = doc.layers.itemByName("Chi");

          if(chiLayer && chiLayer.isValid && chiLayer.visible) {

               lockLayer(doc, "Eng");

               unlockLayer(doc, "Chi");

          } else {

               lockLayer(doc, "Chi");

               unlockLayer(doc, "Eng");

          }

     }

}

// Lock layer and make it invisible

function lockLayer(doc, layerName) {

     try{

          var layer = doc.layers.itemByName(layerName);

          if(layer && layer.isValid) {

               layer.visible = false;

               layer.locked = true;

          }

     }catch(e) { }

}

// Unlock layer and make it visible

function unlockLayer(doc, layerName) {

     try{

          var layer = doc.layers.itemByName(layerName);

          if(layer && layer.isValid) {

               layer.visible = true;

               layer.locked = false;

          }

     }catch(e) {}

}

Loic.Aigon
Legend
May 24, 2016

Like this maybe ?

var main = function() {

  var docs = app.documents,

  layers,

  n = docs.length,

  chi, eng;

  while ( n-- ) {

  layers = docs.layers;

  chi = layers.item("Chi");

  eng = layers.item("Eng");

  if ( chi.isValid && eng.isValid ) {

  eng.visible = chi.locked = !chi.visible;

  eng.locked = chi.visible;

  }

  }

}

main();

HTH

Loic

http://www.ozalto.com/