■とにかく一瞬で長方形にしたいマニアの方に贈ります(笑)

ダウンロードはこちらからどうぞ。


おつかれさまです。GOROLIB DESIGNです。


なぜだかわかりませんが過去記事を鑑みると、私はオブジェクトを強引に長方形にする処理が好きですねぇ。

その筆頭は段組設定さんです(今や敬意を表してさん付けです)。

どんなに離れていようが、丸だろうと三角だろうと、1行1列にすると一瞬で長方形にしてくれます。

参考:段組設定を使うとレイアウトの効率が異次元になる件
http://gorolib.blog.jp/archives/37483686.html

しかーし!そんな段組設定さんにも不得手がございまして…。

エリア文字やポイント文字、プレビュー境界を鑑みた長方形にはしてくれません。

こういうやつ。
10

そりゃそうよね。元々そんな機能じゃないもんね。段組設定さん、おつかれさまです。


こういうやつを見た目の大きさで長方形にするのは面倒です。


パスのアウトラインをかけてから、全体をグループ化し、
 
・段組設定で1行×1列に。もしくは
・効果>長方形に変換で、幅に追加=0、高さに追加=0

と、なかなかに工程が多い…。


なので、どんなオブジェクトでも選択した範囲の「見た目の大きさ」で長方形に変換するスクリプトを作りました。なんでもござれです。グループ化も不要です。


一瞬でこうなります!
10
 
54

これぞ長方形無双!暴れん坊将軍!

カーーーーッ!(効果音:ビブラスラップ)
http://drum-percussion.info/category7/category134/



は、話がそれました…(笑)


ソースは後述しますが、あれです、範囲をvisibleBoundsで取得しているので、いわゆるこれがプレビュー境界オンのときの「見た目の大きさ」と同じです。


重ねてみるとこんな感じ。パスのアウトラインをかけなくてもいいんですね。
07

ちなみにエリア文字、ポイント文字に「オブジェクトのアウトライン」をかけておけば、ちゃんと文字面で長方形にしてくれますよ!


また、元のオブジェクトを消さなくていい、という方はスクリプトから、

SEL[N].remove();

の1行を削除すればOKです。


ではでは出羽の海。


ダウンロードはこちらからどうぞ。


スクリプトの起動についてはこちらを参照ください。
参考:イラストレーターでスクリプトをサクッと起動する方法
http://gorolib.blog.jp/archives/35402049.html


ソースはこちらです。
━━━━━
// Gorolib_SelectedAreaRectangle
// Copyright (C) 2016 GOROLIB DESIGN All Rights Reserved.

DOC = activeDocument;
SEL = DOC.selection;
LAY = DOC.activeLayer;

RCT = SEL[0].visibleBounds;
x1 = RCT[0];
y1 = RCT[1];
x2 = RCT[2];
y2 = RCT[3];

for ( N=0 ; N<SEL.length ; N++ ) {

// 選択オブジェクトのサイズを取得
BND = SEL[N].visibleBounds;

// 最大サイズを比較抽出
if ( BND[0] < x1 ) { x1 = BND[0] };
if ( BND[1] > y1 ) { y1 = BND[1] };
if ( BND[2] > x2 ) { x2 = BND[2] };
if ( BND[3] < y2 ) { y2 = BND[3] };

// 選択オブジェクトを削除
SEL[N].remove();
}

// 長方形の作成
OBJ = LAY.pathItems.rectangle( y1 , x1 , x2-x1 , -(y2-y1) );
OBJ.filled = false; //  塗りなし
OBJ.stroked = false; //  線なし
OBJ.selected = true; //  選択する
━━━━━


(追記160404)やっぱりプレビュー境界オフ的な取得もしたいのでプレビュー境界オン=visibleBounds、プレビュー境界オフ=geometricBoundsという条件分岐を追加しました。バージョン1.1です。
(スクリーンショットはわかりやすいように重ねてますが、スクリプトでは選択オブジェクトはきれいに消えちゃいます)

07