017.【ID】別名同値のCMYKスウォッチを統合する
#targetengine "mergeSwatches" var doc = app.activeDocument; var docClrs = doc.colors; var clrsProp = []; var clrsNames = []; var docClrsLen = docClrs.length; var sameClrs = []; var sameClrsArrs = []; var cnt = 1 // デフォルトと無名以外のcolorの情報を取得 for (var i = 0; i < docClrsLen; i++) { if ((docClrs[i].name != "Black") && (docClrs[i].name != "Registration") && (docClrs[i].name != "Paper") && (docClrs[i].name != "") && (docClrs[i].name != "Cyan") && (docClrs[i].name != "Magenta") && (docClrs[i].name != "Yellow")) { clrsProp.push([docClrs[i].model + "/" + docClrs[i].space + "/" + docClrs[i].colorValue.join(), docClrs[i].name]) clrsNames.push(docClrs[i].name) } } clrsProp.sort(); var clrsPropLen = clrsProp.length; for (var j = 0; j < clrsPropLen; j = j + cnt) { cnt = 1 sameClrs = [clrsProp[j][1]]; for (var k = j + 1; k < clrsPropLen; k++) { if (clrsProp[j][0] != clrsProp[k][0]) { break; } else { cnt++ sameClrs.push(clrsProp[k][1]); } } if (cnt > 0) { sameClrsArrs.push(sameClrs); } } // ウィンドウ作成 var w = new Window("window", "スウォッチ結合"); var txt1 = w.add("statictext", undefined, "結合先のスウォッチを選択してください"); var list1 = w.add("dropdownlist", undefined, clrsNames) var txt2 = w.add("statictext", undefined, "結合するスウォッチを選択してください"); txt2.visible = false; var start = w.add("button", undefined, "実行"); start.visible = false; // 結合先のスウォッチが選択された時に実行するイベント list1.onChange = function () { txt2.visible = true; var mySwatch = list1.selection.text; var mySwtchSameClrs = []; for (var i = 0; i < sameClrsArrs.length; i++) { var mySwatchIsExist = existInArr(sameClrsArrs[i], mySwatch); if (mySwatchIsExist !== false) { for (var j = 0; j < sameClrsArrs[i].length; j++) { if (j !== mySwatchIsExist) { mySwtchSameClrs.push(sameClrsArrs[i][j]); } } } } for (var k = 0; k < mySwtchSameClrs.length; k++) { w.add("checkbox", undefined, mySwtchSameClrs[k]); // ここが上手くいっていない? } start.visible = true; start.onClick = function () { // ここから未着手 // 選択されているcheckboxの数だけ回す // dropboxのtext.merge(checkboxで選ばれてる文字列[i]) // alert("やったぜ") } } w.show(); function existInArr(arr, tgt) { var arrLen = arr.length; for (var p = 0; p < arrLen; p++) { if (arr[p] === tgt) { return p; } } return false; }
メモ
時間切れ。 onChangeの中でaddは使えないのか?