見出し画像

Illustratorファイルから全角レイヤー名を雑に排除する(2024年2月)

ボードゲーム制作で初版と2版で入稿先を変更することにした。
海外発注することになったので、ファイル名やレイヤー名から全角文字を削除する。(ちゃんとした体裁の記事は改めてキレイにしてオ卓noteに載っけたいですね…こっちは…あの…雑に……)


お世話になったスクリプト

スクリプト例

何やらたくさん使っていますね

1. 特定の名前のレイヤーを削除する

「入稿のご案内」という名前のレイヤーを削除させてもらいました。
日本語話者の入稿者向けの説明が書いてあるレイヤーで、ガイド線とは別になっていたためです。ガイド線は言語を超える…!超えてくれ。

// 「入稿のご案内」レイヤー削除
removeNYUKO(activeDocument);
function removeNYUKO(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();
    }

2. 特定の名前のレイヤーを変換する

「トンボ」を「registration marks」に変えました。
そのくらいはやったほうがいいと思って…

// 「トンボ」レイヤー→「registration marks」
renameTOMBO(activeDocument);
function renameTOMBO(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].name="registration marks";
    }

3. objectの名前をとにかく半角に変える

全角で「長方形」とか生成するのやめてくれないかIllustrator…!
「<クリップグループ>」じゃないんだよ!やめてくれー!
すべて問答無用で「Obj001」とかにします
これは駆け込み寺さんのをそのまま使わせていただいてます

//----------------------------------------------------
//ダイアログ設定
//----------------------------------------------------
setDialog = function(inputText){
    var win = new Window("dialog", "オブジェクト名一括変更");
    var myText = win.add("edittext", [0, 0, 400, 300], "", {multiline: true});
    myText.text = inputText;
    myText.active = true;

    win.add ("button", undefined, "OK");
    win.add ("button", undefined, "Cancel");

    if (win.show () == 1){
        myName = myText.text;
        changeName(selObj);
    }
    else{
        return;
    }
}
//----------------------------------------------------

var selObj = activeDocument.selection;

checkName(selObj);

var old_Name = set_Name.join("\n");
setDialog(old_Name);


function checkName(target)
{
    set_Name = [];
    var n = target.length;
    for (var i=0; i<n; i++)
    {
        var set_old_Name = target[i].name;
        set_Name.push(set_old_Name);
    }
}

function changeName(target)
{
    var new_Name = [];
    new_Name = myName.split("\n");
    var n = target.length;
    for (var i=0; i<n; i++)
    {
        var set_new_Name = new_Name[i];
        target[i].name = set_new_Name;
    }
}

無事入稿できたとのことです。ありがとうございました。

場合によってはこちらもお世話になりそうでした。


日々のコーヒー代になります!