Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
3

Duplicate a layer without changing the name (without "... - copy"

Community Beginner ,
Sep 05, 2017 Sep 05, 2017

Hello !

I would like to know if there is a parameter in order to : when you duplicate a layer, the name of the layer don't change ?

For example :

I want to duplicate the layer "My layer". But, I don't want that my new layer is called "My layer - copy".

Is-it possible ?

Thank you for your answer

TOPICS
Scripting
11.7K
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

New Here , May 04, 2021 May 04, 2021

So, I don´t really know why this works for me but I hope it's not just luck.
Turn ON "Paste Remembers Layers" in the Layers palette.
then select the group you want to copy by clicking on the target.
then Ctrl + C and Ctrl + F.

I don´t know why but it works for me, hope this helps!

ronaldr24038915_0-1620140035259.png

 

Translate
Adobe
Advisor ,
Sep 05, 2017 Sep 05, 2017

You can drag the layer to the New Layer Icon in the lower area of the Layers Panel.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
LEGEND ,
Sep 05, 2017 Sep 05, 2017

But "Copy" is still added whether option dragging or dragging to "Layer" icon. I don't know of a way around this. I suppose it could be scripted.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Advisor ,
Sep 05, 2017 Sep 05, 2017

The program does this to avoid duplicate layer names. You can rename the layer as you please.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
LEGEND ,
Sep 05, 2017 Sep 05, 2017

Yet a duplicated group retains the same name. Seems inconsistent.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 05, 2017 Sep 05, 2017

Make sure you understand that the layering system is different in AI.

You can have as many path or shapes in one layer. It is for organization. So naming convention is important

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Sep 06, 2017 Sep 06, 2017

Thank you for your answers !

I have a lot of views with the common elements and it's painful to rename every time !

But there seems to be no solution...

screen.JPG

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 06, 2017 Sep 06, 2017

You should ask over on the Illustrator Scripting Forum, it might be possible to automate the duplicating and renaming and reduce it to a one keystroke task.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Sep 06, 2017 Sep 06, 2017

Yes thank you ! Good idea

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Adobe Employee ,
Nov 21, 2017 Nov 21, 2017

moved to Illustrator Scripting​

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Sep 06, 2017 Sep 06, 2017

I know it is painful. Solution is to group the elements and name the groups.

On Wed, Sep 6, 2017 at 12:31 AM, camilled30241157 <forums_noreply@adobe.com>

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Contributor ,
Nov 22, 2017 Nov 22, 2017

Hi.

This script erases the words following " - copie" included in the name.

It might help your work a little.

(But I yet don't know whether it can rename all types of object.)

For example:

"my layer - copie" -> "my layer"

"my layer - copie 2" -> "my layer"

"my layer - copie 2 - copie" -> "my layer"

"my - copie layer" -> "my"

Please try to run this script:

(function () {

    if (app.documents.length === 0) {

        return;

    }

   

    var doc = app.activeDocument,

        count = 0,

        targetString = " - copie",

        i,

        max;

   

    function removeStringAfter(searchValue, obj) {

        var name = obj.name,

            index = name.indexOf(searchValue),

            count = 0;

        if (index > -1) {

            obj.name = name.slice(0, index);

            count += 1;

        }

        return count;

    }

   

    for (i = 0, max = doc.pageItems.length; i < max; i += 1) {

        count += removeStringAfter(targetString, doc.pageItems);

    }

   

    // layers and sublayers

    (function resursion(layers) {

        for (i = 0, max = layers.length; i < max; i += 1) {

            count += removeStringAfter(targetString, layers);

            if (layers.layers.length > 0) {

                resursion(layers.layers);

            }

        }

    }(doc.layers));

   

    // clipped groupItems

    for (i = 0, max = doc.groupItems.length; i < max; i += 1) {

        count += removeStringAfter(targetString, doc.groupItems);

    }

    alert(count + " names have been changed.");

}());

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Jul 19, 2018 Jul 19, 2018

That naming behavior bugged me for a long time as i often have to deal with multiple equally named layer stacks. The scripting solution is nice and very fast but your script has a little bug that prevents it (at least for my  Mac AI CC 2018) to go beyond the topmost layer and its child layers. Here is the fix:

(function () {

  if (app.documents.length === 0) {

  return;

  }

  var doc = app.activeDocument,

  count = 0,

  targetString = " - copie";

//  targetString = " Kopie"; // german version

  function removeStringAfter(searchValue, obj) {

  var name = obj.name,

  index = name.indexOf(searchValue),

  count = 0;

  if (index > -1) {

  obj.name = name.slice(0, index);

  count += 1;

  }

  return count;

  }

  for (i = 0, max = doc.pageItems.length; i < max; i += 1) {

  count += removeStringAfter(targetString, doc.pageItems);

  }

  // layers and sublayers

  (function resursion(clayers) {

  var max = clayers.length;

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

  count += removeStringAfter(targetString, clayers);

  if (clayers.layers.length > 0) {

  resursion(clayers.layers);

  }

  }

  }(doc.layers));

  // clipped groupItems

  for (i = 0, max = doc.groupItems.length; i < max; i += 1) {

  count += removeStringAfter(targetString, doc.groupItems);

  }

  alert(count + " names have been changed.");

}());

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jan 04, 2020 Jan 04, 2020

This was not working for me on Illustrator 2020. I beat on it a bit until it did:

 

(function () {
    if (app.documents.length === 0) {
        return;
    }
    
    var doc = app.activeDocument,
        count = 0,
        targetString = " copy",
				allnames = "LAYER NAMES:\n";
    
    function removeStringAfter(searchValue, obj) {
        var name = obj.name,
            index = name.indexOf(searchValue),
            count = 0;
						
				allnames += name+"\n";
				
        if (index > -1) {
					// alert ("renaming "+name);
            obj.name = name.slice(0, index);
            count += 1;
        }
        return count;
    }
        
    // layers and sublayers
    (function recursion(thelayers) {

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

            count += removeStringAfter(targetString, thelayers[i]);

            if (thelayers[i].layers.length > 0) {
                recursion(thelayers[i].layers);
            }
        }
    }(doc.layers));
    
    alert(count + " names have been changed.");
		// alert (allnames);
		
}());
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Jan 04, 2020 Jan 04, 2020

