系統図などで四角い枠の中に文字をレイアウトすることがあります。そのような場合、文字と枠の大きさを最後に調整する時に自動的に枠をテキストボックスの大きさに合わせてくれると便利です。
以下のスクリプトはテキストボックスと枠の2つを選択し実行すると自動的にテキストボックスのサイズに枠を合わせてくれます。
枠は四角形だけでなく楕円でも六角形でも自動的に処理されサイズが調整されます。
// sel1はテキスト、sel2はボックスというのが大前提
marginLeft = 10; // 左側の余白(単位はピクセル)
marginRight = 10; // 右側の余白(単位はピクセル)
marginTop = 10; // 上側の余白(単位はピクセル)
marginBottom = 10; // 下側の余白(単位はピクセル)
sel1 = activeDocument.selection[0];
sel2 = activeDocument.selection[1];
if (sel1.typename != "TextFrame") {
sel = sel1;
sel1 = sel2;
sel2 = sel;
}
sel1X1 = sel1.geometricBounds[0];
sel1Y1 = sel1.geometricBounds[1];
sel1X2 = sel1.geometricBounds[2];
sel1Y2 = sel1.geometricBounds[3];
sel2X1 = sel2.geometricBounds[0];
sel2Y1 = sel2.geometricBounds[1];
sel2X2 = sel2.geometricBounds[2];
sel2Y2 = sel2.geometricBounds[3];
w1 = Math.abs(sel1X2-sel1X1) + marginLeft + marginRight;
w2 = Math.abs(sel2X2-sel2X1);
h1 = Math.abs(sel1Y2-sel1Y1) + marginTop + marginBottom;
h2 = Math.abs(sel2Y2-sel2Y1);
sel2.resize(w1/w2*100, h1/h2*100);
sel1X1 = sel1.geometricBounds[0];
sel1Y1 = sel1.geometricBounds[1];
sel1X2 = sel1.geometricBounds[2];
sel1Y2 = sel1.geometricBounds[3];
sel2X1 = sel2.geometricBounds[0];
sel2Y1 = sel2.geometricBounds[1];
sel2X2 = sel2.geometricBounds[2];
sel2Y2 = sel2.geometricBounds[3];
sel2.translate(sel1X1-sel2X1, sel1Y1-sel2Y1);
sel2.translate(-marginLeft, marginTop);
[
サンプルをダウンロード]