セルの座標値

[2581]セルの座標値 | 投稿者:shinji | 投稿日:2009/03/13(Fri) 00:21:03
複雑な表組みを作っているとき、
どうしても一つの表だけでは無理そうなので
表の上に別の表を乗せたりするのですが(変更とかもあるので)
そのとき、あるセルの座標値がわかればいいなと思ったのですが
どこかに座標値ってあるんでしょうか?(位置あわせが大変なので)
AppleScriptで出来ればありがたいのですが
用語説明にboundsとかなさそうですね
よろしくお願いいたします。
» 1
[2582]Re: セルの座標値 | 投稿者:shinji | 投稿日:2009/03/13(Fri) 00:34:10
環境を忘れていました
MacOS10.4.11 CS3です
よろしくお願いいたします。
» 2
[2583]Re: セルの座標値 | 投稿者:せうぞー | 投稿日:2009/03/13(Fri) 01:08:48
ほかにもいい方法があるかもしれませんが...
セル内に文字が入っているのなら、文字のhorizontalOffsetとendHorizontalOffsetが得られます。そこから、文字サイズとセルの空き量を計算すればいいでしょう。

参照:
http://d.hatena.ne.jp/seuzo/20081009/1223534278
http://omachi.blog.ocn.ne.jp/preopen/2008/10/post_54ef.html
» 3
[2589]Re: セルの座標値 | 投稿者:shinji | 投稿日:2009/03/13(Fri) 12:18:09
せうぞーさん、いつもありがとうございます。

やはりセルの属性からは取得は無理みたいですね
ご指摘のhorizontal offsetでやってみます。
» 4
[2603]Re: セルの座標値 | 投稿者:shinji | 投稿日:2009/03/16(Mon) 00:40:43
セル内で文字がセンター合わせになっているときや
指定値を使用しているときなどがあるので
horizontal offsetではうまくセルの横位置が出せないですね。
それとbaselineの数値から縦位置の出し方もよくわかりませんでした。
これは欧文ベースラインの位置になるのでしょうか?

それで、text frameの左上にぴったりくっついている表で
線幅も統一されているなら座標値が出るスクリプトを書いてみました
求めるセル内に文字カーソルを立てておいて実行します。

tell application "Adobe InDesign CS3"
   tell document 1
       set Sel to object reference of selection
       set {y1, x1, y2, x2} to geometric bounds of parent of parent of parent of Sel
       --tableからのx位置
       set Sel_column_index to index of parent column of parent of Sel
       set Column_width to 0
       if Sel_column_index is not 1 then
           repeat with i from 1 to Sel_column_index - 1
               set Column_width to (width of column i of parent of parent of Sel) + Column_width
           end repeat
       end if
       --tableからのy位置
       set Sel_row_index to index of parent row of parent of Sel
       set Row_height to 0
       if Sel_row_index is not 1 then
           repeat with i from 1 to Sel_row_index - 1
               set Row_height to (height of row i of parent of parent of Sel) + Row_height
           end repeat
       end if
       display dialog "x=" & (x1 + Column_width) & ", y=" & (y1 + Row_height)
   end tell
end tell

本当は、どんな条件下でも出せたらいいのですが…
エラー処理はしていませんが、問題がありそうでしたら
ご指摘お願いいたします。
» 5
[2608]Re: セルの座標値 | 投稿者:せうぞー | 投稿日:2009/03/16(Mon) 13:57:32
スクリプト、動作しました。
InDesign CS3 & CS4 on Mac OS X10.5.6
セル座標を得るには、お書きになった方法がよいのも確認しました。
おっしゃるように、わたしの方法では、段落のセンター揃えや、行方向の揃えによって正しい解にはなりません。すみませんでした。
#まあ、一時的に、左揃え上揃えにして戻す方法もあるでしょうけれど。

>これは欧文ベースラインの位置になるのでしょうか?
はい、そうです。
ですからベースライン-文字サイズでは、正しいY座標にはなりません。特に欧文フォントでは。
» 6
[2609]Re: セルの座標値 | 投稿者:shinji | 投稿日:2009/03/16(Mon) 14:40:16
動作確認していただき、感謝です!

まぁ、そのうち何か問題が出るかもしれませんが、
そのときはそのときです。
とりあえず、これを元にさらに発展させていきます。
本当は、インデザの機能だけで、なんとか作りたいところですが
それは、今後に期待するとして…(EDIANみたいな自由度がほしい)
ありがとうございました。
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)

このページをシェア