Illustratorで特定レイヤーを削除するscript
11252 ワード
2019/01/08 コメントで指摘をいただいた「レイヤー削除」に関する処理を追加しました。
納品のたびに「レイヤーの削除」「アートボードの削除」をやっているが、手作業だと漏れがある。
毎回の作業なので半自動化するために、レイヤーとアートボードの命名規則を作り、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を返す
}
// レイヤー削除
function removeLayer(layObj, tgtNum){
layObj[tgtNum].locked = false;
// 非表示レイヤはremove()しようとするとエラー失敗する
layObj[tgtNum].visible = true;
layObj[tgtNum].remove();
}
アートボードも名前から削除
アートボードもレイヤーと同様に名前から検索し、削除することが可能。
図面用削除.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を返す
}
// レイヤー削除
function removeLayer(layObj, tgtNum){
layObj[tgtNum].locked = false;
// 非表示レイヤはremove()しようとするとエラー失敗する
layObj[tgtNum].visible = true;
layObj[tgtNum].remove();
}
-
同名のレイヤーが存在しないことが前提。同名レイヤーをまとめて削除したい場合は、indexNumberを配列に格納すれば対応できるが、そもそも同名レイヤーがあると混乱の元なので避けたほうが良い。 ↩
Author And Source
この問題について(Illustratorで特定レイヤーを削除するscript), 我々は、より多くの情報をここで見つけました https://qiita.com/Kahiro-M/items/16744d1d93a924b21ce4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .