Last active
October 28, 2025 14:48
-
-
Save Yamonov/1c466bfdc788800e87d3473d17c29e53 to your computer and use it in GitHub Desktop.
Illustrator:同じカラーを選択をUIにし、ついでにグローバルスウォッチを作成
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| (function () { | |
| if (app.documents.length === 0) return; | |
| if (app.selection && app.selection.length > 1) { | |
| alert("複数のオブジェクトが選択されています。1つだけ選択して実行してください。"); | |
| return; | |
| } | |
| var base = []; | |
| if (app.selection) for (var i = 0; i < app.selection.length; i++) base.push(app.selection[i]); | |
| var dlg = new Window("dialog", "共通の色で選択"); | |
| var pnl = dlg.add("panel", undefined, "共通"); | |
| pnl.orientation = "row"; | |
| var rbFill = pnl.add("radiobutton", undefined, "塗り"); | |
| var rbStroke = pnl.add("radiobutton", undefined, "線"); | |
| rbFill.value = true; | |
| var cbMake = dlg.add("checkbox", undefined, "スウォッチ作成"); | |
| cbMake.value = false; | |
| var g = dlg.add("group"); | |
| g.alignment = "right"; | |
| g.add("button", undefined, "キャンセル", { name: "cancel" }); | |
| var btnOK = g.add("button", undefined, "OK", { name: "ok" }); | |
| btnOK.onClick = function () { | |
| if (!cbMake.value) { dlg.close(1); return; } | |
| var doc = app.activeDocument; | |
| var src = base && base.length ? base[0] : null; | |
| var col = null; | |
| if (src) { | |
| if (rbFill.value && src.filled) col = src.fillColor; | |
| else if (rbStroke.value && src.stroked) col = src.strokeColor; | |
| } | |
| if (!col) { dlg.close(1); return; } | |
| if (col.typename === "SpotColor" && col.spot && col.spot.color) | |
| col = col.spot.color; | |
| if (!(col.typename === "RGBColor" || col.typename === "CMYKColor" || col.typename === "GrayColor")) { | |
| dlg.close(1); | |
| return; | |
| } | |
| var swName = (col.typename === "RGBColor") ? | |
| "RGB-" + col.red + "-" + col.green + "-" + col.blue : | |
| (col.typename === "CMYKColor") ? | |
| "CMYK-" + col.cyan + "-" + col.magenta + "-" + col.yellow + "-" + col.black : | |
| "Gray-" + col.gray; | |
| for (var s = doc.swatches.length - 1; s >= 0; s--) | |
| try { if (doc.swatches[s].name === swName) doc.swatches[s].remove(); } catch (_) { } | |
| for (var p = doc.spots.length - 1; p >= 0; p--) | |
| try { if (doc.spots[p].name === swName) doc.spots[p].remove(); } catch (_) { } | |
| var sp = doc.spots.add(); | |
| // Illustratorの挙動対策:まず color、次に spotKind、最後に name | |
| sp.color = col; | |
| sp.spotKind = SpotColorKind.SPOTPROCESS; | |
| sp.name = String(swName); | |
| dlg.close(1); | |
| }; | |
| rbFill.onClick = apply; | |
| rbStroke.onClick = apply; | |
| function apply() { | |
| app.selection = base; | |
| app.executeMenuCommand(rbFill.value ? "Find Fill Color menu item" : "Find Stroke Color menu item"); | |
| try { if (typeof refreshUI === "function") refreshUI(); } catch (_) { } | |
| try { $.sleep(200); } catch (_) { } | |
| try { app.redraw(); } catch (_) { } | |
| } | |
| apply(); | |
| dlg.show(); | |
| })(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment