参加いただいた方々、手伝ってくださった方々、応援してくださった方々、ありがとうございました。時間切れなどで説明しきれなかったところは、後にフォローしていきたいと思います。 #dtpstudySP2 posted at 10:04:05
DTPの勉強会 特別編・第2回 お題のヒント2 - たけうちとおるのスクリプトノート - http://t.co/ZGnU0xk #dtpstudySP2 posted at 13:35:48
activeほにゃらら、ってプロパティは他にもいくつかあってどれも便利なので、オブジェクトモデルビューアで検索とかしてみるといいかも。使いこなせたらいろいろ楽になります @dtpstudy #dtpstudySP2 posted at 19:16:21 オブジェクトモデルビューアでApplicationオブジェクトの「documents」プロパティと「activeDocument」プロパティを比べてみてね @dtpstudy #dtpstudySP2 posted at 19:14:30 ポイントはDocumentsじゃなくてDocumentだというところ。ドキュメントのコレクションから目的のドキュメントをたどる必要がない @dtpstudy #dtpstudySP2 posted at 19:13:20 activeDocumentプロパティは、再前面に出てるドキュメントにアクセスするためのものです。他にどんなにドキュメントを開いてても、最前面のDocumentオブジェクトを指します @dtpstudy #dtpstudySP2 posted at 19:10:18 InDesignのApplicationオブジェクトのプロパティactiveDocumentの話をしたけど、あの発言だと「ドキュメントがひとつしか開いてないとき」しか使えないみたいにも読めるので訂正。そんなことはないです @dtpstudy #dtpstudySP2 posted at 19:08:28
[0]をつける必要ないのがなぜなのかは、オブジェクトモデルビューアで件のプロパティを調べてみるときっとわかります。 @dtpstudy #dtpstudySP2 posted at 03:20:50 「app.activeDocument」ですね。 @dtpstudy #dtpstudySP2 posted at 03:20:10 たとえば「アプリケーション上でひとつだけ開いているドキュメント」。前回は「app.documents[0]」と書きましたが、Applicationオブジェクトのプロパティ「activeDocument」を使えば一発でアクセスできます。 @dtpstudy #dtpstudySP2 posted at 03:20:00 基本的にコレクションを経由してたどるのであってるのですが、よく使いそうなオブジェクトについては、面倒なことをしなくて済むように特別なプロパティがいくつか用意されてます。 @dtpstudy #dtpstudySP2 posted at 03:19:18 と、前回に引き続きコレクション経由でのアクセスが必須と言ってきましたが。……実は ・゜+ d(*´∀`)b うそです +.:*・ @dtpstudy #dtpstudySP2 posted at 03:18:42 もちろんこれだけだとコレクションまでしかたどってないので、例えば最初のテキストフレームにアクセスしたければ、インデックスを使って「(Pageオブジェクト).textFrames[0]」って書く必要があります。1個でもコレクション経由! @dtpstudy #dtpstudySP2 posted at 03:02:11 あるPageオブジェクトからその下の階層のTextFramesオブジェクトにアクセスするには「(あるPageオブジェクト).textFrames」って書けばイインダヨということが書いてあるわけです。 @dtpstudy #dtpstudySP2 posted at 03:01:55 PagesじゃなくてPageね。そしたらPageオブジェクトのプロパティとメソッドの一覧が見られる。「textFrames: TextFrames」があるはず。「textFrames」がプロパティ名、「TextFrames」がクラス名 @dtpstudy #dtpstudySP2 posted at 03:01:33 ビューアを起動して、[ブラウザ]のプルダウンメニューから「Adobe InDesign ...」のうち自分の使いたいバージョンを選ぶと、[クラス]の欄にずらーっとクラス名がならぶので、そこから「Page」を選んでみる @dtpstudy #dtpstudySP2 posted at 02:59:27 プロパティ名は、たとえばESTK付属のオブジェクトモデルビューアを使えば調べられます。 @dtpstudy #dtpstudySP2 posted at 02:58:37 とりあえず覚えるべきは、あるオブジェクトから目的のオブジェクトまでたどっていくときには、クラス名ではなくプロパティ名のほうを使うってこと。むしろたどっていくためにプロパティが用意されてるってことなんだけど @dtpstudy #dtpstudySP2 posted at 02:58:03 そのページに置かれたテキストフレームのコレクションに……だな。もうなにがなんだかね #dtpstudySP2 posted at 02:57:41 それに対して、「textFrames」は、(たとえば)ページオブジェクトが持っている(そのページに置かれたテキストフレームにアクセスするための)プロパティの名前です。……書いててもいまいち伝わってる気がしません。 @dtpstudy #dtpstudySP2 posted at 02:56:59 「TextFrames」というのは、テキストフレームのコレクションというオブジェクトのクラス名(≒種類の名前) @dtpstudy #dtpstudySP2 posted at 02:55:37 なぜ最初の文字だけが小文字になるのかとか、そもそもなんで小文字にしなきゃいけないのかとか、いろいろ疑問が出てきますが……「InDesignのオブジェクトモデルがそういうふうに作ってあるから」というしかなかったりして。 @dtpstudy #dtpstudySP2 posted at 02:53:41 「TextFrames」でも「textframes」でもないのがミソ @dtpstudy #dtpstudySP2 posted at 02:53:07 こないだ http://t.co/md9cbCV の答えは「app.documents[0].pages[0].textFrames[0]」です。 @dtpstudy #dtpstudySP2 posted at 02:52:45
さて、Pageオブジェクトからは、そのページにあるテキストフレームのコレクション(TextFrames)にアクセスすることができます。「ひとつだけ開いているドキュメントの最初のページにある最初のテキストフレーム」にアクセスするには? #dtpstudySP2 posted at 03:28:55 じゃあ、「ひとつだけ開いているドキュメントの最初のページ」にアクセスするには?「app.documents[0].pages[0]」です。 #dtpstudySP2 posted at 03:27:49 たとえばドキュメントの中の「ページ」には、Document(sのついてない個別のドキュメント)オブジェクトからたどってアクセスすることができる。でもDocumentから直接アクセスできるのはPages(ページオブジェクトのコレクション)です #dtpstudySP2 posted at 03:27:13 この「コレクション」と「個別のオブジェクト」の関係はInDesignのオブジェクトモデルの基礎になってます。環境設定まわりはまたちょっと違うんだけど #dtpstudySP2 posted at 03:25:57 もっかい言うけど、ドキュメントが一つしか開いてないときでも、「app.documents」でコレクションにアクセスしてからさらに個別のドキュメントにアクセスしなきゃいけないのです。いっこしかなくても「app.documents[0]」! #dtpstudySP2 posted at 03:23:51 たとえばドキュメントが3つ開いていたら、それぞれ「app.documents[0]」「app.documents[1]」「app.documents[2]」って書くことで(コレクションじゃなく)個別のドキュメントにアクセスすることができる。 #dtpstudySP2 posted at 03:23:07 インデックスは0から始まる連番で、いま開いてるドキュメント全部にInDesignが勝手に割りふる #dtpstudySP2 posted at 03:22:58 ドキュメントのコレクションから特定のドキュメントを選ぶ方法はいくつかあるけど、「インデックス」を使って特定する方法がよく使われる。 #dtpstudySP2 posted at 03:22:41 ココ重要ね! #dtpstudySP2 posted at 03:20:50 たとえドキュメントをひとつしか開いてなくても、Applicationからたどるときは必ずコレクションを経由することに注意。 #dtpstudySP2 posted at 03:20:20 このコレクションは、いまアプリケーションで開いているドキュメントすべてをまとめて扱う。目的のドキュメントまで(さらに目的の文字まで)たどり着くためには、このコレクションから特定のオブジェクトを選ぶ必要がある。 #dtpstudySP2 posted at 03:20:07 ほんとは「コレクション」という #dtpstudySP2 posted at 03:18:37 さて「app.documents」がなんで複数形なのかというと、ApplicationからたどれるのはDocument(一つ一つの実際のドキュメントオブジェクト)ではなくて、「ドキュメントのかたまり」というオブジェクトDocumentsだから。 #dtpstudySP2 posted at 03:18:31 この「オブジェクトをたどって○○を表す」というのを「○○にアクセスする」と呼んだりするのも覚えておくといいと思う #dtpstudySP2 posted at 03:17:18 ぎゃあわすれてた、これJavaScript使う場合ね #dtpstudySP2 posted at 03:16:39 アプリケーションで開いているドキュメントたちは、「app.documents」で表せる、これも覚えてしまう #dtpstudySP2 posted at 03:16:20 一番はじめのアプリケーションApplicationは「app」で表せる、これは覚えてしまう #dtpstudySP2 posted at 03:15:42 具体的にアプリケーションから目的のドキュメントまでの道を考えてみる #dtpstudySP2 posted at 03:15:22 スクリプトで文字修正したいときも、こんな感じで「アプリケーション」から最終的にいじりたい「文字」まで順番にたどっていってプロパティを変更する。順番をすっ飛ばす方法もあるけどそれはとりあえずあとで(ヒント:selection) #dtpstudySP2 posted at 03:14:30 実は普段からInDesignを使っている人なら、感覚的にやっていることを少し意識するだけで意外とオブジェクトモデルがわかったりする……と、思う #dtpstudySP2 posted at 03:13:42 たぶん無意識にこんな構造をたどっているはず。この「構造」がいわゆるオブジェクトモデル(一部)。 #dtpstudySP2 posted at 03:12:06 アプリケーション→ドキュメント→(ページ→)テキストフレーム→文字 #dtpstudySP2 posted at 03:10:44 たとえばあるドキュメントの文字修正作業をしたいとき、手作業の場合、アプリケーション上で開いてあるドキュメントから目的のものを選び、目的のテキストフレームを(ページ数を頼りにするなどして)探して、修正したい文字を見つけ、編集する #dtpstudySP2 posted at 03:10:21 ここでいうオブジェクトっていうのは(テキストフレームみたいな)実際に描画してあるものだけじゃなくて、アプリケーションの環境設定とか、ドキュメントの設定とか、ドキュメントそのものとかも含む #dtpstudySP2 posted at 03:09:18 あ、その前に「InDesignをスクリプトで動かすときはまず操作したいオブジェクトを見つけて、そのプロパティをいじったりメソッドを呼び出したりする」というのが前提なのだけど #dtpstudySP2 posted at 03:08:41 InDesignのスクリプトを書こうとするとき、まず何でつまずくかっつったら「自分が操作したいオブジェクトをどうやって見つけたらいいのか?」だと思う #dtpstudySP2 posted at 03:08:12 . @carubot 曖昧な指示になってしまってすみません。ルビはスクリプト内に決め打ちする形でお願いします。その他追記がありますので、こちらをご覧になってみて下さい http://t.co/rX1pluQ #dtpstudySP2 posted at 03:03:44
|
last update 05/29 22:32
ツイート検索
Recent
Archives
Friends
Hashtags
Stats・Feed |