Practice makes Perfect !

ExtendedScript素人です。同じ境遇の方、一緒に脱素人を目指しましょう!

実験002_2021.10-2

選択オブジェクトの座標の汚い数字をすっきりするスクリプト

会社によるのでしょうが、現在の勤務先では「このお客様の仕事はこの人が担当する」といった決まりが特にありません。もちろんお客様に気に入っていただけるものを作った場合などは、次回も指名を受けたりとか、営業が仕事を手配する際に制作担当の指名はあったりはしますが、基本的には「仕事の量に偏りが出ないように振り分けなさい」というのが会社の方針です。
そうすると、まあどこにでもあることでしょうが、当然のことながら、別の人が作ったデータを使って作業するということが出てきます。
制作にあたってのルールは社内である程度は決めてはいますが、なかなか作業の仕方の統一は難しく、ルールを守らない人、新しい機能を勉強しないで作業する人、古いやり方で時間をかけて「あー、面倒くさいー!」と言っている人、などなど……。ですので流用データを扱うときに「あれ?」って思うことはたびたびあるわけです。
そんな中でも、新機能云々以前に私が嫌なのがオブジェクトを選択したときに変形パレットに表示される数値が汚いデータを触ることです。
Xが32.876,Yが111.4409,Wが…,Yが……みたいなデータ……。


「汚い」って思っちゃう。


自分の精神を清潔に保ちたいのでこういうデータに遭遇した時にスクリプトが助けてくれないかなって思って今回は選択オブジェクトの座標の数値を整数にしてくれるスクリプトを考えてみました。

var mySelection = app.activeDocument.selection;

//何も選択されてない場合にアラート
if(mySelection.length==0){
	alert("オブジェクトを選択してください");
	}else{
		
//for文で複数選択した場合にも対応
for(var i=0; i<mySelection.length; i++){

/*
geometricBoundsは線幅を含まない場合。
線幅を含める場合はvisibleBoundsに変更。
toFixed()で数値を整数にする。
*/
    mySelection[i].geometricBounds=[
    mySelection[i].geometricBounds[0].toFixed(),
    mySelection[i].geometricBounds[1].toFixed(), 
    mySelection[i].geometricBounds[2].toFixed(), 
    mySelection[i].geometricBounds[3].toFixed(), 
];
}
}


図で説明すると

f:id:YustinBieber:20211030102612p:plain

こんな感じの汚い数値が


f:id:YustinBieber:20211030102616p:plain
こんな風になります。

何度も言いますが、スクリプトにはショートカットを設定しましょう! ショートカットを設定すればポチッとキーボードを打つだけで数値がきれいになるので、お部屋を掃除したときみたいに本当に気持ちがすっきりしますよ。

toFixed()は数値を四捨五入してくれて、また、( )の中に数値を入れると小数点第何位までか指定できるようです。

個人的には0.5や0.25、0.75という数値はありなのでその辺も制御できたらと思ったのですが、残念ながら調べてもわかりませんでした。

toFixed()に関してはこちらで勉強させていただきました。
developer.mozilla.org


注意したいのは線幅を含んでいるときです。
上のスクリプトでは「geometricBounds」で指定していますので、線幅を含んだオブジェクトには線幅が適用されたままです。
この場合は「geometricBounds」を「visibleBounds」に変えればよいです。

ちなみにInDesignの線幅について私はデフォルトで「線を内側に揃える」に変更しているので

f:id:YustinBieber:20211030110237p:plain
内側ならオブジェクトサイズの管理が楽

「geometricBounds」でも「visibleBounds」でも気にならないのですが、変形パレットで「境界線の線幅を含む」にチェックを入れつつ「線を中央に揃える」にしていると混乱するかも知れません。

f:id:YustinBieber:20211030110632p:plain
InDesignを使い始めたころはこの設定のおかげで混乱した

こちらに詳しく書いてます。
study-room.info

こんな感じで、素人でも簡単なスクリプトを書いてできることがたくさんあるので、少しでも興味があるなら絶対絶対絶対勉強するべきですよ!