ごんれのラボ

iOS、Android、Adobe系ソフトの自動化スクリプトのことを書き連ねています。

選択しているPageItem以外を削除する

Twitterでフォロワーさんがタイトルのようなスクリプトを書きたいとつぶやいていたので、ちょっと書いてみた。

フォロワーさんはJavaScriptで書くと思うので、私はAppleScriptで。

すっかりAppleScripterである。

<仕様>

●PageItemを総当たりして選択しているか否かをチェックして、選択していなかったら削除する。

<メモ>

●IllustratorCS4にて検証。バージョン問わず動くと思う。

●deleteなどのitemの総数が変化するときは逆順で回さないとダメ。

 object referenceでwhose selected is falseにしてないのもそんな理由。

●selected boolean で状態が分かる。trueだと選択している、falseで選択していないという意味

●例によってlocked の状態や、hiddenの状態や、layerの状態などは加味してない。

 使う人が改変して使えばいいじゃん仕様。

●PageItemをPathItemやTextFrameに変更すれば意図したオブジェクトの範囲で同じ処理が可能。

AppleScriptはこちら。

tell application "Adobe Illustrator"

tell document 1

set itemList to every page item

repeat with i from 1 to count of itemList

set currentFrame to item ((count of itemList) - i + 1) of itemList --indexの大きい方から逆順で処理

tell currentFrame

if selected is false then

delete currentFrame

end if

end tell

end repeat

end tell

end tell