(クリックで動きます)
160503


■ずっと欲しかったこの機能!変形パネルも線のダイレクト選択も不要です!    
 
おつかれさまです。@gorolibです。

これは私がずっとほしかった機能です。

オブジェクトに塗り足し分を自動でつけて、塗り足し範囲まで自動整列するというスクリプトです。

機能はタテヨコに分けてあります。ダウンロードにてご利用ください。

<タテ>

<ヨコ>


※ネーミングが長いのにいやけがさし、GorolibをGに変更しています。すみません…。


■塗り足しつけるのってとっても面倒!


塗り足しつけるのってとっても面倒です。

いえ、最初から塗り足しを加味して作成してればいいのですが、そうすると整列が面倒だったりするので(例えば塗り足しありオブジェクトの中心をめがけて整列とか)、私は塗り足しなしで制作開始します。

で校了間際に(入稿時に慌てないように)塗り足しをつけるのですが、これがとっても面倒でした。

4方向ならオフセットで一発ですが、それ以外の場合は変形パネルで変形方向を意識しながら、幅や高さに塗り足しを足すか、はたまたダイレクト選択ツールで端部の線だけを選択し、塗り足し分ひっぱるかなど、

チマチマチマチマ

した作業が求められます(笑)。これがいやでいやで…。

で、だいたいそのオブジェクトの大きさや位置によって、塗り足しなんて自動判定できるだろうとつくったのがこのスクリプトです。

ちなみに塗り足しは3ミリ固定です。ドキュメント設定の塗り足し値がどこにあるかわからず…。でもこれでいいかな。特にドキュメント設定の塗り足し値、ほとんど使ってないからなぁ。


■そこのキミにも、そこのあなたにも塗り足しを!


塗り足しつけたいオブジェクトをぜーんぶ選んでください。いっぺんに塗り足しつけて並べちゃいます。
(クリックで動きます)
160503c
 
ええ、いいですよぉ〜。そこのキミも、そこのあなたも!ぜーんぶ塗り足しつけちゃいます。自動で。

…なんだろう、ちょっとキケンだよねという方に、以下、仕様の説明です(笑)
 

■大きさと置いてある位置で自動判定します

(クリックで動きます)
160503
 
ええと、ヨコ版で説明すると、オブジェクトの大きさと置いてある位置によって、
(1)塗り足しは片側だけか、両側か
(2)片側なら右と左のどちらにつけるか
を自動判定しています。
 

(1)塗り足しは片側だけか、両側か


これについては、アートボードの大きさと選択されたオブジェクトの大きさを比較します。ヨコ版ですと、
・アートボード幅の半分より小さいオブジェクトは、片側に塗り足しをつけます
・アートボード幅の半分以上のオブジェクトは、両側に塗り足しをつけます

アートボード幅の半分以上のオブジェクトは、

ヨコいっぱいでいいんでしょ?これがいいんでしょ?

と判断し、アートボード幅+両側塗り足しのサイズに変更しちゃいます。か、勝手ですねぇ(笑)

ちなみに三方向につけたい場合は、ヨコのあと、タテを起動してください。2回起動で完成します。
(クリックで動きます)
160503b


(2)片側なら右と左のどちらにつけるか

さてその塗り足しありのオブジェクトをどちらに移動させるかですが、

・オブジェクトの中心がアートボードの真ん中よりも左ならば、左側の塗り足しまで移動
・オブジェクトの中心がアートボードの真ん中よりも右ならば、右側の塗り足しまで移動

としています。両側に塗り足しがついたものも同じ扱いですが、結局は
アートボード幅+両側塗り足しのサイズ
なので、いっぱいいっぱいになります。

(1)(2)はタテ版も同様の仕様です。


■プレビュー境界およびクリッピングマスクには対応していません
m(_ _)m


なお線幅などを鑑みたプレビュー境界のオンオフ、およびクリッピングマスクには対応しておりませんので、あしからず(笑)

「線幅などを鑑みたプレビュー境界のオンオフ」については、できなくもないのですが、環境設定の「線幅と効果も拡大・縮小」がからんできそうでビビっております…。いえ、シンプルな機能のほうが長持ちしますからね(と言い訳)。

またクリッピングマスクについては、そもそもオブジェクトを変形しちゃうので画像を変形しちゃまずかろうとこれも未対応です。

まぁやろうと思えば、グループあり&クリッピングマスクありのオブジェクトの一番上のパスアイテムを変形対象にすれば、画像をゆがめることなくマスクだけを変形できそうなのですが、なんとなくクリッピングマスクを解除せずに変形しようというのが「神の領域」な気がして手が出ません…。

オーバーですねぇ。ただクリッピングマスクを解除せずに変形するとなんとなく影響でかそうなので、やめときます。

これも「シンプルなスクリプト長持ちアルヨ」理論にて切り捨てました(笑)


お役に立てれば幸いです!ではでは出羽の海。


参考までにヨコ版のソースです
━━━━━
// G27_FitToBleedX
// 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")

var ptEQ = 25.4 / 72
var T1 = 3 / ptEQ

// 選択オブジェクトの座標取得
function BNDfn ( SELz ) {
var BNDz = SELz.geometricBounds
return BNDz
}

// メイン処理
if ( SEL ) {
var RCTXcen = ( RCT[0] + RCT[2] ) / 2
var RCTw = Math.abs( RCT[2] - RCT[0] )
for ( var N=0 ; N<SEL.length ; N++ ) {
// オブジェクト座標取得
var BND = BNDfn( SEL[N] )

var SELw = Math.abs( BND[2] - BND[0] )
var Xcen = ( BND[0] + BND[2] ) / 2

// 塗り足し分の算出
if ( SELw < RCTw / 2 ) {
SEL[N].width = SELw + T1
} else {
SEL[N].width = RCTw + T1*2

}

// オブジェクト座標取得(再)
var BND = BNDfn( SEL[N] )

// 移動距離算出
if ( Xcen < RCTXcen ) {
var Tx = RCT[0] - T1 - BND[0]
} else {
var Tx = RCT[2] + T1 - BND[2]
}

// オブジェクト移動
SEL[N].translate(Tx, 0) 
}
}
━━━━━