こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Illustrator CS/CS2 スクリプトで数値変換

はじめまして。
Illustrator CS/CS2 (Windows)上のスクリプトで以下の数値変換を一括で行いたいのですが、なかなかできません。
例: 10 mm → 39 inch
計算式: Y(inch) = 3.9 * X(mm)

選択したテキストを取得するのは、activeDocument.selection でしょうか?取得したテキスト(数値)を計算後、戻すところがよくわかりません。申し訳ありませんが、知っている方いらっしゃったら教えていただけないでしょうか?
よろしくお願いいたします。

投稿日時 - 2010-04-08 17:13:14

QNo.5811779

困ってます

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

No.1 訂正です。



//ここから

selObj = app.activeDocument.selection;

for (i=0; i<selObj.length; i++)
{
txt = selObj[i].contents;
selObj[i].contents = txt.replace(/[0-9]+mm/gm,inch).replace(/[0-9]+[ ]+mm/gm,spinch);
}

function inch(str)
{
var str = str.substring(0,str.length-2);
var n = str*0.039
return n+"inch";
}

function spinch(str)
{
var str = str.substring(0,str.length-3);
var n = str*0.039
return n+" inch";
}

//ここまで


2回もループさせる必要なかった・・

投稿日時 - 2010-04-09 07:26:40

ANo.1

スクリプトかじりたてですが、とりあえず簡単なの作ってみました。
選択したオブジェクトから数字+mmの文字列を検索してmm以前の数値に0.039かけたものにinchをつけて置換します。
例のように数字とmmの間にスペースがある場合と無い場合用に2回処理してます。

即席で作ったので単位がmm以外(cm,m)やカンマ区切りの数字には対応してません・・・


//ここから

selObj = app.activeDocument.selection;

for (i=0; i<selObj.length; i++)
{
txt = selObj[i].contents;
selObj[i].contents = txt.replace(/[0-9]+mm/gm,inch);
}
for (i=0; i<selObj.length; i++)
{
txt = selObj[i].contents;
selObj[i].contents = txt.replace(/[0-9]+[ ]+mm/gm,spinch);
}

function inch(str)
{
var str = str.substring(0,str.length-2);
var n = str*3.9
return n+"inch";
}

function spinch(str)
{
var str = str.substring(0,str.length-3);
var n = str*3.9
return n+" inch";
}

//ここまで



ところで、10mm → 39inch でいいんですか? 
10mm は 0.39inch だったはず・・・

投稿日時 - 2010-04-09 04:21:54

あなたにオススメの質問