アンカー枠の座標
[4098]アンカー枠の座標 |
投稿者:MACR |
投稿日:2010/01/30(Sat) 02:01:32
お世話になります。
WinXP上でInDesignCS2を使っています。
テキスト枠を作成し、アンカー枠としインラインに挿入
しているのですが、この枠の座標をとりますと
よく理解できない座標値がとれます。
geometricBoundsが
[Array]2089.73611111111,-103.236111111079,2093.26388888889,-99.7083333333014
となっています。
実際に、、メニューではXが66.823mm、Yが12mmになっている
のですが、ExtendScript Toolkitのデータブラウザ上
では
[Array]2089.73611111111,-103.236111111079,2093.26388888889,-99.7083333333014
となってしまいます。
これはなんでしょうか。単位系はすべてmmに設定して
あるのですが・・・。
あるアンカー枠の座標値を修正したいのですが
うまく座標がとれなくて困っています。
どうすればいいでしょうか・・・。
» 1
WinXP上でInDesignCS2を使っています。
テキスト枠を作成し、アンカー枠としインラインに挿入
しているのですが、この枠の座標をとりますと
よく理解できない座標値がとれます。
geometricBoundsが
[Array]2089.73611111111,-103.236111111079,2093.26388888889,-99.7083333333014
となっています。
実際に、、メニューではXが66.823mm、Yが12mmになっている
のですが、ExtendScript Toolkitのデータブラウザ上
では
[Array]2089.73611111111,-103.236111111079,2093.26388888889,-99.7083333333014
となってしまいます。
これはなんでしょうか。単位系はすべてmmに設定して
あるのですが・・・。
あるアンカー枠の座標値を修正したいのですが
うまく座標がとれなくて困っています。
どうすればいいでしょうか・・・。
[4099]Re: アンカー枠の座標 |
投稿者:mg |
投稿日:2010/01/30(Sat) 09:10:47
解決策ではないのですが
OSX10.6 CS2とCS3で試してみて
doc=app.documents[0];
tf=doc.textFrames[0];
antf=tf.textFrames[0];
antf.geometricBounds;
や
antf=app.selection[0];
antf.geometricBounds;
だと取得できました。
時々ペーストボード外の彼方にあるオブジェクトを見かけるのですが、この類いでしょうか?[2089.73611111111,-103.236111111079,2093.26388888889,-99.7083333333014]って10pt角の四角形になりますね。
» 2
OSX10.6 CS2とCS3で試してみて
doc=app.documents[0];
tf=doc.textFrames[0];
antf=tf.textFrames[0];
antf.geometricBounds;
や
antf=app.selection[0];
antf.geometricBounds;
だと取得できました。
時々ペーストボード外の彼方にあるオブジェクトを見かけるのですが、この類いでしょうか?[2089.73611111111,-103.236111111079,2093.26388888889,-99.7083333333014]って10pt角の四角形になりますね。
[4102]Re: アンカー枠の座標 |
投稿者:ミシマバイカモ |
投稿日:2010/01/31(Sun) 11:18:13
>これはなんでしょうか。単位系はすべてmmに設定して
>あるのですが・・・。
InDesign CS2のJavaScriptでは、アンカー付オブジェクトの座標値等の数値は設定した単位系ではなくポイント単位になっています(CS3以降は設定した単位系になっています)。
ですので、25.4をかけて72で割る等のmm換算を行うか、単位系をポイントに切り替えて処理するかでしょうか。
» 3
>あるのですが・・・。
InDesign CS2のJavaScriptでは、アンカー付オブジェクトの座標値等の数値は設定した単位系ではなくポイント単位になっています(CS3以降は設定した単位系になっています)。
ですので、25.4をかけて72で割る等のmm換算を行うか、単位系をポイントに切り替えて処理するかでしょうか。
[4109]Re: アンカー枠の座標 |
投稿者:MACR |
投稿日:2010/02/01(Mon) 15:27:41
皆様
回答ありがとうございます。
大変助かります。
できれば、上記のうちmm換算にすることができればと
思っているのですがたとえば
2089.736に対して25.4をかけて72で割ると
737.21となるのですが、実際には
Xが66.823mm、Yが12mm
なので、程遠い値になっているのですが
これは、どう考えればよろしいでしょうか。
» 4
回答ありがとうございます。
大変助かります。
できれば、上記のうちmm換算にすることができればと
思っているのですがたとえば
2089.736に対して25.4をかけて72で割ると
737.21となるのですが、実際には
Xが66.823mm、Yが12mm
なので、程遠い値になっているのですが
これは、どう考えればよろしいでしょうか。
[4113]Re: アンカー枠の座標 |
投稿者:梅花藻 |
投稿日:2010/02/01(Mon) 16:59:56
すみません。あまり、しっかり数値を見ていませんでした。
自宅のWin XP InDesin CS2で試した時にはポイント単位系で問題のない値でしたので。
いずれにせよ、インライン位置では直接geometricBoundsを弄るのではなく、anchoredObjectSettingsのanchorYoffsetを計算して設定することが必要です。
そのため必要なのはオブジェクトの高さで、この値は myItem.geometricBounds[2]-myItem.geometricBounds[0](横書き)ないし myItem.geometricBounds[3]-myItem.geometricBounds[1](縦書き)で計算できます。
(行送り一定ならば、あとは親文字(アンカーマーカー)の行送りを文字級数(以下)にして、高さから文字級数分引いて二で割った数値を縦横に応じて符号を合わせてanchorYoffsetに設定)
また、インライン位置のままサイズ調整をしたり、縦組中にインライン位置に挿入などをスクリプトで行うと位置がおかしくなるので、一旦anchoredPositionを AnchorPosition.anchoredにして(変形等のサイズ調整を行って)、再度AnchorPosition.inlinePositionに戻してやるといったことをします。
自宅のWin XP InDesin CS2で試した時にはポイント単位系で問題のない値でしたので。
いずれにせよ、インライン位置では直接geometricBoundsを弄るのではなく、anchoredObjectSettingsのanchorYoffsetを計算して設定することが必要です。
そのため必要なのはオブジェクトの高さで、この値は myItem.geometricBounds[2]-myItem.geometricBounds[0](横書き)ないし myItem.geometricBounds[3]-myItem.geometricBounds[1](縦書き)で計算できます。
(行送り一定ならば、あとは親文字(アンカーマーカー)の行送りを文字級数(以下)にして、高さから文字級数分引いて二で割った数値を縦横に応じて符号を合わせてanchorYoffsetに設定)
また、インライン位置のままサイズ調整をしたり、縦組中にインライン位置に挿入などをスクリプトで行うと位置がおかしくなるので、一旦anchoredPositionを AnchorPosition.anchoredにして(変形等のサイズ調整を行って)、再度AnchorPosition.inlinePositionに戻してやるといったことをします。
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)