Illustratorでは,レイヤーパネルで選択しているレイヤーをオプションキーを押しながらドラッグすると複製できます。レイヤーの中にさらにレイヤー(サブレイヤー)を含む場合,その構造もそっくり同じになります。
このレイヤー構造を丸ごとコピーするやり方は,似ているけどちょっと違う地図を1つのファイルに何個も入れなければいけないときに便利です。例えば気象庁の天気図を3日分並べて1つの図版にするなどです。
ただこの方法ではサブレイヤーすべてに「のコピー」「のコピー 2」などが付くので,非常にうっとうしいです。かと言って消すには,1つひとつ選択してデリートキーを押す必要があります。穴を掘ってはそれを埋めているような気分になりますね。
そこで今回は選択しているレイヤーより下層のすべてのレイヤーの名前から,末尾の「のコピー」を取り除くJavaScriptを紹介します。
こちらのファイルをダウンロードしてください。
trimCopy.jsx
1 ファイル 1.59 KB
使いかたは,レイヤーパネルで対象のレイヤーを選択してスクリプトを実行するだけです。対象レイヤー自身とその中に含まれるサブレイヤー名を変更します。「のコピー」でも数字の入っている「のコピー 9」のようなパターンでも気にせず削除できます。
さっぱりしました!
これでまた少し仕事が速くなりました。今日もさっさと仕事を切り上げて好きなことをしましょう!
コードはこちら
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
/** * @file アクティブなレイヤーより下層のすべてのレイヤー名から「のコピー」の部分を削除する * @version 1.0.0 * @author sttk3.com * @copyright (c) 2018 sttk3.com */ //#target 'illustrator' (function() { if(app.documents.length <= 0) {return ;} var doc = app.documents[0] ; var rootLayer = doc.activeLayer ; var targetLayers = allLayers(rootLayer) ; var searchPattern = /\s*のコピー\s*[0-9]*$/ ; var oldName, newName ; for(var i = targetLayers.length - 1 ; i >= 0 ; i--) { oldName = targetLayers[i].name ; newName = oldName.replace(searchPattern, '') ; if(oldName != newName && newName != '') {targetLayers[i].name = newName ;} } })() ; /** * 対象のオブジェクトより下層のすべてのレイヤーを取得する * @param {Document | Layers | Array | Layer} rootObj 探索開始オブジェクト * @return {Array} */ function allLayers(rootObj) { var res = [] ; var targetLayers ; switch(rootObj.typename) { case 'Layer' : targetLayers = [rootObj] ; break ; case 'Document' : targetLayers = rootObj.layers ; break ; case 'Layers' : targetLayers = rootObj ; break ; default : if(rootObj.constructor.name == 'Array') { targetLayers = rootObj ; } else { return res ; } break ; } for(var i = 0, len = targetLayers.length ; i < len ; i++) { res.push(targetLayers[i]) ; res = res.concat(allLayers(targetLayers[i].layers)) ; } return res ; } |
このサイトで配布しているスクリプトやその他のファイルを,無断で転載・配布・販売することを禁じます。
それらの使用により生じたあらゆる損害について,私どもは責任を負いません。
スクリプトやファイルのダウンロードを行った時点で,上記の規定に同意したとみなします。