どんな場面で使用するかはわかりませんが。
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 件のコメント:
ずっとこのようなスクリプトを探していました。MacOS10.6.4、イラレCS3ですが if(Frs[Fr].lines.length > 0){ のところで「次が必要です:;」のエラーになります。(Extend Script Toolkit 2)
kenji さん、コメントありがとうございます。
一部のテキストが消失してしまったようで、訂正しました。今度は動くと思うのでもう一度お試しください。
ギョニソさん動きました!!感激です。素早いご対応にビックリしました。活用させていただきます。ありがとうございます。
こんばんは。探して探してたどり付きましたが、当方の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;」のエラーは、非表示のレイヤーがあるせいで発生しているのだと思います。非表示レイヤーがある場合は処理を飛ばすようにスクリプトを書き換えるか、このまま動かす場合は全てのレイヤーを表示した状態でご利用くださいませ~
コメントを投稿