読者です 読者をやめる 読者になる 読者になる

k_ikiの雑記帳

DTPのこと、創作のことなど、思いつくまま

環境設定

普通は新規ドキュメントを作る前に単位を設定しておくべきですね。
というか、基本的にポイントで作るのか、基本的にミリで作るのか。
どちらで作業するか決めて、アプリケーションの初期設定をそのようにしておくべきでしょう。
もし何らかのしがらみがないのであれば、是非全ての単位をポイントに揃えたいところです。
残念ながら、様々なしがらみ(と、私自身の使いやすさ)から、ウチではミリと級・歯で作業しているのが現状です。
さて、ドキュメントを作成した後、もしくは他所からのデータを受け取った後で、単位を変更したい場面が出てくることもあります。
そこで、下記のようなスクリプトを書いてみました。
以前、mixi日記に書いた奴です。

////////////////////////////////////////////エラー処理 
function myerror(mess) { 
  if (arguments.length > 0) { alert(mess); }
  exit();
}


////////////////////////////////////////////ラジオダイアログ
/*
myTitle	ダイアログ(バー)のタイトル
myPrompt	メッセージ
myList	ラジオボタンに展開するリスト

result	選択したリスト番号
*/
function radioDialog(my_title, my_prompt, my_list){
	var my_dialog = app.dialogs.add({name:my_title, canCancel:true});
	with(my_dialog) {
		with(dialogColumns.add()) {
			// プロンプト
			staticTexts.add({staticLabel:my_prompt});
			with (borderPanels.add()) {
				var my_radio_group = radiobuttonGroups.add();
				with (my_radio_group) {
					for (var i = 0; i < my_list.length; i++){
						if (i == 0) {
							radiobuttonControls.add({staticLabel:my_list[i], checkedState:true});
						} else {
						radiobuttonControls.add({staticLabel:my_list[i]});
						}
					}
				}
			}
		}
	}


	if (my_dialog.show() == true) {
		var ans = my_radio_group.selectedButton;
		//正常にダイアログを片付ける
		my_dialog.destroy();
		//選択したアイテムの番号を返す
		return ans;
	} else {
		// ユーザが「キャンセル」をクリックしたので、メモリからダイアログボックスを削除
		my_dialog.destroy();
	}
}




////実行
if (app.documents.length == 0) {myerror("ドキュメントが開かれていません")}
var myDocument = app.activeDocument;

////////////////単位の選択
var myList = ["水平/垂直ルーラ=ミリ、線=ミリ、文字サイズ=級、組版単位=歯", 
"すべてをポイントに", 
"線のみポイントに", 
"文字サイズ/組版単位のみポイントに",];
var ans_int = radioDialog("ViewPreferences", "環境設定の単位を変更します。選択してください\n", myList);
//myList[ans_int];

////////////////選択した環境設定にセット
if (ans_int == 0) {//水平/垂直ルーラ=ミリ、線=ミリ、文字サイズ=級、組版単位=歯
	with(myDocument.viewPreferences){
		horizontalMeasurementUnits = MeasurementUnits.millimeters;
		verticalMeasurementUnits = MeasurementUnits.millimeters;
		lineMeasurementUnits = MeasurementUnits.millimeters;
		textSizeMeasurementUnits = MeasurementUnits.Q;
		typographicMeasurementUnits = MeasurementUnits.HA;
	}
} else if (ans_int == 1) {//すべてをポイントに
	with(myDocument.viewPreferences){
		horizontalMeasurementUnits = MeasurementUnits.points;
		verticalMeasurementUnits = MeasurementUnits.points;
		lineMeasurementUnits = MeasurementUnits.points;
		textSizeMeasurementUnits = MeasurementUnits.points;
		typographicMeasurementUnits = MeasurementUnits.points;
	}
} else if (ans_int == 2) {//線のみポイントに
	with(myDocument.viewPreferences){
		horizontalMeasurementUnits = MeasurementUnits.millimeters;
		verticalMeasurementUnits = MeasurementUnits.millimeters;
		lineMeasurementUnits = MeasurementUnits.points;
		textSizeMeasurementUnits = MeasurementUnits.Q;
		typographicMeasurementUnits = MeasurementUnits.HA;
	}
} else if (ans_int == 3) {//文字サイズ/組版単位のみポイントに
	with(myDocument.viewPreferences){
		horizontalMeasurementUnits = MeasurementUnits.millimeters;
		verticalMeasurementUnits = MeasurementUnits.millimeters;
		lineMeasurementUnits = MeasurementUnits.millimeters;
		textSizeMeasurementUnits = MeasurementUnits.points;
		typographicMeasurementUnits = MeasurementUnits.points;
	}
}