
指定した1色を変化させるカラーチャート作成スクリプトです。
カラーチャートを作成することが多いので、選択したオブジェクトの色を基準として、1色だけが1から100まで変化するカラーチャートを作成してくれるスクリプトをChatGPTちゃんにお手伝いしてもらいながら作成しました。
1色だけではなく、全部の色が変化するカラーチャートを作成をしたいときは、「カラーチャート作成スクリプト/Illustrator」の記事を参考にして下さい。
素人が作ったものなので、使ってみて何か問題が起こっても責任は取れません。
動作の正確性や安全性についても保証はできないので、使うのはあくまで自己責任でお願いします。
【使い方】
カラーモードをCMYKにし、基準にしたい色を塗ったオブジェクトを選択して、「CMYK増減チャート_v1.1.jsx」スクリプトを起動する。
※アートボードの左上に作成するので、基準のオブジェクトは左上を避けて作成してください。被ります。

例)Cyan基準、増加値1

【ダウンロード】
Googleドライブです。右上のダウンロードボタンからDLしてください。
https://drive.google.com/file/d/1V3qVaxPGeEhSQQqapk8foXquTG4Zi1WH/view?usp=sharing
右上にこんな感じのボタンがあります。

オブジェクトを選択した状態で、ダウンロードしたスクリプトをドラッグ&ドロップしても使えます。
コードはこんな感じ。
/*
===============================================================
カラーモードがCMYKじゃないと動きません。
基準にしたい色を「塗り」に設定して、選択してからスクリプトを実行してください。
===============================================================
*/
// ダイアログボックスの作成
var dialog = new Window("dialog", "カラーチャート設定");
dialog.orientation = "column";
dialog.alignChildren = "left";
// ラジオボタンのグループを作成
var radioGroup = dialog.add("panel", undefined, "変更する色成分");
radioGroup.orientation = "column";
radioGroup.alignChildren = "left";
radioGroup.margins = 10;
// 各色のラジオボタンを作成
var cyanRadio = radioGroup.add("radiobutton", undefined, "Cyan");
var magentaRadio = radioGroup.add("radiobutton", undefined, "Magenta");
var yellowRadio = radioGroup.add("radiobutton", undefined, "Yellow");
var blackRadio = radioGroup.add("radiobutton", undefined, "Black");
// 増加値の入力フィールドを追加
var incrementGroup = dialog.add("group");
incrementGroup.orientation = "row";
incrementGroup.alignChildren = "left";
incrementGroup.margins = 10;
incrementGroup.add("statictext", undefined, "増加値:");
var incrementInput = incrementGroup.add("edittext", undefined, "1");
incrementInput.characters = 5;
incrementGroup.add("statictext", undefined, "%");
// ボタングループ
var buttonGroup = dialog.add("group");
buttonGroup.orientation = "row";
buttonGroup.alignChildren = "center";
buttonGroup.margins = 10;
// OKボタン
var okButton = buttonGroup.add("button", undefined, "OK");
okButton.onClick = function() {
dialog.close(1);
}
// キャンセルボタン
var cancelButton = buttonGroup.add("button", undefined, "キャンセル");
cancelButton.onClick = function() {
dialog.close(2);
}
// ダイアログボックスを表示
if (dialog.show() == 1) {
// OKがクリックされた場合の処理
createRectangles();
}
// 長方形を作成する関数
function createRectangles() {
// 選択された色の取得
var selectedColor;
if (cyanRadio.value) {
selectedColor = "Cyan";
} else if (magentaRadio.value) {
selectedColor = "Magenta";
} else if (yellowRadio.value) {
selectedColor = "Yellow";
} else if (blackRadio.value) {
selectedColor = "Black";
} else {
alert("色を選択してください。");
return;
}
// 増加値の取得
var increment = parseInt(incrementInput.text);
if (isNaN(increment) || increment <= 0 || increment > 100) {
alert("増加値は1から100の間の整数を入力してください。");
return;
}
// 選択された色に基づいて長方形の色を変更
var selectedObjects = app.activeDocument.selection;
if (selectedObjects.length !== 1 || selectedObjects[0].fillColor.typename !== "CMYKColor") {
alert("作りたい色をCMYKで塗りにし、選択してから起動してください");
} else {
var baseColor = selectedObjects[0].fillColor;
var documentWidth = 297; // ドキュメントの幅
var documentHeight = 420; // ドキュメントの高さ
var mmToPt = 2.83465; // ミリからポイントへの変換率
var rectangleSize = 20; // 長方形の一辺の長さ(ミリメートル)
var rectanglesPerRow = 10; // 一行に並べる長方形の数
var verticalSpacing = 2; // 長方形間の上下の間隔(ポイント)
var initialY = 0; // 初期位置(Y座標)
var initialX = 0; // 初期位置(X座標)
for (var value = 0; value <= 100; value += increment) {
var color = new CMYKColor();
if (selectedColor === "Cyan") {
color.cyan = value;
color.magenta = baseColor.magenta;
color.yellow = baseColor.yellow;
color.black = baseColor.black;
} else if (selectedColor === "Magenta") {
color.cyan = baseColor.cyan;
color.magenta = value;
color.yellow = baseColor.yellow;
color.black = baseColor.black;
} else if (selectedColor === "Yellow") {
color.cyan = baseColor.cyan;
color.magenta = baseColor.magenta;
color.yellow = value;
color.black = baseColor.black;
} else if (selectedColor === "Black") {
color.cyan = baseColor.cyan;
color.magenta = baseColor.magenta;
color.yellow = baseColor.yellow;
color.black = value;
}
// 長方形を作成し、塗りつぶし色を設定
var rectangle = app.activeDocument.pathItems.rectangle(initialY, initialX, rectangleSize * mmToPt, rectangleSize * mmToPt);
rectangle.fillColor = color;
// 数字のテキストフレームを作成
var textFrame = app.activeDocument.textFrames.add();
textFrame.contents = value;
textFrame.top = initialY - 15;
textFrame.left = initialX + (rectangleSize * mmToPt - textFrame.width) / 2;
// テキストの色を設定
var textColor = (value < 50) ? [0, 0, 0, 100] : [0, 0, 0, 0]; // valueが50以下の場合は黒色、50以上の場合は白色
var textFillColor = new CMYKColor();
textFillColor.cyan = textColor[0];
textFillColor.magenta = textColor[1];
textFillColor.yellow = textColor[2];
textFillColor.black = textColor[3];
textFrame.textRange.characterAttributes.fillColor = textFillColor;
// 次の長方形の位置を更新
initialX += (rectangleSize * mmToPt + 2); // 長方形の右に2ポイントの間隔を空ける
if (initialX >= rectanglesPerRow * (rectangleSize * mmToPt + 2)) {
// 一行に指定数の長方形を描いたら、次の行へ
initialX = 0;
initialY -= rectangleSize * mmToPt + verticalSpacing;
}
}
}
}