選択したオブジェクトのサイズを入力するスクリプト/Illustrator
2025-01-08
素人が作ったものなので、使ってみて何か問題が起こっても責任は取れません。
動作の正確性や安全性についても保証はできないので、使うのはあくまで自己責任でお願いします。
【使い方】
サイズを知りたいオブジェクトを選択して、「サイズ記入」スクリプトを起動する。
左上に横サイズ×縦サイズを書いたテキストが追加されます。
【ダウンロード】
Googleドライブです。右上のダウンロードボタンからDLしてください。
https://drive.google.com/file/d/1h7iOkAMb7Eb0FUECbjt2qQuFRnP8lD0S/view?usp=sharing
右上にこんな感じのボタンがあります。
【ダウンロード】
Googleドライブです。右上のダウンロードボタンからDLしてください。
https://drive.google.com/file/d/1h7iOkAMb7Eb0FUECbjt2qQuFRnP8lD0S/view?usp=sharing
右上にこんな感じのボタンがあります。
コードはこんな感じ。
/** * 選択したオブジェクトのサイズを測定し、その寸法を表示するスクリプト * 寸法の前に「W」(幅)と「H」(高さ)を表示します */ (function() { // グローバル変数 var selectedObjects = activeDocument.selection; var activeLayer = activeDocument.activeLayer; var rulerUnitType = app.preferences.getIntegerPreference("rulerType"); var unitTypes = ["inch", "mm", "pt", "pica", "cm", "H", "px"]; // メイン処理 function main() { if (app.documents.length === 0 || selectedObjects.length === 0) { alert("ドキュメントを開き、オブジェクトを選択してから実行してください。"); return; } for (var i = 0; i < selectedObjects.length; i++) { processSingleObject(selectedObjects[i]); } activeDocument.selection = null; } /** * 単一のオブジェクトを処理し、サイズ情報を表示する * @param {Object} object - 処理対象のオブジェクト */ function processSingleObject(object) { var bounds = object.geometricBounds; var width = convertUnits(bounds[2] - bounds[0], "pt", unitTypes[rulerUnitType]); var height = convertUnits(bounds[1] - bounds[3], "pt", unitTypes[rulerUnitType]); var sizeText = createSizeTextFrame(width, height); positionSizeText(sizeText, bounds); } /** * サイズ情報を表示するテキストフレームを作成する * @param {number} width - オブジェクトの幅 * @param {number} height - オブジェクトの高さ * @returns {Object} 作成されたテキストフレーム */ function createSizeTextFrame(width, height) { var textFrame = activeLayer.textFrames.add(); textFrame.contents = "W" + width + "×H" + height + unitTypes[rulerUnitType]; textFrame.textRange.characterAttributes.size = 12; return textFrame; } /** * サイズ情報のテキストフレームを適切な位置に配置する * @param {Object} textFrame - 配置するテキストフレーム * @param {Array} objectBounds - 元のオブジェクトの境界 */ function positionSizeText(textFrame, objectBounds) { var textBounds = textFrame.geometricBounds; var xOffset = objectBounds[0] - textBounds[0]; var yOffset = objectBounds[1] - textBounds[0] + 6; textFrame.translate(xOffset, yOffset); } /** * 単位を変換する * @param {number} value - 変換する値 * @param {string} fromUnit - 元の単位 * @param {string} toUnit - 変換後の単位 * @returns {number} 変換後の値(小数点第3位で四捨五入) */ function convertUnits(value, fromUnit, toUnit) { var convertedValue = new UnitValue(value, fromUnit).as(toUnit); return Math.round(convertedValue * 1000) / 1000; } // スクリプトの実行 main(); })();