Skip to main content
Participating Frequently
July 20, 2020
解決済み

Scriptで、オブジェクトを複数選択した時の位置サイズ情報を取得するには

  • July 20, 2020
  • 返信数 2.
  • 1833 ビュー

あるスクリプトを作成中なのですが、オブジェクトを複数選択した時の位置とサイズの情報を取得したいのですが、方法がわからなくて困っています。

 

自分としては、「情報」パネルのプロパティが取得できれば良いだろうと考えたのですが、情報パネルを使用する方法も良くわからず、それではと「変形」パネルから取得しようとしてみたのですが、うまくいっておりません。変形パネルの方が取得できそうな気はしているのですが…

どなたかご教示頂ければ助かります。

このトピックへの返信は締め切られました。
解決に役立った回答 Ten A

Illustratorのスクリプト操作ではパネル類の情報を参照するのではなく、ドキュメント上のオブジェクトを直接参照かたちにになります。
選択オブジェクトのコレクションはドキュメント又はアプリケーションクラス直下にあるselectionを参照します。具体的に記述すると

app.activeDocument.selection


又は

app.selection


となります。このコレクションにはIllustratorのアクティブなドキュメント又はIllustrator上で選択されたpageItemが含まれますのでforループを利用して各オブジェクトのいち情報を含むプロパティを参照すると良いでしょう。
pageItemのジオメトリ情報はtop,leftやgeometoricBoundsなどがありますので適宜使い分けてください。

また、こういったスクリプティングDOMの調査にはPropertyExplorerが便利です。
https://exchange.adobe.com/creativecloud.details.1170.property-explorer.html 

返信数 2

ajabon grinsmith
Community Expert
Community Expert
July 20, 2020

補足しますね

 

複数選択したひとかたまりの座標やサイズは取得できません。

selection配列をループなどして必要な情報を取りまとめる必要があります。

Ten A
Community Expert
Ten ACommunity Expert解決!
Community Expert
July 20, 2020

Illustratorのスクリプト操作ではパネル類の情報を参照するのではなく、ドキュメント上のオブジェクトを直接参照かたちにになります。
選択オブジェクトのコレクションはドキュメント又はアプリケーションクラス直下にあるselectionを参照します。具体的に記述すると

app.activeDocument.selection


又は

app.selection


となります。このコレクションにはIllustratorのアクティブなドキュメント又はIllustrator上で選択されたpageItemが含まれますのでforループを利用して各オブジェクトのいち情報を含むプロパティを参照すると良いでしょう。
pageItemのジオメトリ情報はtop,leftやgeometoricBoundsなどがありますので適宜使い分けてください。

また、こういったスクリプティングDOMの調査にはPropertyExplorerが便利です。
https://exchange.adobe.com/creativecloud.details.1170.property-explorer.html 

Participating Frequently
July 20, 2020

Ten A様

ご教示頂きましてありがとうございます。

試しに、pageItems[0]のvisibleBoundsを取得してみたのですが、" 8463.~ " とか "24063.~" というとても大きな数字が帰ってきてしまいました。A4のドキュメントなのですが…

pageItems[0]の数値はvisibleBounds[0]でもvisibleBounds[1]でもとても大きな数値ですが、pageItems[1]以降は3桁のまともな数値が返ってくるようです。

試しにスクリプトの最後にpageItems[0].selected=true; として、そこから手動で新規ドキュメントに貼ってみたのですが、「,true」という文字が貼り付けられました。

基本的には、ドキュメント内のオブジェクトを全て選択し、それらを新規ドキュメントに一定の数で貼り付けたいと考えています。その一定の数を割り出すために、全選択した時のバウンディングボックスの情報を取得したいと考えています。