FormattedPrint
3ds Max 9 の MAXScript で、 FormattedPrint メソッド が追加されました。このメソッドは、従来、無償の Avguard 拡張機能によって使用できるようになっていた機能です。
formattedPrint <value> format:<string>
指定されたフォーマットに基づいて値を文字列で表したものを返します。
複数の値で構成される値の場合、指定されたフォーマットは、その値の個々のコンポーネント値に適用されます。
浮動小数点値の値またはコンポーネント値の既定値のフォーマット文字列は「0.8g」、整数の場合は「%d」です。
指定できる値は、float、double、integer、integer64、intptr、string、bool、ray、point2、point3、point4、quat、angleAxis、eulerAngle、matrix3、box2、color、time、interval
のいずれかです。
オプションの format: 文字列は、次のように指定します。
"[Flags][Width][.Precision][SizePrefix]Type"
ここで、
Flags は次のように指定します。
フラグ
|
意味
|
-
|
指定されたフィールド幅で値を左寄せにします。既定値は右寄せです。
|
+
|
出力値に + または - 符号をプレフィックスします。既定値では、負の値にのみ - (マイナス)記号が表示されます。
|
0
|
Width の前に 0 が指定されている場合は、最小限の桁数に達成するまでゼロを追加します。0 と - が指定されている場合は、0 が無視されます。整数のフォーマット(i、u、x、X、o、d)とともに
0 が指定されている場合は、0 が無視されます。既定値はパディングなしです。
|
Blank(' ')
|
出力値が符号付きの正の値である場合は出力値に空白をプレフィックスします。空白と + フラグの両方が指定されている場合は、空白が無視されます。既定値では、空白は付加されません。
|
#
|
o、x、X のいずれかのフォーマットと組み合わせて指定されている場合は、ゼロ以外の出力値にそれぞれ 0、0x、0X をプレフィックスします。既定値では、空白は付加されません。#
フラグが e、E、f のいずれかのフォーマットと組み合わせて指定されている場合は、どのような場合でも出力値に小数点を付けます。既定値では、小数点以下の値が存在する場合にのみ小数点を表示します。#
フラグが g または G フォーマットと組み合わせて指定されている場合は、どのような場合でも出力値に小数点を付け、後続ゼロを切り捨てないようにします。既定値では、小数点以下の値が存在する場合にのみ小数点を表示し、末尾桁のゼロを切り捨てます。d、i、u
のいずれかと組み合わせて指定されている場合は、無視されます。
|
Width には、出力する最低限の文字数をコントロールする正の 10 進数を指定します。出力値に含まれる文字数がここで指定した桁数に満たない場合は、値の左または右(- フラグを指定すれば左)に空白を追加して、最低限の文字数にします。Width
の前に 0 が指定されている場合は、最小限の桁数に達するまでゼロを追加します(左揃えの数値には適しません)。桁数を指定することによって値が切り捨てられることはありません。出力値の文字数が指定された桁数よりも多い場合や、桁数が指定されていない場合は、出力値のすべての文字が(精度の指定に従って)出力されます。
Precision には、ピリオド(.)に続けて、出力したい文字数、小数点以下の桁数、または有効桁数を表す正の 10 進整数を指定します。精度(precision)が指定されている場合は、桁数が指定されてい場合とは異なり、出力値が切り捨てられたり浮動小数点値が丸められたりする可能性があります。精度に
0 が指定されている場合に 0 を変換しようとすると、結果には 1 文字も出力されません。
タイプ: d、i、u、o、x、X - 精度は、出力する最小の桁数です。引数の桁数が指定された精度に満たない場合は、出力値の左側にゼロをパディングして出力します。桁数が指定された精度を上回る場合は、値が切り捨てられることはありません。既定値の精度は
1 です。
タイプ: e、E - 精度は、小数点以下の出力する桁数です。出力される最下位の桁は丸められます。既定値の精度は 6 です。精度が 0 の場合や、小数点(.)に続く値が存在しない場合は、小数点は出力されません。
タイプ: f - 精度は、小数点以下の桁数です。小数点が表示される場合は、少なくとも 1 つの桁が小数点の前に表示されます。値は適切な桁数に丸められます。既定値の精度は 6 です。精度が
0 の場合や、小数点(.)に続く値が存在しない場合は、小数点は出力されません。
タイプ: g、G - 精度は、出力する有効桁数の最大数を指定します。すべての後続ゼロを切り捨て、6 桁の有効桁を出力します。
format フィールドの必須オプションは Type の文字のみです。この文字の前に、以下の任意のオプション format フィールドを指定できます。
文字
|
型
|
出力フォーマット
|
d、i
|
int
|
符号付き 10 進整数
|
o
|
int
|
符号なし 8 進整数
|
u
|
int
|
符号なし 10 進整数
|
x
|
int
|
符号なし 16 進整数、「abcdef」を使用
|
X
|
int
|
符号なし 16 進整数、「ABCDEF」を使用
|
e
|
double
|
符号付きの値。形式は[ - ]d.dddd e [sign]ddd です。ここで、d は 1 つの 10 進数の桁、dddd は 1 つまたは複数の 10 進数の桁、ddd は 3 つの 10 進数の桁、sign は + または - ; です。
|
E
|
double
|
e フォーマットとほぼ同じですが、e とは異なり、E では指数が使用されます。
|
f
|
double
|
符号付きの値。形式は[ - ]dddd.dddd です。ここで、dddd は 1 つまたは複数の 10 進数の桁です。小数点以上の桁数はその数の大きさによって異なり、小数点以下の桁数は要求された精度によって異なります。
|
g
|
double
|
符号付の値を f または e のフォーマットのうち、指定された値および精度に該当し、かつコンパクトな方で出力します。e フォーマットが使用されるのは、値の指数が -4 より小さいか、Precision 引数と同じである場合のみです。後続ゼロは切り捨てられ、小数点は小数点以下の桁が存在する場合にのみ表示されます。
|
G
|
double
|
g フォーマットとほぼ同じですが、g とは異なり、G では指数が使用されます(適切な場合)。
|
SizePrefix は次のように指定します。
I - IntegerPtr で値を出力
I32 - Integer で値を出力
I64 - Integer64 で値を出力
整数値の既定値のフォーマットは「I32d」です。
v = 12611668 -- Integer
formattedPrint v
"12611668"
|
Integer64 の値の既定値のフォーマットは「I64d」です。
v = 126116680000L -- Integer64
formattedPrint v
"126116680000"
|
IntegerPtr の値の既定値のフォーマットは「Id」です。
v = 12611668P -- IntegerPtr
formattedPrint v
"12611668"
|
例
|
formattedPrint pi
"3.1415927"
formattedPrint pi format:"0 g"
" 3.14159"
formattedPrint -pi format:"0 g"
"-3.14159"
formattedPrint pi format:"12.8g"
" 3.1415927"
formattedPrint yellow
"(color 255 255 0)"
m = matrix3 1
formattedPrint m
"(matrix3 [1,0,0] [0,1,0] [0,0,1])"
formattedPrint m format:"#g"
"(matrix3 [1.00000,0.000000,0.000000] [0.000000,1.00000,0.000000] [0.000000,0.000000,1.00000])"
formattedPrint 10 format:"#o"
"012"
formattedPrint 10 format:"#x"
"0xa"
formattedPrint v format:"19.18g"
" 1.2345678901234567"
|