2010年3月18日木曜日

【Illustrator】同フォント・同サイズのテキストオブジェクト選択

Illustratorで同フォント・同サイズのテキストオブジェクトを全選択するスクリプトです。
どんな場面で使用するかはわかりませんが。

1つだけテキストオブジェクトを選択している状態で使用します。
フォントやサイズはテキストオブジェクトの1文字目で判断しています。





...
Illustrator CS2で動作確認。他のバージョンは知りません。CSやCS3以降でも多分動く・・・と思う。
JAVAScriptなのでMac、Win両対応だと思います。Winでしか確認してないけど。


// 2010.04.18 Gyoniso

#target Illustrator

Application.active

if(app.activeDocument.selection.length != 0){
obj = app.activeDocument.selection[0];
if(obj.typename == "TextFrame"){
if(obj.lines.length > 0){
fntS = obj.textRange.characterAttributes.textFont.name;
sizS = obj.textRange.characterAttributes.size;

app.activeDocument.selection = null;

doc = app.activeDocument;

Frs = doc.textFrames;

for(Fr=0; Fr < Frs.length; Fr++){
if(Frs[Fr].lines.length > 0){
fntA = Frs[Fr].textRange.characterAttributes.textFont.name;
sizA = Frs[Fr].textRange.characterAttributes.size;

if((fntS == fntA) & (sizS == sizA)) {
Frs[Fr].selected = true;
}
}
}
sizS = Math.round(sizS*141.1)/100;
alert(fntS + ", " + sizS + "Qを" + doc.selection.length + "個選択しました");
}else{
alert("空のテキストオブジェクトは選べません");
}
}else{
alert(obj+"のため実行できませんでした~");
}
}else{
alert("なんか選んでから実行してちょうだい");
}


5 件のコメント:

Unknown さんのコメント...

ずっとこのようなスクリプトを探していました。MacOS10.6.4、イラレCS3ですが if(Frs[Fr].lines.length > 0){ のところで「次が必要です:;」のエラーになります。(Extend Script Toolkit 2)

ギョニソ さんのコメント...

kenji さん、コメントありがとうございます。
一部のテキストが消失してしまったようで、訂正しました。今度は動くと思うのでもう一度お試しください。

Unknown さんのコメント...

ギョニソさん動きました!!感激です。素早いご対応にビックリしました。活用させていただきます。ありがとうございます。

匿名 さんのコメント...

こんばんは。探して探してたどり付きましたが、当方のWin7CS3ではエラーが出てしまいます。まずはApplication.activeの部分でError2:Applicationが未定義です。上記をコメントにするとERROR 8705Target layer cannot be modified  Line:21 -> Frs[Fr].selected = true; 突然で申し訳ないのですが、解決方法を教えて頂けるとありがたいのです。

ギョニソ さんのコメント...

匿名さん

「Application.active」の部分はなんでかわかりませんがコメントアウトして大丈夫だと思います。
「ERROR 8705Target layer cannot be modified  Line:21 -> Frs[Fr].selected = true;」のエラーは、非表示のレイヤーがあるせいで発生しているのだと思います。非表示レイヤーがある場合は処理を飛ばすようにスクリプトを書き換えるか、このまま動かす場合は全てのレイヤーを表示した状態でご利用くださいませ~