Hatena::ブログ(Diary)

名もないテクノ手 このページをアンテナに追加 RSSフィード Twitter

EPUB版『InDesign者のための正規表現入門』

InDesignのTips一覧

2009-09-11

[][][][]スクリプトで生成したオブジェクトは線幅(strokeWeight)が適用(変更)できない

テストしてみてください

ちょっと混乱しているので、もしよろしければテストしてみてください。以下、教科書に載っているようなテキストフレームを生成するスクリプトです。

var my_doc = app.documents.add();
var my_textFrame = my_doc.pages[0].textFrames.add();
my_textFrame.geometricBounds = [100, 150, 200, 250];
my_textFrame.contents = "こんにちわ世界!";
my_textFrame.strokeWeight = 10;

線幅を指定しているのに、適用されていませんよね。

f:id:seuzo:20090911005617p:image

さらに、このドキュメントを開いたまま下記スクリプトを実行してみてください。

my_doc = app.activeDocument;
my_textFrame = my_doc.textFrames[0];
my_textFrame.strokeWeight = 5;
$.writeln(my_textFrame.strokeWeight);

コンソールには、5と書き出されますが、線幅は適用されません。最初のままです。線パネルも0ptを指しています。

f:id:seuzo:20090911005618p:image

ここで、このテキストフレームの線幅を手動で任意の値を適用してください。そして、2番目のスクリプト(線幅を5にするスクリプト)を実行してみてください。今度は線幅が変更されました。

f:id:seuzo:20090911005619p:image

via AppleScript

用心深く、同じことをAppleScriptでもやってみます。

tell application "Adobe InDesign CS4"
	set my_doc to make new document
	tell my_doc
		set my_textFrame to make new text frame
		tell my_textFrame
			set geometric bounds to {100, 150, 200, 250}
			set contents to "こんにちわ、ASの国から"
			set stroke weight to 10--線幅の指定
		end tell
	end tell
end tell
tell application "Adobe InDesign CS4"
	tell document 1
		tell text frame 1
			set stroke weight to 5
		end tell
	end tell
end tell

やはり同様に線幅は変更できません。


つまり

スクリプトで生成したオブジェクトは線幅(strokeWeight)が適用(変更)できないっぽいのです。

ここではわかりやすいように生成時にstrokeWeightに10を指定していますが、この行がなくてもおなじです。オブジェクトの実際の線幅を知ることはできません。変更もできません(strokeWeightの値は変わりますが、実際のレイアウトには反映できません)。ですから..

var my_obj = app.activeDocument.selection[0];
alert ("選択オブジェクトの線の太さは" + my_obj.strokeWeight + "です。")

なんて書いても、これらのオブジェクトは嘘を返します。

これを回避する方法をまだ見つけていません。(追記:2009-09-11T10:23:21+0900)↓みなさまからの暖かいコメントを見よ!

環境

わたしの環境は以下の通り

ちなみにInDesign CS3(5.0.4)でも同様でした。

あれれ、もしかしてぼくだけ知らなかった? あるいはなにかの呪い? ぼくだけ? あれ、ぼくだけ? [Bug]タグを付けるだけの確信すらないです。