v1.0
Returns the value of a parameter at a specific frame. This is a very
powerful command because it can apply to any parameter, and it can
convert a return value to an object in some cases. It also isn't
necessarily tied to a parameter, as in the case of using it to return
a collection of selected objects.
The example below demonstrates how versatile this command is. It returns
whatever value the parameter contains, no matter what type of value it is.
If the parameter or entity is attached to an object, then the object is
returned, rather than a simple data value (like a string with the name of
the object). For example, the following statement returns an
XSICollection of selected items:
Set objSel = GetValue( "SelectionList" )
Note: If this command returns an object (instead of a simple data value)
and you are using VBScript, you must use the 'Set' keyword in order to
get the object. If you omit 'Set', the string name of the object(s) is
returned instead.
On the other hand, if you try to assign a simple data value to an object,
this command generates an 'Object required' error message. For example, if
you tried to assign the returned posx value as an object as in this case:
Set dblX = GetValue( "circle.kine.local.pos.posx" )
You can usually test for the return value by using the TypeName() function
for VBScript (which reports back object type as well as simple data type).
For JScript, you can use the ClassName() method, which reports on the object
type or the typeof operator, which reports only on the simple data type.
The counterpart to this command is the SetValue command,
which allows you to set parameter values.
The Object Model provides alternatives to GetValue and SetValue. For example,
parameter values can be retrieved and modified using Parameter.Value
as demonstrated in the second example below. In addition, objects can be retrieved
using Dictionary.GetObject.
oVariant = GetValue( Target, [Time] ); |
Parameter | Type | Description |
---|---|---|
Target | String | Parameter value to retrieve. |
Time | Number |
Frame at which to get the value. Default Value: Current frame. |
' ' This example just demonstrates some of the different values ' you can find using this command. ' NB: If you want to use the GetValue command to return ' an object, you need to use the 'Set' keyword for VBScript ' rtn = GetValue("Camera.aspect") LogMessage TypeName(rtn) ' returns Double rtn = GetValue("Camera.kine.posz", 25) LogMessage TypeName(rtn) ' returns Boolean rtn = GetValue("light.Name") LogMessage TypeName(rtn) ' returns String ' GetValue() on an object just returns the object: set rtn = GetValue("Layers.Layer_Default") LogMessage TypeName(rtn) ' returns Layer ' You can also convert the selection list to the selection object set rtn = GetValue("SelectionList") LogMessage TypeName(rtn) ' returns Object (= collection) LogMessage rtn.Type ' returns XSICollection LogMessage TypeName(rtn(0)) ' returns X3DObject |
/* This example demonstrates how you can get and set parameter values using one of the following: (1) GetValue or SetValue scripting commands (2) the Parameter object (long version) (3) a shortcut to the Parameter object */ NewScene( null, false); // First start by getting an object pointer to the sphere, which we will // use with the object model versions ActiveSceneRoot.AddGeometry( "sphere", "meshsurface" ); var oSphere = ActiveSceneRoot.FindChild( "Sphere" ); // (1) Change the sphere's posx value using commands: dblX = GetValue( "sphere.kine.local.pos.posx" ); dblX = dblX - 1.25; SetValue( "sphere.kine.local.pos.posx", dblX ); // (2) Restore the value but this time use the OM (long way) dblX = oSphere.Kinematics.Local.Parameters( "posx" ).Value; dblX = dblX + 1.25; oSphere.Kinematics.Local.Parameters( "posx" ).Value = dblX; // (3) Change the value back again with the OM shortcut dblX = oSphere.posx.Value; dblX = dblX + 1.25; oSphere.posx.Value = dblX; |