TIPSSS

memos

Illustrator内で、名前が「targetColor」と「newColor」のオブジェクトをそれぞれ配置

Illustratorで「ファイル」メニュー → 「スクリプト」 → 「その他のスクリプト」からchangeColor.jsxを実行

changeColor.jsx
```` function changeColorFromObjectNames() { // ドキュメントを取得 var doc = app.activeDocument; // オブジェクト "targetColor" と "newColor" を取得 var targetObject = findObjectByName("targetColor"); var newObject = findObjectByName("newColor"); if (!targetObject || !newObject) { alert("オブジェクト 'targetColor' または 'newColor' が見つかりません。"); return; } // オブジェクトから塗りの色を取得 var targetColor = targetObject.fillColor; var newColor = newObject.fillColor; if (!targetColor || !newColor) { alert("オブジェクト 'targetColor' または 'newColor' に有効な塗りの色がありません。"); return; } // 塗りの色をカラーコードに変換 var targetHex = rgbToHex(targetColor); var newHex = rgbToHex(newColor); // 新しい色をカラーコードからRGBColorに変換 var newRGBColor = hexToRGB(newHex); // すべてのオブジェクトを取得 var items = doc.pageItems; // すべてのオブジェクトをループ for (var i = 0; i < items.length; i++) { var item = items[i]; // "targetColor" や "newColor" オブジェクトは変更しない if (item === targetObject || item === newObject) { continue; // スキップして次のオブジェクトへ } // 通常の塗りと線の色を変更 if (item.filled && compareColors(item.fillColor, hexToRGB(targetHex))) { item.fillColor = newRGBColor; } if (item.stroked && compareColors(item.strokeColor, hexToRGB(targetHex))) { item.strokeColor = newRGBColor; } // アピアランスの項目に対して色を変更 changePathAppearanceColors(item, targetHex, newRGBColor); // テキストオブジェクトの場合、テキストの塗りと線の色を変更 if (item.typename === "TextFrame") { changeTextColors(item, targetHex, newRGBColor); } } } // オブジェクト名で検索して該当するオブジェクトを返す関数 function findObjectByName(name) { var items = app.activeDocument.pageItems; for (var i = 0; i < items.length; i++) { if (items[i].name === name) { return items[i]; } } return null; } // テキストフレーム内のテキストの色を変更する関数 function changeTextColors(textFrame, targetHex, newRGBColor) { var characters = textFrame.textRange.characters; for (var i = 0; i < characters.length; i++) { var character = characters[i]; if (compareColors(character.fillColor, hexToRGB(targetHex))) { character.fillColor = newRGBColor; } if (compareColors(character.strokeColor, hexToRGB(targetHex))) { character.strokeColor = newRGBColor; } } } // アピアランスの塗りや線の色を変更する関数 function changePathAppearanceColors(item, targetHex, newRGBColor) { // アピアランスの効果を確認し、色を変更 try { var appearance = item.graphicStyles[0].attributes; for (var j = 0; j < appearance.length; j++) { var appearanceItem = appearance[j]; if (appearanceItem.filled && compareColors(appearanceItem.fillColor, hexToRGB(targetHex))) { appearanceItem.fillColor = newRGBColor; } if (appearanceItem.stroked && compareColors(appearanceItem.strokeColor, hexToRGB(targetHex))) { appearanceItem.strokeColor = newRGBColor; } } } catch (e) { // アピアランスの取得が失敗してもスクリプトを終了しない $.writeln("アピアランスの取得に失敗しました: " + e.message); } } // RGBColorオブジェクトをカラーコードに変換する関数 function rgbToHex(color) { function componentToHex(c) { var hex = Math.round(c).toString(16); return hex.length == 1 ? "0" + hex : hex; } return "#" + componentToHex(color.red) + componentToHex(color.green) + componentToHex(color.blue); } // カラーコードをRGBColorに変換する関数 function hexToRGB(hex) { var rgbColor = new RGBColor(); hex = hex.replace("#", ""); if (hex.length === 6) { rgbColor.red = parseInt(hex.substring(0, 2), 16); rgbColor.green = parseInt(hex.substring(2, 4), 16); rgbColor.blue = parseInt(hex.substring(4, 6), 16); } return rgbColor; } // RGBカラーオブジェクトを比較する関数 function compareColors(color1, color2) { return (color1.red == color2.red && color1.green == color2.green && color1.blue == color2.blue); } // スクリプトを実行 changeColorFromObjectNames(); ````
memo

スクリプトを作成

毎回読み込む方法

Ctrl +F12で

登録(?)するほうほう

C:\Program Files\Adobe\Adobe Illustrator 2024\Presets\ja_JP\スクリプト

配下にjsxファイルを置いて再起動

参考:https://namayakegadget.com/1382/

アクションに登録する方法