ふわふわぷかぷか

最近はイラレとAeにはまってます。

【Illustratorスクリプト】オブジェクトの位置を取得して中心に角を合わせた四角形を作成。

Windows10、CS4

イラレスクリプトでオブジェクトの位置(座標?)を取得して、中心に角を合わせた四角形を作成する方法です。

f:id:fuwafuwapukapuka:20171026163746p:plain → f:id:fuwafuwapukapuka:20171026163749p:plain

花はこちらを使用しています。AIデータあり。商用利用可能で無料でダウンロードできます。

 

ソースコードです。

#target "illustrator" 

//選択中のオブジェクトを取得
var sel = app.activeDocument.selection; //座標を取得
var bns = sel[0].visibleBounds;

//四角形を作成
docObj = activeDocument;
pObj = docObj.pathItems.rectangle(((bns[1]+bns[3])/2),((bns[0]+bns[2])/2),200,100);

 

中心の座標を直接取する方法は分かりませんでした。なので((左上-右下)÷2)で求めています。

Illustratorでは、①左上のy座標、②左上のx座標、③右下のy座標、④右下のx座標、の順に取得するようです。

取得は①左上のx座標、②左上のy座標、③右下のx座標、④右下のy座標。

書き出すときの書き方は①左上のy座標、②左上のx座標、③右下のy座標、④右下のx座標。でした。

なんでこんなふうにしてくれたんだろう。

 ((bns[1]+bns[3])/2)が「+」だよ?と思ったかもしれませんが、y座標は下方向が+のようです。(bns[1]-(-bns[3]))/2ということです。ちょっと複雑。

(((bns[1]+bns[3])/2),((bns[0]+bns[2])/2),200,100)→(左上y座標,左上x座標,横幅,縦幅)です。

四角形の作成については下記のサイトを参考にしました。

四角形を作成する

 
var sel = app.activeDocument.selection;
var bns = sel[0].visibleBounds;

上の2列で位置を取得しているのですが、2つ以上のグループ(オブジェクト)がある場合、前面にある方を最初に取っているようです。

 

f:id:fuwafuwapukapuka:20171026174332p:plain

2つ目以降の座標も知りたい場合は参考になります↓

Gyonilog: [Illustrator]バウンディングボックスサイズの四角形を作成する

 

 イラストダウンロードサイト【イラストAC】でフリー素材を投稿しています。よろしければご覧ください。

プロフィールページ:イラストレーター ふわぷかさんのプロフィール