k_ikiの雑記帳

DTPのこと、創作のことなど、思いつくまま

deleteObjects

Illustratorプチ自動化。
アクティブレイヤー内の、非選択オブジェクトだけを削除したい。
背景に影響を与えず、前景のオブジェクトのうち数個だけ残して他を削除。
要は、残したいオブジェクトの方が少ないので、選択したオブジェクトだけ残したいな、というのが動機。
 
まあ、手作業の場合でも、背景ロックしといて全選択、必要なオブジェクトだけ選択解除→Deleteキー押下。
大して手間のかかる作業じゃない。
スクリプトなんてもんは基本、書き捨てってことで(^^;
 
またまた、流星さんに教えていただいた。
InDesignで選択追加したい場合、
.select(SelectionOptions.addTo)
といった書き方になるけどIllustrator
true / false のブーリアン型。そっちのがわかりやすいよねw
 
【追記】こうちゃんさんがTwitterでの私の発言を目にしてAppleScriptで書いてくださっています。ありがとうございます。Layer操作等は必要に応じてカスタマイズ、ということで。
 

var my_select = app.activeDocument.selection;
var my_Item = app.activeDocument.activeLayer.pageItems;

if (my_select.length != 0) {
	for (k=0; k<my_Item.length; k++) {
		my_Item[k].selected = true;
		}
	for (j=0; j<my_select.length; j++) {
		my_select[j].selected = false;
		}
	var del_object = app.selection;
	for (i=0; i<del_object.length; i++) {
		del_object[i].remove();
		}
	}

 
【2012年9月8日追記】
そうそう、ブーリアン型ってことは、こうちゃんさんのアプローチのように条件分岐で「false」なら削除、って書き方ができるわけだけど、ここに公開した書き方だと「true」のところを「addTo」、「false」のところを「removeFrom」にするだけでInDesignでも使えちゃう。
だから何?って話なんだけれども(^^;