土曜日, 12月 02, 2023

JavaScriptでAI遊び 13 
選択したオブジェクトを書類の中心へ

選択したオブジェクトをドキュメントの中心に移動させます。手のひらツールとコピー&ペーストの組み合わせでもで来ますが表示を変更せずに処理出来るメリットを考慮してみました。

// アクティブなドキュメントを取得
var doc = app.activeDocument;

// 選択されたオブジェクトを取得
var selectedObjects = doc.selection;

// 選択されたオブジェクトが存在する場合
if (selectedObjects.length > 0) {
// ドキュメントの幅と高さを取得
var docWidth = doc.width;
var docHeight = doc.height;

// 選択されたオブジェクトの境界ボックスを取得
var selectedBounds = selectedObjects[0].geometricBounds;

// 選択されたオブジェクトの中心座標を計算
var centerX = (selectedBounds[0] + selectedBounds[2]) / 2;
var centerY = (selectedBounds[1] + selectedBounds[3]) / 2;

// 移動先の座標を計算
var moveToX = docWidth / 2 - centerX;
var moveToY = (docHeight / 2 - centerY) - docHeight;

// 選択されたオブジェクトを移動
selectedObjects[0].translate(moveToX, moveToY);
} else {
alert("オブジェクトが選択されていません。");
}

上図の左端の状態で当初は以下のソースにしたのですが・・・

// 移動先の座標を計算
var moveToX = docWidth / 2 - centerX;
var moveToY = docHeight / 2 - centerY;

図の真ん中の状態になってし舞いました。そこで色々調べて見ると、ドキュメントの高さが本来配置したい位置から同じ分離れていることが解りソースを以下の様にしました。

// 移動先の座標を計算
var moveToX = docWidth / 2 - centerX;
var moveToY = (docHeight / 2 - centerY) - docHeight;