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();