Answered
面積計算スクリプトを複数対応に改善したい
スクリプトの作成については素人なのですが、
オブジェクトの面積を計算して出力するスクリプトを
(既存スクリプトを組み合わせて改造しながら)作成しました。
これは単体のオブジェクトに対してだけ動作するものです。
複数のオブジェクトを選択して実行したとき、
それぞれに計算して合計してくれるような
スクリプトに改善することはできるでしょうか。
よろしくお願い致します。
//------------変数の初期化等------------
var win_width = 400; //ウインドウの幅を指定
var win_hight = 110; //ウインドウの高さを指定
var dlWin; //ダイアログウインドウを格納する変数
var btnOK; //OKボタンを格納する変数
var condition_scale; //スケール変換(文字列)を格納する変数
var scale; //スケール変換を格納する変数
var area = app.selection[0].area; // 選択中のオブジェクトの面積(単位がpt)を取得
if (isNaN(area)) {
alert ("グループ・複合パス・テキスト等の面積計算はできません。");
}
else {
dlWin = new Window("dialog","スケールの入力",[0,0,win_width,win_hight]);
dlWin.center(); //ウインドウ表示位置をモニターの中心に移動
dlWin.add ("statictext", [10,10,60,40], "Scale 1/"); //ウインドウに固定文字を追加
condition_scale = dlWin.add("edittext",[60,10,win_width-10,40],10); //個数nの入力テキストボックスを追加、初期値は10に設定
dlWin.add ("statictext", [10,40,win_width,60], "※オブジェクトが複数ある場合、最前面の1つだけを実行します"); //ウインドウに固定文字を追加
btnOK = dlWin.add("button",[10,70,130,100],"OK",{name:"ok"}); //ウインドウにOKボタンを追加
dlWin.show(); //作成したウインドウを表示
scale = parseInt(condition_scale.text, 10); //ダイアログで入力したスケールを整数に変換
var absolute = Math.abs(area); // 負の数字を引っ張ってくる場合があるので、絶対値を取得して正の数に統一
var convert = Math.ceil(absolute * 0.12445216049); // 小数点を切り上げしてptからメートル法に変換
var result = (convert * 0.000001 * scale * scale +'㎡'); // スケール変換して計算
var x = app.activeDocument.selection[0].position[0];
var y = app.activeDocument.selection[0].position[1]; // 選択中のオブジェクトのXY座標を取得
docObj = activeDocument;
textObj = docObj.textFrames.add();
textObj.contents = (result); //テキストフレームにresultを書き込み
textObj.translate(x,y+2.5); //テキストを選択中のオブジェクトのすぐ上に移動
}
