値の共通プロパティ、演算子、メソッド
値クラスは、すべての MAXScript クラスのルート クラスに相当します。どのクラスでも使用できるメソッドおよび演算子を提供します。
演算子
等しいかを比較します。
等しくないかを比較します。
指定したクラスのインスタンスに値を変換します。有効な変換については、各クラスに関するトピックを参照してください。すべての値は String クラスに変換できます。これを使えば、指定した値を文字列化したものが生成されます。
メソッド
print <value> [ to:<stream> ] [#noMap] -- mappable
<stream>部分は次のようになります。
( <filestream> | <stringstream> | <windowstream> )
単一の値の後に改行文字を付け、リスナーまたはオプションの filestream、stringstream、または windowstream に出力します。引数の値が Collection で、 #noMap が指定されていない場合、コレクション内の各値は個別の行に出力されます。 #noMap が指定されている場合、コレクション値が 1 行に出力されます。BigArray 以外のすべての基本データ値タイプの出力形式は、 readValue() および readExpr() 関数によって直接読み込まれるため、MAXScript でファイルに出力された値を簡単に読み込みできます。既存のスクリプトとの互換性を保つために、3ds Max R3 出力形式を前処理する必要がある場合は、システム グローバル変数 options.oldPrintStyles を true に設定できます。
format <format_string> { <value> } [ to:<stream> ]
フォーマット文字列をテンプレートとして使い、1 つまたは複数の値をリスナーまたはオプションの filestream、stringstream、または windowstream
に出力します。フォーマット文字列には、メタ文字 '%' を混在させて出力するプレーン テキストを含めることができます。 '%' が現れるたびに、この文字はフォーマット文字列の後に続く引数値を文字列化したものに置き換えられます。
例
|
format "name:%, pos:%\n" obj.name obj.pos
|
これは、次のように出力されます。
|
name: box01, pos: [0, 150.0, 0.5]
|
フォーマット処理では、自動的に改行文字が出力ストリームに追加されないため、フォーマット処理をいくつか呼び出して行を作成し、より見やすいレイアウトを作成できます。改行文字を出力ストリームに配置するには、改行エスケープ文字シーケンス「 ¥n 」を明示的に挿入することが必要です。その他のエスケープ文字シーケンスについては、「文字列リテラル」を参照してください。
値のクラスを返します。値の各タイプには、独自のクラスがあります。値がノード値である場合、 classOf() は、ワールド状態オブジェクト(ノードがスタックの最上部にある状態)のクラスを返します。詳細は、「Node:MAXWrapper」を参照してください。
注:「rollout」という名前のグローバル変数のユーザ クラス値と、ロールアウト定義の導入部分となる MAXScript の予約語「rollout」との競合を回避するため、ロールアウトのクラス変数名は
RolloutClass にします。したがって、foo というロールアウトの場合、「if classOf foo == RolloutClass」になります。
値のスーパークラスを返します。値のスーパークラスとは、その値のクラスの派生元となるクラスです。
値が指定したクラスを持っているか継承している場合は、 true を返します。
値が構造体定義である場合、true を返します。
値が構造体インスタンスである場合、true を返します。
値がコントローラである場合、true を返します。
値が MAXScript スクリプト プラグインである場合、true を返します。
値が MAXScript スクリプト プラグイン クラスである場合、true を返します。
例:
|
b = box() --create a Box primitive
-->$Box:Box001 @ [0.000000,0.000000,0.000000]
a = emptymodifier() --create an attribute holder modifier
-->EmptyModifier:Attribute Holder
addModifier b a --add the modifier to the box
-->OK
isMSPlugin a --see if the modifier is a scripted plugin? Yes!
-->true
isMSPlugin b --see if the box is a scripted plugin? No!
-->false
isMSPluginClass EmptyModifier --is the modifier class scripted? Yes!
-->true
isMSPluginClassBox --is the object class scripted? No!
-->false
|
値が MAXScript カスタム アトリビュートである場合、true を返します。
注:カスタム アトリビュートはスクリプト プラグインの特別なケースであるため、 isMSPlugin も true を返します。
isMSCustAttribClass <value>
値が MAXScript カスタム アトリビュート クラスである場合、true を返します。
注:カスタム アトリビュートはスクリプト プラグインの特別なケースであるため、 isMSPluginClass も true を返します。
例
|
weaponDataCA = attributes weaponData
(
Parameters main
(
)
)
b=box()
custAttributes.add b weaponDataCA
c=b.baseobject.custAttributes[1]
d=classof c
superclassof c
isMSPluginClass d
isMSCustAttribClass d
isMSPluginClass b
isMSCustAttribClass b
|
結果
|
<AttributeDef:weaponData>
$Box:Box03 @ [0.000000,0.000000,0.000000]
true
weaponDataCustAttrib:weaponData
<AttributeDef:weaponData>
CustAttrib
true
true
false
false
|
getHashValue <value> <Integer oldHashValue>
値のタイプがサポートされている場合は、<value>と <oldHashValue>の要素である整数ハッシュ値を返します。値のタイプがサポートされていない場合は、 undefined 値が返されます。
サポートされている値のタイプは次のとおりです。
- 浮動小数値
- 整数値
- 文字列値
- BitArray 値
- Point3 値
- Ray 値
- Quat 値
- AngAxis 値
- EulerAngles 値
- Matrix3 値
- Point2 値
- カラー値
- 上記の値タイプで配列を含むもの