IllustratorCS2のJavaScriptで範囲指定がしたい

» 5504
[5504]IllustratorCS2のJavaScriptで範囲指定がしたい 投稿者:ぼん 投稿日:08/03/18-15:32
IllustratorCS2+JavaScriptを使い、既にある文字列を置き換えたいのですが、AppleScriptでは出来る範囲指定が出来ずに困っております。

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

お分かりになる方おりますでしょうか?
» 5505
[5505]Re: IllustratorCS2のJavaScriptで範囲指定がしたい 投稿者:匿名A 投稿日:08/03/18-17:11
substringで、出来ませんか?
» 5506
[5506]Re^2: IllustratorCS2のJavaScriptで範囲指定がしたい 投稿者:ぼん 投稿日:08/03/18-20:27
匿名A様、ご返答ありがとう御座います。

> substringで、出来ませんか?

substringで任意の範囲の文字列を抜き出すことはできるのは
確認いたしましが、その範囲に対し、文字をセットすることも
できるのでしょうか・・・?
こちらでいろいろ試してみましたが、
1)置換したい文字列の場所をmatchで検索
2)その部分を選択
3)selectionに対し、値を代入
でなんとか複数文字列の置換ができそうではありますが、
なにぶん、挙動が安定しておらず苦戦しております・・・
(selectionが文字を指定したつもりがtextFrameになってしまったり等)

それとも他にスムーズなやり方があるのでしょうか??
» 5507
[5507]Re^3: IllustratorCS2のJavaScriptで範囲指定がしたい 投稿者:匿名 投稿日:08/03/19-06:51
str1="ABCDE";
str2="123";
//CDを123に置き換える。
str1=str1.substring(0,2)+str2+str1.substring(4,5)
» 5508
[5508]Re^4: IllustratorCS2のJavaScriptで範囲指定がしたい 投稿者:匿名 投稿日:08/03/19-07:14
str1="ABCDE";
str1 = str1.replace(/CD/,"123");

こんなんでも出来ますね。

やり方なんていろいろ。
» 5509
[5509]Re^4: IllustratorCS2のJavaScriptで範囲指定がしたい 投稿者:ぼん 投稿日:08/03/19-07:23
匿名様、ご返答ありがとう御座います。

> str1="ABCDE";
> str2="123";
> //CDを123に置き換える。
> str1=str1.substring(0,2)+str2+str1.substring(4,5)

単純なテキストの処理であれば上記の手順で出来ることを確認しました。
しかし、上記やり方ではスタイル情報(文字サイズ・フォント・ツメ等)が消えてしまうようです・・・
IllustratorではInDesignQuarkといったタグ(XPressTag)付きテキストが使用することができないため、
あらかじめイラレのファイル上に準備した各スタイルに対し、文字を当てはめて行こうとしております。
同一テキストフレーム内でもサイズが変わったりがあるので、AppleScriptのようにある部分のみを置き換えることが出来れば
スムーズに行くのですが、JavaScriptでは簡単にはいかないみたいですね・・・

No.5506にて自分が挙げたやり方が面倒ではありますが出来そうなのでこの方法で試してみます
#AppleScriptで1行で出来ることがこんなに難しいとは・・・

このページをシェア