InDesign居残り補習室

どれだけ勉強しても上達しない管理人の、InDesign備忘録を中心に。たまにブックレビューなども。

スポンサーサイト  --/--/--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


[JS]CropMarksの改造 その2  2008/11/20

前回の「[JS]CropMarksを改造してみた」において、

editValueにミリをポイントに換算した数値をセットし、
editUnits:MeasurementUnits.millimeters


と書きましたが、editValueのかわりにeditContentsを使えば良いと教えて下さった方がいるので早速試しました。
教えて下さった方はミシマバイカモ先生です(笑)
ありがとうございます!
editContentsには文字列を代入することになるので、
当該行は
measurementEditboxes.add({editContents:"0.1 mm", editUnits:MeasurementUnits.millimeters});

と書き換えることになります。当然、ここの値を後で代入する部分も
var myCropMarkWidth = myCropMarkWidthField.editContents;

としてやる必要があります。
こうすることで、線幅の不具合がなおりました。


さて、どこがいけなかったか、なのですが。
このスクリプトはInDesignに標準添付のスクリプトを編集したものですが、
var myOldRulerOrigin = myDocument.viewPreferences.rulerOrigin;
myDocument.viewPreferences.rulerOrigin = RulerOrigin.spreadOrigin;
//ドキュメントの寸法単位を記憶
var myOldXUnits = myDocument.viewPreferences.horizontalMeasurementUnits;
var myOldYUnits = myDocument.viewPreferences.verticalMeasurementUnits;
//寸法単位をpointsに変換
myDocument.viewPreferences.horizontalMeasurementUnits = MeasurementUnits.points;
myDocument.viewPreferences.verticalMeasurementUnits = MeasurementUnits.points;

の部分を見ると、線の太さは記憶させてないじゃないですか。気付け俺。
なお、ここでポイントに変換する以上、スクリプトの最後の方で
myDocument.viewPreferences.rulerOrigin = myOldRulerOrigin;
//記憶した寸法単位へ戻す
myDocument.viewPreferences.horizontalMeasurementUnits = myOldXUnits;
myDocument.viewPreferences.verticalMeasurementUnits = myOldYUnits;

とするわけですが、線幅が化けないようにするには、線の単位も例えばmyOldWUnitsのような変数に記憶させ、pointに変換して上記の部分で元に戻すのもひとつの方法ですが、editValueのところを全てeditContentsにしてしまえばそんな手間をかけなくてもよいそうです。
ちょっと試してみたけど、どこがおかしいのか一番下からふたつめのfunctionのmyDrawLineのところでひっかかってしまいました。
うーん。単位を記憶させてからpointに変換する部分と、それと対になって元に戻す部分。そこを削っただけなのになあ。
もうちょっと検証してみます。



2008/11/21 追記


はてなのk_ikiの日記に修正版をアップしました。
ミシマバイカモさん、ありがとうございました!
スポンサーサイト

editValueは数値なのに対して、editContentsは文字列ですから、app.activeWindow.activeSpread.graphicLines.addの中のstrokeWeight:myStrokeWeight,のところがまずいのかも知れないです。
graphicLineのプロパティstrokeWeightのとり得るものがunitになっていれば、文字列で単位付きの数値を代入できるのですが、real(だったかな)だと数値でしか入らないのです。

下線や打消し線のunderlineWeight、strikeThroughWeightは大丈夫なんですが……

あっと、もしかすると最初の部分、
measurementEditboxes.add({editContents:"0.1 mm", editUnits:MeasurementUnits.millimeters});
かも!

そこは正しく1行まるまる書くと、
var myCropMarkWidthField = measurementEditboxes.add({editContents:"0.1 mm", editUnits:MeasurementUnits.points});
です。(スミマセン、端折って書いてしまいました。)

会社からなので梅花藻。(ミシマバイカモ)

ごめんなさい。OffsetとLengthは計算に使っているので、文字列ではダメでした。
ダイアログの中の方では、editContentsで単位付きの長さを初期値として与えていいのですが、取り出す方はeditValueの方(この値はポイントで換算した値。たぶん……)を取り出す必要があります。ですので、長さほ単位系はポイントに変える必要があります。
線幅の方はたぶん大丈夫だと思うのですが……

ああ、じゃ、やっぱりpointへの変換は必要な手順だったわけですね……。

そうです。
UnitValueオブジェクトを使う等すれば単位系の変更はしなくてもいいかなとも思いますが、私自身UnitValueオブジェクトを使ったことがないので、どういう風に書き換えればいいいかすぐには答えを出せないもので……。

ダイアログの初期値はすべてeditContentsで与え(いちいちpointでの値を計算しなくて済みます)、取り出す部分は線幅も含めeditValueでpoint換算された値を取り出し、単位系はhorizontalMeasurementUnits、verticalMeasurementUnits、lineMeasurementUnitsの3つともpointへ変更して処理をした方が見通しがよくなるかなと思います。

コメントの投稿





管理者にだけ表示を許可する

トラックバック

http://kstation2.blog10.fc2.com/tb.php/319-4ffb7436

[InDesign][JavaScript]CropMarks修正版

居残り補習室の日記 [JS]CropMarksの改造 その2 において、InDesignCS3に標準添付されていたCropMarksを編集した際の問題点についてミシマバイカモさんからご指摘、ご指導をいただいた。 それらを踏まえ、修正版をアップしておく。 /* TomboCS3.js 2008.11.21 InDesig

(新しい記事)← 名古屋に竹田印刷あり
Winmail.datが開かない →(古い記事)

 | HOME | 

カレンダー

07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -

FC2カウンター

2006年3月28日カウント開始

Amazon

FC2 Affiliate

動くPDF

プロフィール

あわせて読みたい

あわせて読みたいブログパーツ

最近の記事

最近のコメント

最近のトラックバック

Lc.ツリーリンク

RSSリンク

直感カテゴリーツリーV1.1

ブログ内検索

ブロとも一覧

marumi

神楽崎 ゆう


■ ブログ名:I'm writing NOVEL

七篠 銀字


■ ブログ名:風と夜空と氷の国

MS


■ ブログ名:へなちょこDTP

桜桃


■ ブログ名:追憶の桜吹雪

瑪瑙 輝遊


■ ブログ名:千里の道も一歩から

magatu


■ ブログ名:unsigned

暁 鷲 (あかつき しゅう)


■ ブログ名:空を裂け!

NewMark

C-Roll


FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。