Illustratorで特定レイヤーを削除するscript
Illustratorで特定レイヤーを削除するscript:
納品のたびに「レイヤーの削除」「アートボードの削除」をやっているが、手作業だと漏れがある。
毎回の作業なので半自動化するために、レイヤーとアートボードの命名規則を作り、scriptを組む。
行う操作の順序は以下の通り。
1. 特定のレイヤー名を検索 1
2. 検索したレイヤーのindexNumberを保存
3. indexNumberに基づいて削除
アートボードもレイヤーと同様に名前から検索し、削除することが可能。
納品のたびに「レイヤーの削除」「アートボードの削除」をやっているが、手作業だと漏れがある。
毎回の作業なので半自動化するために、レイヤーとアートボードの命名規則を作り、scriptを組む。
命名規則の例
- 削除したいレイヤー名
- 「抜き罫」、「図面用」
- 削除したいアートボード名
- 「図面用」
レイヤー名を指定して削除
行う操作の順序は以下の通り。1. 特定のレイヤー名を検索 1
2. 検索したレイヤーのindexNumberを保存
3. indexNumberに基づいて削除
抜き罫削除.js
// 「抜き罫」レイヤー削除 removeNUKIKEI(activeDocument); function removeNUKIKEI(docObj) { var i = searchLayerNum (docObj, "抜き罫"); if( i == -1 ){ // 抜き罫レイヤーがないなら何もしない } else{ var layObj = docObj.layers; removeLayer(layObj, i); } } // レイヤー名検索 function searchLayerNum(docObj,layName){ layObj = docObj.layers; for (i=0; i<layObj.length; i++){ if( layObj[i].name == layName ){ return i; } } return -1; // 見つからなかったら-1を返す }
アートボードも名前から削除
アートボードもレイヤーと同様に名前から検索し、削除することが可能。図面用削除.js
// 図面用アートボードとレイヤーの削除 removeDRAWING(activeDocument); function removeDRAWING(docObj){ var i = searchArtboardNum (docObj, "図面用"); if( i == -1 ){ // 図面用アートボードがないなら何もしない } else{ var artObj = docObj.artboards; artObj[i].remove(); } i = searchLayerNum (docObj, "図面用"); if( i == -1 ){ // 図面用レイヤーがないなら何もしない } else{ var layObj = docObj.layers; removeLayer(layObj, i); } } // アートボード名検索 function searchArtboardNum(docObj,artName){ artObj = docObj.artboards; for (i=0; i<artObj.length; i++){ if( artObj[i].name == artName ){ return i; } } return -1; // 見つからなかったら-1を返す } // レイヤー名検索 function searchLayerNum(docObj,layName){ layObj = docObj.layers; for (i=0; i<layObj.length; i++){ if( layObj[i].name == layName ){ return i; } } return -1; // 見つからなかったら-1を返す }
-
同名のレイヤーが存在しないことが前提。同名レイヤーをまとめて削除したい場合は、indexNumberを配列に格納すれば対応できるが、そもそも同名レイヤーがあると混乱の元なので避けたほうが良い。 ↩
コメント
コメントを投稿