IllustratorCS2のJavaScriptで範囲指定がしたい
AppleScriptでの
------------------------------------------------------
tell application "Adobe Illustrator"
tell document 1
tell text frame 1
set contents of (characters 2 thru 8) to ("12345")
end tell
end tell
end tell
------------------------------------------------------
のように既存の文字を置き換えたいです。1文字を複数文字に置き換えるなら単純に characters[2].contents に代入すればできるのですが、複数対複数の置き換えができません。
(replaceを使用しても、エラーは出ませんが置換さえれないようです)
環境:
OSX(10.4)+IllutratorCS2
お分かりになる方おりますでしょうか?
> substringで、出来ませんか?
substringで任意の範囲の文字列を抜き出すことはできるのは
確認いたしましが、その範囲に対し、文字をセットすることも
できるのでしょうか・・・?
こちらでいろいろ試してみましたが、
1)置換したい文字列の場所をmatchで検索
2)その部分を選択
3)selectionに対し、値を代入
でなんとか複数文字列の置換ができそうではありますが、
なにぶん、挙動が安定しておらず苦戦しております・・・
(selectionが文字を指定したつもりがtextFrameになってしまったり等)
それとも他にスムーズなやり方があるのでしょうか??
str2="123";
//CDを123に置き換える。
str1=str1.substring(0,2)+str2+str1.substring(4,5)
str1 = str1.replace(/CD/,"123");
こんなんでも出来ますね。
やり方なんていろいろ。
> str1="ABCDE";
> str2="123";
> //CDを123に置き換える。
> str1=str1.substring(0,2)+str2+str1.substring(4,5)
単純なテキストの処理であれば上記の手順で出来ることを確認しました。
しかし、上記やり方ではスタイル情報(文字サイズ・フォント・ツメ等)が消えてしまうようです・・・
IllustratorではInDesignやQuarkといったタグ(XPressTag)付きテキストが使用することができないため、
あらかじめイラレのファイル上に準備した各スタイルに対し、文字を当てはめて行こうとしております。
同一テキストフレーム内でもサイズが変わったりがあるので、AppleScriptのようにある部分のみを置き換えることが出来れば
スムーズに行くのですが、JavaScriptでは簡単にはいかないみたいですね・・・
No.5506にて自分が挙げたやり方が面倒ではありますが出来そうなのでこの方法で試してみます
#AppleScriptで1行で出来ることがこんなに難しいとは・・・