(クリックで動きます)
160501b

■実は今まで苦戦してました!ちょっとラクになりますわぁ^ ^     

おつかれさまです。@gorolibです。

今回ご提案するのは、1つのオブジェクトを「オブジェクトとアートボードのスキマの中央に自動配置する」スクリプトです。

ぱ、ぱーどぅん?(笑)

ええと(汗)、こういう場合です。
(クリックで動きます)
160501a
 
ロゴをオブジェクトとアートボードのスキマの中央に配置させる感じです。あとからロゴ追加〜とかそういうときですね。

ダウンロードにてご利用ください。タテヨコバージョンがあります。
<タテ>

<ヨコ>


※今回は条件があります。
(1)これから揃えるほうを前面にしてください。
(2)それを「アートボードの揃える側」においてください。
(3)スキマの基準となるオブジェクトも選択してください(2つ選択します)


■オブジェクトとアートボードのスキマって実は基準がとりづらかったのです


ちょっと個別具体的すぎたので、汎用的な説明を。

(クリックで動きます)
160501b


たとえばピンク(グレーの箱よりも前面にしています)。
16

グレーの箱と同時に選択してヨコ版のスクリプトを流すと、こうなります。
26

左側においてあるので、グレーの箱とアートボードの左側とのスキマの中央に揃います。

なお、さらにグレーの箱のy軸の中央に揃えているのはご愛嬌(笑)このほうが使いやすいので…。

ちなみにピンクを右側に置くとこうなります。
16
22


■スマートガイドではサポートされていません!


余談ですがスマートガイドではこの基準はサポートされていません!

いや悔しいじゃないですか、だいたいいつもスクリプト作った後に「スマートガイドで出ます!」という事態になること多いスからねぇ…。今回は検証しましたが、スマートガイドでは出ないようです。


お役に立てれば幸いです!

ではでは出羽の海。


※ソースは参考まで。
━━━━━
// Gorolib26_AlignToBlankCenterV
// Copyright (C) 2016 GOROLIB DESIGN All Rights Reserved.
// v1.0

var DOC = activeDocument
var SEL = DOC.selection
var ABD = DOC.artboards
var RCT = ABD[ABD.getActiveArtboardIndex()].artboardRect
var STB = app.preferences.getBooleanPreference("includeStrokeInBounds")

// 選択オブジェクトの座標取得
function BNDfn ( SELz ) {
// クリッピングマスク
if ( SELz.typename == "GroupItem" && SELz.clipped == true ) {
var BNDx = SELz.pageItems[0].geometricBounds
// プレビュー境界オン
} else if ( STB == true ) {
var BNDz = SELz.visibleBounds
} else {
var BNDz = SELz.geometricBounds
}
return BNDz
}

// メイン処理
if ( SEL.length != 2 ) {

alert("2つのオブジェクトを選択してください")

} else {
var BND0 = BNDfn ( SEL[0] ) 
var BND1 = BNDfn ( SEL[1] ) 
var x0 = ( BND0[0] + BND0[2] ) / 2
var y0 = ( BND0[1] + BND0[3] ) / 2
var Cx = ( BND1[0] + BND1[2] ) / 2 
var M1 = Math.abs( RCT[1] - y0 )
var M3 = Math.abs( RCT[3] - y0 )
if ( M1 < M3 ) {
var Cy = ( RCT[1] + BND1[1] ) / 2
} else {
var Cy = ( RCT[3] + BND1[3] ) / 2
}

SEL[0].translate( Cx - x0 , Cy - y0 )
}
━━━━━
// Gorolib25_AlignToBlankCenterH
// Copyright (C) 2016 GOROLIB DESIGN All Rights Reserved.
// v1.0

var DOC = activeDocument
var SEL = DOC.selection
var ABD = DOC.artboards
var RCT = ABD[ABD.getActiveArtboardIndex()].artboardRect
var STB = app.preferences.getBooleanPreference("includeStrokeInBounds")

// 選択オブジェクトの座標取得
function BNDfn ( SELz ) {
// クリッピングマスク
if ( SELz.typename == "GroupItem" && SELz.clipped == true ) {
var BNDx = SELz.pageItems[0].geometricBounds
// プレビュー境界オン
} else if ( STB == true ) {
var BNDz = SELz.visibleBounds
} else {
var BNDz = SELz.geometricBounds
}
return BNDz
}

// メイン処理
if ( SEL.length != 2 ) {

alert("2つのオブジェクトを選択してください")

} else {
var BND0 = BNDfn ( SEL[0] ) 
var BND1 = BNDfn ( SEL[1] ) 
var x0 = ( BND0[0] + BND0[2] ) / 2
var y0 = ( BND0[1] + BND0[3] ) / 2
var Cy = ( BND1[1] + BND1[3] ) / 2 
var M0 = Math.abs( RCT[0] - x0 )
var M2 = Math.abs( RCT[2] - x0 )
if ( M0 < M2 ) {
var Cx = ( RCT[0] + BND1[0] ) / 2
} else {
var Cx = ( RCT[2] + BND1[2] ) / 2
}

SEL[0].translate( Cx - x0 , Cy - y0 )
}
━━━━━