The Value class is the root class for all MAXScript classes. It supplies methods and operators that any class can use.
Operators
<value> == <value>
compare if equal
<value> != <value>
compare if not equal
<value> as <class>
Converts the value to an instance of given class. See the description for each class for valid conversions. All values can be converted to class String, which yields a string with the printed representation of the value.
Methods
print <value> [ to:<stream> ] [#noMap] -- mappable
where <stream>
is
( <filestream> | <stringstream> | <windowstream> )
Prints single value to Listener or optional filestream, stringstream, or windowstream, followed by a line break. If the argument value is a Collection, and #noMap
is not specified, each value in the collection is printed out on a separate line. If #noMap
is specified, the collection value is printed out on a single line. The printed form of all basic data value types, except for BigArray, are directly readable by the readValue()
and readExpr()
functions, making it simpler to read back in values printed to a file by MAXScript. If the pre-3ds Max R3 print forms are required for compatibility with existing scripts, you can set the system global variable options.oldPrintStyles
to true
.
format <format_string> { <value> } [ to:<stream> ]
Prints one or more values to Listener or optional filestream, stringstream, or windowstream, using the format string as a template. The format string is a string that can contain plain text to print interspersed with the '%'
(percent) metacharacter. Each occurrence of a '%'
is replaced by the printed representation of the successive argument values following the format string.
EXAMPLE
format "name:%, pos:%\n" obj.name obj.pos
generates something like:
name: box01, pos: [0, 150.0, 0.5]
format does not automatically append a line break to the output stream, so you can build up a line from several format calls and generally control layout better. An explicit ' \\n
' newline escape character sequence is needed to place a line break in the output stream. Other escape character sequences are documented in String Literals.
classOf <value>
Returns the value's class. Each type of value has its own class. If the value is a Node value, classOf()
returns the class of the world state object (the state of the node at the top of its stack). See Node : MAXWrapper for more information.
RolloutClass
. So, for a rollout foo you'd now say "if classOf foo == RolloutClass do ..."superClassOf <value>
Returns the value's superclass. A value's superclass is the class from which the value's class was derived.
isKindOf <value> <class>
Returns true
if value has given class or inherits from class.
isStructDef <value>
Returns true if the value is a structure definition
isStruct <value>
Returns true if the value is a structure instance
isController <value>
Returns true if the value is a controller
isMSPlugin <value>
Returns true if the value is a MAXScript scripted plugin.
isMSPluginClass <value>
Returns true if the value is a MAXScript scripted plugin class.
FOR EXAMPLE:
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>
Returns true if the value is a MAXScript Custom Attribute.
isMSPlugin
will also return true.isMSCustAttribClass <value>
Returns true if the value is a MAXScript Custom Attribute class.
isMSPluginClass
will also return true.FOR EXAMPLE
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
RESULTS:
<AttributeDef:weaponData>
$Box:Box03 @ [0.000000,0.000000,0.000000]
true
weaponDataCustAttrib:weaponData
<AttributeDef:weaponData>
CustAttrib
true
true
false
false
getHashValue <value> <Integer oldHashValue>
If the value is one of the supported value types, returns an integer hash value that is a factor of the <value>
and <oldHashValue>
. If the value type is not supported, returns a value of undefined
.
The supported value types are:
isMSPlugin
will also return true.deepCopy <value> [copyAllValuesAsUnique:<boolean>]
Returns a deep copy of the value, which means all nested values are copies rather than references. The default implementation of this method is to call the copy() method. This method is only implemented for these value types:
NEW in 3ds Max 2024.1 Update:
The copyAllValuesAsUnique
keyword parameter can be specified as true if you know that all members are unique. This can significantly improve the performance of the copy operation.