今回はちょっとタグ(Tag)のお話でも…

たまには更新でもしとこうかと。
いつものとおりイラストレーターのスクリプトの話なんですがね。
今回はちょっとタグ(Tag)のお話でも…
タグと聞くと皆さん何を想像されますか?
私はタブと空目しておりました。
ええーーーーーーーーーーーーーーーーーっ
よく見るとタグだったんですww
オブジェクトモデルビューアーの説明分を見ても良く判らない、これがw


Tag
Adobe Illustrator CS4 Type Library
A tag associated with a piece of artwork.
Tags
Adobe Illustrator CS4 Type Library
The collection of tags associated with a page item.
ググってみてもなかなかサンプルが見つからない。
なんぞコレということで試してみた。
そして判りました。
簡単にいうと、AppleScript時代でいうlabelみたいなものです。
えっ?!名前でだいたい予測がついてましたか。
そんな声にもめげすにサンプルをば、

(function(){
 var doc = app.documents.length > 0 ? app.activeDocument : app.documents.add();
 var TxF = doc.textFrames.add();
 TxF.contents = "タグとタブを空目なんてネタだろ!";
 //タグの追加
 var TAG = TxF.tags.add();
 TAG.name = "testTextFrame";
 TAG.value = "ネタじゃねーよ!";
 var TAG2 = TxF.tags.add();
 TAG2.name = "testTextFrame2";
 TAG2.value = "ネタでしたすみません。";
 //ドキュメント中のタグの中からgetByNameで取得
 var TAGS = doc.tags.getByName("testTextFrame");
 alert(TAGS.value);
})();

1つのアイテムに対して複数のタグを追加することができるので使い方によってはなかなか便利なのではないかと。
また、自分では追加した覚えがないのに「BBAccumRotation」とか「BBAccumShear」とかが作られている時があります。
これはどうやら回転ツールやシェアーツールを使った時にオブジェクトに追加されるようです。
これもサンプルをば、

(function(){
	var TAGS = app.activeDocument.tags;
	for(i =0 ; i < TAGS.length ; i++){
			var R = getRotation(TAGS[i].parent);
			if(R !==false)TAGS[i].parent.rotate(R*-1);
	}
function getRotation(obj){
	var RT = false;
	$.writeln(obj.tags[0].name);
	try{
		RT = obj.tags.getByName('BBAccumRotation');
		return RT.value/(2*Math.PI)*360
	}catch(e){
		$.writeln(e);
	}
	return false;
}
})();

サンプルではTag「BBAccumRotation」のタグの値(ラジアン値)から逆算してオブジェクトの回転を元に戻しています。
しかし「BBAccumRotation」に必ず正確な回転角度が入っているわけではなく、マトリックスから求めた方が確実なようです。