素人が作ったものなので、使ってみて何か問題が起こっても責任は取れません。
動作の正確性や安全性についても保証はできないので、使うのはあくまで自己責任でお願いします。
【使い方】
サイズを知りたいオブジェクトを選択して、「サイズ記入」スクリプトを起動する。
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();
})();
