以前の記事【解決】レイヤー作成のとき黄色レイヤーを禁止したい!によって黄色レイヤーとの戦いは終息に向かい,人々は平和な日々を過ごしていました。
ところがその穏やかな時間は長くは続かず,またしても黄色レイヤーが侵攻を始めます。Illustrator CC 2018からレイヤーの色設定が変わり,旧バージョンのレイヤー 7(シアン)が黄色に化けるようになったのです。
今までは量が少なくさほど苦労しませんでしたが,CS6など旧バージョンからの改訂のたびに黄色レイヤーは現れ,人類を損耗していきます。
そこで開発されたのが,書類上のすべての黄色レイヤー(サブレイヤー)を別の色に置き換えるIllustratorスクリプトです。
あらまし
前面にある書類のすべてのレイヤーを検索し,その色がイエロー・グレー・ブラック・ダークグリーンだったら他の見やすい色に変更するIllustrator用スクリプトです。レイヤー内レイヤー(サブレイヤー)にも対応しています。
具体的な検索・置換ペアはこちら。
- イエロー ➡ ゴールド
- グレー ➡ グラスグリーン
- ブラック ➡ ラベンダー
- ダークグリーン ➡ ピンク
次のリンクからダウンロード・インストールしてください。
replaceYellowLayer.jsx
使いかたは?
難しいことは何もありません。ただスクリプトを実行するだけです。
特にお知らせもなく置換処理を終えるので,必要なかたは適宜Keyboard Maestroなどを使って終了通知を出してください。
これでまた人類は,ほんの少しだけ希望を取り戻しました。しかし私たちの戦いはまだ始まったばかりです。今日もさっさと仕事を切り上げて好きなことをしましょう!
コードはこちら。
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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
/** * @file 書類上のすべての見えにくいレイヤーカラーを別の色に置き換える * @version 1.0.0 * @author sttk3.com * @copyright (c) 2020 sttk3.com */ #target 'illustrator' (function() { var tolerance = 1 ; // RGBColorの同一性判定に許す誤差 if(app.documents.length <= 0) {return ;} var doc = app.documents[0] ; // 検索色 var colorYellow = newRGB(255, 255, 78) ; var colorGray = newRGB(127, 127, 127) ; var colorBlack = newRGB(0, 0, 0) ; var colorDarkGreen = newRGB(0, 85, 0) ; // 置換色 var colorGold = newRGB(255, 153, 0) ; var colorGrassGreen = newRGB(153, 204, 0) ; var colorLavender = newRGB(153, 153, 255) ; var colorPink = newRGB(255, 153, 204) ; // arrayにまとめる var colorList = [[colorYellow, colorGold], [colorGray, colorGrassGreen], [colorBlack, colorLavender], [colorDarkGreen, colorPink]] ; // 色を置き換える var targetLayers = allLayers(doc) ; for(var i = 0, len = targetLayers.length ; i < len ; i++) { replaceLayerColor(targetLayers[i], colorList, tolerance) ; } })() ; /** * RGBColorを作って返す * @param {Number} rValue Rの値 * @param {Number} gValue Gの値 * @param {Number} bValue Bの値 * @return {RGBColor} */ function newRGB(rValue, gValue, bValue) { var res = new RGBColor() ; res.red = Number(rValue) ; res.green = Number(gValue) ; res.blue = Number(bValue) ; return res ; } /** * 2つのRGBColorが同じ色かどうかを返す。同じならtrue * @param {RGBColor} colorA 色1 * @param {RGBColor} colorB 色2 * @param {Number} tolerance 許容する誤差 * @return {Boolean} */ function matchRGB(colorA, colorB, tolerance) { var res = true ; if(tolerance == null) {tolerance = 0 ;} var row ; var data = [[colorA.red, colorB.red], [colorA.green, colorB.green], [colorA.blue, colorB.blue]] ; for(var i = 0, len = data.length ; i < len ; i++) { row = data[i] ; if(!(((row[0] - tolerance) <= row[1]) && (row[1] <= (row[0] + tolerance)))) { return false ; } } return res ; } /** * 対象のレイヤーの色を置き換える * @param {Array} targetLayer 対象のレイヤー * @return {} */ function replaceLayerColor(targetLayer, colorList, tolerance) { var layerColor = targetLayer.color ; for(var i = 0, len = colorList.length ; i < len ; i++) { if(matchRGB(layerColor, colorList[i][0], tolerance)) { targetLayer.color = colorList[i][1] ; } } } /** * 対象のオブジェクトより下層のすべてのレイヤーを取得する * @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 ; } |
このサイトで配布しているスクリプトやその他のファイルを,無断で転載・配布・販売することを禁じます。
それらの使用により生じたあらゆる損害について,私どもは責任を負いません。
スクリプトやファイルのダウンロードを行った時点で,上記の規定に同意したとみなします。