IllustratorCS4で選択されたtextFrameの文字をTabと行で分割します。
あんまり役にたたなさそうなのですが
私はグラフの数値の元エクセルから1こ1こコピペするのが面倒だったので
いっぺんにコピペしてバラして使いました。
たぶん他のバーションのIllustratorでも動くと思います。

↑これが↓こうなる

ダウンロードはこちらdupTextFrames2.zip
IllustratorCS4で選択されたtextFrameの文字をTabと行で分割します。
あんまり役にたたなさそうなのですが
私はグラフの数値の元エクセルから1こ1こコピペするのが面倒だったので
いっぺんにコピペしてバラして使いました。
たぶん他のバーションのIllustratorでも動くと思います。

↑これが↓こうなる

ダウンロードはこちらdupTextFrames2.zip
IllustratorCS5.1でインク総量が設定値以上の
オブジェクトを一気に選択します。
オブジェクトがいっぱいあると遅いと思います。
たぶんIllustratorCS3〜CS4でも動くと思います。
CS2では動かないと思われます。


■■■使い方■■■
Illustratorドキュメントを開いている状態で使用してください。
Illustratorでオブジェクトを選択して、スクリプトメニューの「select2.jsx」を選択します。数値を入力して選択ボタンをクリックして下さい。
●テキストは1段落目の色や線を調べます。(プログラムではそうですが実際には1文字目かも)
●パスファインダでの複合パスは拡張しないと反応しません。
■■■デフォルト値のカスタマイズ■■■
下記の行を探して250の部分を好きな数字に変更して下さい。
myDialog.lineWs = myDialog.f1.add("edittext",[70,10,105,30],250);
ダウンロードはこちら
select2.zip
すいません。あちこちでみなさんがんばっていらっしゃいます。
私も皆さんのブログを見させて頂いており勉強させていただいております。
ただ皆さんちょっと難しく考えすぎているような気もします。
もっとベタにif文いっぱい書いて、ちょっと条件変わったら動かない。
そんなのでいいですよ。練習なので。
●課題1 テキストフレームのプロパティセット
・テキストフレームの中のテキストを上下センターにする
これはさほど難しくないと思うのですが、複数行あったらどうするかとか
悩まれている方がいらっしゃいますよね、最初の1行だけでかまいません。
もし複数行きたかったらparagraphの数を調べて、くり返し処理させると良いでしょう。
●課題2 場所の移動
・1つのテキストフレームを右へ10mm移動
・2つのテキストフレームの間隔を3mmにする。
こちらもさほど難しくないですよね。
visibleBoundsでオブジェクトの領域を調べることができます。
「間隔を3mmにする」はそういうコマンドがあるのですが
今後、オブジェクトを自由自在にコントロールしたい場合は1つずつ座標を取り出してどっちが右かとか調べながらやってもらっても良いかと。
●課題3 テキスト処理1
・テキストフレーム内の文字「楽しく」にルビをふる
こちら意外と難しいですね。課題を出した時点では正規表現とかは考えていませんでした。。。すいません。
汎用性を考えずに楽しくだけにルビを振れば良いので
最初から総当たりで文字をひろっていっていいですよ。
まぁこんな感じで。
var mytf = app.activeDocument.selection[0];
for (var i=0; i<mytf.characters.length; i++) {
//ここに処理
}
あと、InDesignではなくJavaScriptにもindexOfという関数があるのです。
検索対象.indexOf('検索ワード',検索位置);
で最初に見つかった文字の位置が返ってきます。
下みたいな感じです。これをつかって繰り返してもいいと思います。
var mytf = app.activeDocument.selection[0];
var mytf_contents = mytf.contents;
var findpos = mytf_contents.indexOf('楽しく',0);
もちろんInDesignの正規表現検索をJavaScriptでコントロールしてもらってもOKです。
ただ、ちょっと難しいと思うんですが大丈夫でしょうか?
●課題4 テキスト処理2
・テキストの中の値段をすべて10円アップする。
「バナナ120円りんご100円もも1,000円」
こちらもヒントの古旗さんのところにあるのをいじれば出来ると思うのですが
ルビのときのように総当たりでも良いです。
例えば下みたいな方法。1文字づつひっぱりだして、それが1234567890,のいずれかなら数字。円が来たら数字終わり。で数字は別の変数に入れておくとか。
var mytf = app.activeDocument.selection[0];
var nedan_flg = false;
for (var i=0; i<mytf.characters.length; i++) {
if(mytf.characters[i].contents == "1"){
nedan_flg = true;
}else if(mytf.characters[i].contents == "2"){
nedan_flg = true;
}else if(mytf.characters[i].contents == "3"){
nedan_flg = true;
}else if(mytf.characters[i].contents == "2"){
nedan_flg = true;
}//以下続く。。。
}
値をInDesignにセットするときも意外に難しいかも、もし予想したよりたくさん文字が入ったりしたら、その文字は消せば良いのです。
そしてチャレンジ課題のヒントとさらにチャレンジ課題です。
InDesignをJavaScriptでコントロールする
●お題1 テキストフレームのプロパティセット
・ページすべてのテキストフレームの中のテキストを上下センターにする
ヒント:
lengthとforを使う
alert(app.activeDocument.textFrames.length);
・選択テキストフレーム「全て」の中のテキストを上下センターにする
ヒント:
selectionを使う
alert(app.activeDocument.selection.length);
●お題2 場所の移動
・4つのテキストフレームの間隔を3mmにする。
ヒント:
ここがそのものずばりか?http://d.hatena.ne.jp/oimoh/20100507/1273203847
document直下のdistributeというメソッドを使うみたい。
●お題3 テキスト処理1
・「InDesignのスクリプト作成方法を楽しく学ぶ。」にルビをふる
作成方法と楽しくと学ぶにルビを振ります。こちらは汎用性を考えないとだめですね。
あと、「楽しく」や「学ぶ」の漢字部分だけにルビを振るのです。ちょっと難しいですよね。
僕も初心者でもなんとか理解できるようなのを考えてみます。
最近のコメント