選択されたレイヤーの座標値を表示する (Photoshop CS2編)

前回と同様に今度はPhotoshop CS2で選択したレイヤーの座標値をテキストレイヤーとして生成するスクリプトです。Photoshop CS2では複数のレイヤーを選択できますが、今回のスクリプトは1つだけ選択してください。複数選択には対応していないためです。以下のスクリプトは選択したレイヤーの右下の座標値を表示するものです。


saveUnit = preferences.rulerUnits;
preferences.rulerUnits = Units.PIXELS;
offsetX2 = 0; // 横のオフセット(単位はピクセル)
offsetY2 = 0; // 縦のオフセット(単位はピクセル)
layObj = activeDocument.activeLayer;
x1 = parseInt(layObj.bounds[0]);
y1 = parseInt(layObj.bounds[1]);
x2 = parseInt(layObj.bounds[2]);
y2 = parseInt(layObj.bounds[3]);
textObj = activeDocument.artLayers.add();
textObj.kind = LayerKind.TEXT;
textObj.textItem.contents = "(" + x2 + ", " + y2 +")";
textObj.textItem.justification = Justification.LEFT;
tx1 = parseInt(textObj.bounds[0]);
ty1 = parseInt(textObj.bounds[1]);
tx2 = parseInt(textObj.bounds[2]);
ty2 = parseInt(textObj.bounds[3]);
textObj.translate(x2-tx1 + offsetX2, y2-ty1 + offsetY2);
preferences.rulerUnits = saveUnit;

座標値の表示位置の調整は以下の2行の数値を変更してください。
offsetX2 = 0; // 横のオフセット(単位はピクセル)
offsetY2 = 0; // 縦のオフセット(単位はピクセル)

Photoshopの場合はIllustratorと異なりピクセル以外の単位も指定することができます。この単位を設定しているのが以下の行です。
preferences.rulerUnits = Units.PIXELS;

サンプルではピクセルを指定していますが、センチメートルやミリメートル、パイカやポイントなど以下のものが指定できます。

Units.CM
Units.INCHES
Units.MM
Units.PERCENT
Units.PICAS
Units.PIXELS
Units.POINTS

右下だけでなく左上の座標値も表示させたい場合には以下のスクリプトを使います。表示位置のずれ具合などは2〜6行目までのオフセット値を変更してください。
saveUnit = preferences.rulerUnits;
preferences.rulerUnits = Units.PIXELS;
offsetX1 = 0; // 左上の座標値の横のオフセット(単位はピクセル)
offsetY1 = 0; // 左上の座標値の縦のオフセット(単位はピクセル)
offsetX2 = 0; // 右下の座標値の横のオフセット(単位はピクセル)
offsetY2 = 0; // 右下の座標値の縦のオフセット(単位はピクセル)
layObj = activeDocument.activeLayer;
x1 = parseInt(layObj.bounds[0]);
y1 = parseInt(layObj.bounds[1]);
x2 = parseInt(layObj.bounds[2]);
y2 = parseInt(layObj.bounds[3]);
textObj = activeDocument.artLayers.add();
textObj.kind = LayerKind.TEXT;
textObj.textItem.contents = "(" + x2 + ", " + y2 +")";
textObj.textItem.justification = Justification.LEFT;
tx1 = parseInt(textObj.bounds[0]);
ty1 = parseInt(textObj.bounds[1]);
tx2 = parseInt(textObj.bounds[2]);
ty2 = parseInt(textObj.bounds[3]);
textObj.translate(x2-tx1 + offsetX2, y2-ty1 + offsetY2);
textObj = activeDocument.artLayers.add();
textObj.kind = LayerKind.TEXT;
textObj.textItem.contents = "(" + x1 + ", " + y1 +")";
textObj.textItem.justification = Justification.RIGHT;
tx1 = parseInt(textObj.bounds[0]);
ty1 = parseInt(textObj.bounds[1]);
tx2 = parseInt(textObj.bounds[2]);
ty2 = parseInt(textObj.bounds[3]);
textObj.translate(x1-tx2 + offsetX1, y1-ty2 + offsetY1);
preferences.rulerUnits = saveUnit;

[サンプルをダウンロード]