- 締切済み
Illustrator CS/CS2 スクリプトで数値変換
はじめまして。 Illustrator CS/CS2 (Windows)上のスクリプトで以下の数値変換を一括で行いたいのですが、なかなかできません。 例: 10 mm → 39 inch 計算式: Y(inch) = 3.9 * X(mm) 選択したテキストを取得するのは、activeDocument.selection でしょうか?取得したテキスト(数値)を計算後、戻すところがよくわかりません。申し訳ありませんが、知っている方いらっしゃったら教えていただけないでしょうか? よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- sp201073
- ベストアンサー率81% (44/54)
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回もループさせる必要なかった・・
- sp201073
- ベストアンサー率81% (44/54)
スクリプトかじりたてですが、とりあえず簡単なの作ってみました。 選択したオブジェクトから数字+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 だったはず・・・