ArrayParameter Values

Certain plug-ins in 3ds Max store parameter data in a form that is accessible by MAXScript as ArrayParameters. As such, you can access the parameter data by index and iterate over the parameter data.

Constructors

.parameter

Where the parameter contains an ArrayParameter.

Properties

.count

Returns the number of values in the ArrayParameter. Read-only in most cases, with exceptions noted in the MAXWrapper object description where an adjustable ArrayParameter is used.

Operators

[]

Returns element of ArrayParameter. Indexes start at 1.

[] =

Sets element of ArrayParameter to value.

Notes

Each ArrayParameter can only contain data of a certain type (for example, Float), or a controller that matches that data type. The showProperties() function indicates these array parameters as array, for example, int array, texmap array, etc.

A plug-in can also define parameter names which point to specific entries in one of its ArrayParameters. For example, mapAmounts is a property of Standard materials containing an ArrayParameter. Each element in this ArrayParameter contains the map amount for one of the map channels. For easier access in a script, the Standard .ambientMapAmount property is provided as an alias for mapAmounts[1] (along with aliases for all the other common maps). You can access the controller for the ambientMapAmount alias either via the .controller property on the alias or on the .mapAmounts[1] property.

For example,

either:

$foo.material.ambientMapAmount.controller

or

$foo.material.mapAmounts[1].controller

will gets the controller on the ambient map amount material property.

ArrayParameter values can be coerced to Array in 3ds Max 6 and higher.

For Example:

mtl = standard()

mapsArray = mtl.maps as array

?

Examples

The following script shows the use of showProperties() to show the data type for elements of ArrayParameters, access to ArrayParameter elements, and a case of a plug-in defining parameter names which point to a specific entry in one of its ArrayParameters.

Script

m=CompositeMaterial() -- create a Composite material

showproperties m -- show the properties for the material

m.amount -- show value of parameter amount

m.amount[1] *= .5 -- reduce the value for one element

m=standard() -- create a Standard material

showproperties m -- show it’s properties

m.ambientMapAmount=13 -- set the value for one element via its alias

m.mapAmounts[1] -- and show the element was changed

Output

compositematerial:Composite -- result line 1

.materialList (Material : material array -- output line 2

.mixType (Composite Type) : int array -- ArrayParameter elements are integer

.mapEnables (Map Enable) : bool array -- ArrayParameter elements are boolean

.amount : float array -- ArrayParameter elements are float

OK -- result line 2

#(100, 100, 100, 100, 100, 100, 100, 100, 100, 100) -- result line 3

50.0 -- result line 4

Standardmaterial:Standard -- result line 5

.mapEnables (Map Enables) : bool array -- pruned output line 6

.maps : texmap array

.mapAmounts (Map Amounts) : percent array

.ambientMap (alias for maps[0])

.ambientMapAmount (alias for mapAmounts[0])

.ambientMapEnable (alias for mapEnables[0])

.bumpMap (alias for maps[8])

.bumpMapAmount (alias for mapAmounts[8])

.bumpMapEnable (alias for mapEnables[8])

13 -- result line 7

13.0 -- result line 8