2009/04/26

フレームグリッド

テキストフレームの種類が区別できないと書いたのだが、間違いのようだ。
テキストフレームのプロパティのgridDataからフレームグリッドの設定値が取得できる。後で調べとこ。

2 件のコメント:

梅花藻 さんのコメント...

はじめまして。三島梅花藻と申します。
CS2の時にはTextFrameにgridDataのプロパティがなかったので気になっていました。
手が空いて、時間ができたので調べてみましたが、TextFrameにgridDataのプロパティは存在しますが使えないようです。

CS2の時の(親ストーリーのプロパティから調べる)方法でないとダメなようです。

//テキストフレームを選択して、フレームグリッドかテキストフレームかを判別する
CR = String.fromCharCode(13);
var slctObj = app.selection[0];
if (slctObj.constructor.name == "TextFrame"){
if (slctObj.contentType == 1952412773){//ContentType.textType
if (slctObj.parentStory.storyPreferences.frameType == 1179087984){
//フレームグリッドかテキストフレームかは親ストーリーのstoryPreferencesのframeTypeを調べる。
//情報の位置が分かりにくい。
//1179087984:フレームグリッド 1417176692:テキストフレーム
if (slctObj.parentStory.storyPreferences.storyOrientation==1986359924){
var ss = "縦組";
} else {
var ss = "横組";
}
var fgPointSize = slctObj.parentStory.gridData.pointSize;
//文字サイズは親ストーリーのgridDataプロパティの中のpointSizeを調べる
//CS2では設定している単位系に関係なく、ポイントで入っている。
//CS3以降は設定された単位系。
var fgLineAki = slctObj.parentStory.gridData.lineAki;
//行間も親ストーリーのgridDataプロパティの中にある。
//単位はCS2はいうに及ばずCS3でもポイント。「行送り」ではなく「行間」
alert("フレームグリッド"+CR+ss+CR+"文字サイズ:"+fgPointSize+CR+"行間:"+fgLineAki);
} else {
alert("テキストフレーム");
}
}
}

outdesign.js さんのコメント...

梅花藻さん

はじめまして。
まさか自分のブログにコメントが付くとは思ってはおらず放置しておりまして、すみませんでした。。。

早速ですが、コードためさせていただきました。
このやり方でテキストフレームの種類が確かに判別できますね! 非常に助かりました。

と言うのは、近々、すでに300ページほど組んだ書籍で、版面+文字数の変更があるようでして……。
教えていただいたやり方を応用して一括して処理できそうです。

ありがとうございました。