■ついに、ついにできました!もう整列基準はアートボード固定で大丈夫です
おつかれさまです。GOROLIB DESIGNです。
ついにイラストレーターの整列基準をサクッと変更できないか問題に終止符を打ちます!
…打つところです。
打とうかな。
いやいや、とりあえずお茶ね(自信なし(笑))
発端は整列パネルの整列基準を「アートボードに整列」のままで、等間隔に分布させると、
こーんなになったり、
こーんなになったりするのが
イヤでイヤで仕方なかったことです。
しかし整列パネルの整列基準は、ショートカットなどでサクサクと変更することがどうしてもできず、悶々としていたのです。
では、整列基準は「アートボードに整列」のままに、選択オブジェクトを等間隔に分布できればいいのではないか?というのが今回の趣旨であり、これでこの問題に終止符を打ちたい所存なのであります。
スクリプトとアクションのセットでダウンロードしてください。
整列処理はさすがにスクリプト化できなかったので、アクションを用意しておいて、それを呼び出す形式にしました。
スクリプトを起動して、アクションを呼び出す形です。
以下、ダウンロードにてお願いいたします。
(アクション)
DistributeSpace.aia
(スクリプト)
Gorolib_DistributeSpaceHorizontal.jsx
Gorolib_DistributeSpaceVertical.jsx
アクションの登録について。
参考:イラストレーターでアクションの読み込みを行う方法
スクリプトの登録について。
参考:イラストレーターでスクリプトをサクッと起動する方法
なお、スクリプトからアクションを呼び出せるのはイラストレーターCS6以降になりますので、ご了承くださいませ…。
■選択範囲を一瞬だけアートボード化します。
では行きます。整列基準は「アートボードに整列」のままでいいんです!
・選択範囲を一瞬だけアートボード化して
・その間にササッと整列し、
・何事もなかったかのように元のアートボードに戻します(笑)
ではでは出羽の海。
※コードは以下のとおりです。
━━━━━━━━━━
// Gorolib_DistributeSpaceHorizontal
// Copyright (C) 2016 GOROLIB DESIGN All Rights Reserved.
// v1.0
DOC = activeDocument;
SEL = DOC.selection;
//最前面の選択オブジェクトの位置をスタートとする
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];
}
//アクティブなアートボードを取得して保存
ABD = DOC.artboards[DOC.artboards.getActiveArtboardIndex()];
SAV = ABD.artboardRect;
//選択範囲をアートボードに変換
RCT[0] = x1;
RCT[1] = y1;
RCT[2] = x2;
RCT[3] = y2;
ABD.artboardRect = RCT;
//等間隔に分布(アクション起動)
app.doScript("DistributeSpaceHorizontal", "DistributeSpace");
//元のアートボードに戻す
ABD.artboardRect = SAV;
━━━━━━━━━━
// Gorolib_DistributeSpaceVertical
// Copyright (C) 2016 GOROLIB DESIGN All Rights Reserved.
// v1.0
DOC = activeDocument;
SEL = DOC.selection;
//最前面の選択オブジェクトの位置をスタートとする
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];
}
//アクティブなアートボードを取得して保存
ABD = DOC.artboards[DOC.artboards.getActiveArtboardIndex()];
SAV = ABD.artboardRect;
//選択範囲をアートボードに変換
RCT[0] = x1;
RCT[1] = y1;
RCT[2] = x2;
RCT[3] = y2;
ABD.artboardRect = RCT;
//等間隔に分布(アクション起動)
app.doScript("DistributeSpaceVertical", "DistributeSpace");
//元のアートボードに戻す
ABD.artboardRect = SAV;
━━━━━━━━━━
コメント
このブログにコメントするにはログインが必要です。
さんログアウト
この記事には許可ユーザしかコメントができません。