Hi u/egypturnash, I see you on Reddit all the time (over there I'm u/portablepawnshop). Try this:

 

(function () {
  updateLayerNames()
  function updateLayerNames(list) {
    if (arguments.length < 1) list = app.activeDocument.layers;
    for (var i = 0; i < list.length; i++) {
      list[i].name = list[i].name.replace(/\scopy(\s\d{1,})?$/g, "");
      if (list[i].layers.length) updateLayerNames(list[i].layers)
    }
  }
}());

 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Jan 06, 2020 Jan 06, 2020

Yeah, that is a lot more succinct, thank you!

 

Also hi Mx Pawnshop 🙂

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Nov 22, 2017 Nov 22, 2017

function test()

{

     var docRef = app.activeDocument;

     var layers = docRef.layers;

     var layerCopy = layers[0].duplicate();

     layerCopy.name = layers[0].name;

}

test();

Woops. disregard the above. duplicate is not a method of the layer class.

my sincere apologies.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Jun 27, 2018 Jun 27, 2018

Hello,

This minor problem of Illustrator automatically adding "copy" to a duplicated layer's name as well as to all its sub-layers has annoyed me as well. Especially if there are a lot of sub-layers, and you want them to retain their original names. I think I've got a simple and helpful workaround:

1) Turn ON "Paste Remembers Layers" in the Layers palette.

2) UNLOCK and make visible everything in the layer that you are duplicating.

3) SELECT everything in that layer and COPY to the clipboard.

4) RENAME the original layer (i.e. add 1 to the end of the name).

5) PASTE in FRONT (⌘+F). Illustrator will create a new layer with the original layer and sub-layers' names and contents.

6) Change the original layer's name back, if you wish.

I hope this helps.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Nov 26, 2018 Nov 26, 2018

THANK YOU! THANK YOU!

This is exactly the kind of workaround I've been looking to find for years, and I just got so frustrated I decided to check again.

You ROCK!

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Nov 26, 2018 Nov 26, 2018

seriously? the workaround seems like a lot more work. Turning on Paste remembers layers, renaming source layer, renaming back source layer after pasting...isn't easier to rename duplicate layer?

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Beginner ,
Jan 28, 2020 Jan 28, 2020

The workaround might be more work if you only have to copy one layer, but if you have a layer that you have to copy multiple times, with hundreds of sub-layers inside that you would have to rename for each one, that workaround is a lifesaver. This is a problem that has plagued me since I started using Adobe Character Animator. Thank you, SkeetsTreats!

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Jan 28, 2020 Jan 28, 2020

I think Carlos' point was that if you use a script (like ones provided in the above replies), you only need click a button regardless if there's one layer or hundreds, and no matter the depth. In comparison any manual workaround can't compare

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
May 04, 2021 May 04, 2021

So, I don´t really know why this works for me but I hope it's not just luck.
Turn ON "Paste Remembers Layers" in the Layers palette.
then select the group you want to copy by clicking on the target.
then Ctrl + C and Ctrl + F.

I don´t know why but it works for me, hope this helps!

ronaldr24038915_0-1620140035259.png

 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
New Here ,
Nov 13, 2024 Nov 13, 2024
LATEST

Thank you so much, this is worked amazingly

 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines