値 (Value)クラスは、すべての MAXScript クラスのルート クラスに相当します。どのクラスでも使用できるメソッドおよび演算子を提供します。
オペレータ
<value> == <value>
等しいかを比較します。
<value> != <value>
等しくないかを比較します。
<value> as <class>
指定したクラスのインスタンスに値を変換します。有効な変換については、各クラスに関するトピックを参照してください。すべての値は 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 <value>
値のクラスを返します。値の各タイプには、独自のクラスがあります。値がノード値である場合、classOf()
は、ワールド状態オブジェクト(ノードがスタックの最上部にある状態)のクラスを返します。詳細は、「Node:MAXWrapper」を参照してください。
「rollout」という名前のグローバル変数のユーザ クラス値と、ロールアウト定義の導入部分となる MAXScript の予約語「rollout」との競合を回避するため、ロールアウトのクラス変数名は RolloutClass
にします。したがって、foo というロールアウトの場合、「if classOf foo == RolloutClass」になります。
superClassOf <value>
値のスーパークラスを返します。値のスーパークラスとは、その値のクラスの派生元となるクラスです。
isKindOf <value> <class>
値が指定したクラスを持っているか継承している場合は、true
を返します。
isStructDef <value>
値が構造体定義である場合、true を返します。
isStruct <value>
値が構造体インスタンスである場合、true を返します。
isController <value>
値がコントローラである場合、true を返します。
isMSPlugin <value>
値が MAXScript スクリプト プラグインである場合、true を返します。
isMSPluginClass <value>
値が 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
isMSCustAttrib <value>
値が 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
値が返されます。
サポートされている値のタイプは次のとおりです。
カスタム アトリビュートはスクリプト プラグインの特別なケースであるため、isMSPlugin
も true を返します。
deepCopy <value> [copyAllValuesAsUnique:<boolean>]
値のディープ コピーを返します。つまり、参照ではなく、ネストされたすべての値がコピーされます。このメソッドの既定の実装では、copy() メソッドを呼び出します。このメソッドは、次に示す値タイプの場合のみ実装されます。
3ds Max 2024.1 Update の新機能: すべてのメンバーが一意であることが分かっている場合は、
copyAllValuesAsUnique
キーワード パラメータを true として指定できます。これにより、コピー操作のパフォーマンスが大幅に向上します。