Illustratorスクリプト 09/12/08

取引先から送られてくるイラレのデータが、いっつもベクターベースの処理で、小数点以下を使用したデータで送られてくる。


これだと、ラスター化(例えばフォトショに持っていく)したときに、意図しないアンチなどがかかって気持ち悪いので作成。


選択したオブジェクトの、XY値&width,height値を小数点以下四捨五入する。width,heightに関しては任意で好きな値も入れられる。
しっかし、GUIが作りにくいなぁ。

//GUI作成
uDlg = new Window('dialog','位置、サイズ調整Tool',[400,400,620,550]);
checkBtn1 = uDlg.add("checkbox", [5, 10, 200, 20], "X,Y値(auto)");
checkBtn2 = uDlg.add("checkbox", [5, 30, 200, 40], "width, height値");
checkBtn3 = uDlg.add("checkbox", [15, 45, 210, 55], "auto");
widthText = uDlg.add("statictext", [15, 62, 40, 80], "width");
widthFiled = uDlg.add("edittext", [45, 60, 100, 80], "");
heightText = uDlg.add("statictext", [110, 62, 135, 80], "height");
heightFiled = uDlg.add("edittext", [140, 60, 195, 80], "");
btn1 = uDlg.add("button",[20,110,100,130], "実行");
btn2 = uDlg.add("button",[120,110,200,130], "キャンセル");

//GUI初期化
checkBtn1.value = true;
checkBtn2.value = false;
checkBtn3.value = true;
checkBtn3.enabled = false;
widthText.enabled = false;
widthFiled.enabled = false;
heightText.enabled = false;
heightFiled.enabled = false;

//GUI設定変更実装
checkBtn2.onClick = function(){
    if(checkBtn2.value){
        if(checkBtn3.value){
            checkBtn3.enabled = true;
            widthText.enabled = false;
            widthFiled.enabled = false;
            heightText.enabled = false;
            heightFiled.enabled = false;
        }else{
            checkBtn3.enabled = true;
            widthText.enabled = true;
            widthFiled.enabled = true;
            heightText.enabled = true;
            heightFiled.enabled = true;
        }
    }else{
        checkBtn3.enabled = false;
        widthText.enabled = false;
        widthFiled.enabled = false;
        heightText.enabled = false;
        heightFiled.enabled = false;
    }
}

checkBtn3.onClick = function(){
    if(checkBtn3.value){
            checkBtn3.enabled = true;
            widthText.enabled = false;
            widthFiled.enabled = false;
            heightText.enabled = false;
            heightFiled.enabled = false;
    }else{
            checkBtn3.enabled = true;
            widthText.enabled = true;
            widthFiled.enabled = true;
            heightText.enabled = true;
            heightFiled.enabled = true;
    }
}



//実処理実装
btn1.onClick = function(){

    selObjects = app.selection;
    
    if(checkBtn1.value){

        //X, Y値処理
        for(i = 0; i < selObjects.length; i++){

            position = selObjects[i].position;

            x = Math.round(position[0]);
            y = Math.round(position[1]);

            selObjects[i].position = Array(x, y);
        }
    }

    if(checkBtn2.value){

        //width, height値処理
        if(checkBtn3.value){    //auto
            for(i = 0; i < selObjects.length; i++){
                selObjects[i].width = Math.round(selObjects[i].width);
                selObjects[i].height = Math.round(selObjects[i].height);
            }
        }else{                  //任意
                for(i = 0; i < selObjects.length; i++){
                    selObjects[i].width = widthFiled.text;
                    selObjects[i].height = heightFiled.text;
                }
        }
    }

    uDlg.close();
    alert("完了");
}

//キャンセル処理
btn2.onClick = function(){

    uDlg.close();

}

//表示
uDlg.show();