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