v1.0
特定フレームのパラメータの値を戻します。 このコマンドは非常に強力で、すべてのパラメータに適用でき、戻り値をオブジェクトに変換できる場合もあります。 このコマンドを使用して選択したオブジェクトのコレクションを戻す場合には、フレームとパラメータが関連付けられている必要はありません。
以下のサンプルは、このコマンドがいかに多様な用途に使用できるかを示しています。 値の型によらず、パラメータに格納されている任意の値を戻します。 パラメータまたはエンティティがオブジェクトにアタッチされている場合には、単純なデータ値(例: オブジェクト名の文字列)ではなくオブジェクトが返されます。 たとえば、次のステートメントは選択した項目の XSICollection を戻します。
Set objSel = GetValue( "SelectionList" )
注: このコマンドがオブジェクト(単純なデータ値ではなく)を戻す場合、VBScript を使用する際にはオブジェクトの取得に「Set」キーワードを使用する必要があります。 「Set」を使用しないと、オブジェクトではなく、オブジェクトの名前が文字列として返されます。
一方、単純なデータ値をオブジェクトに割り当てようとすると、このコマンドは'Object required'(オブジェクトが必要)というエラー メッセージを生成します。 たとえば、次のステートメントのように戻された posx の値をオブジェクトとして割り当てようとすると、このエラーが生成されます。
Set dblX = GetValue( "circle.kine.local.pos.posx" )
VBScript では、通常 TypeName() 関数を使用して戻り値をテストします(この関数は単純なデータ型とともにオブジェクトのタイプを報告します)。 JScript の場合は ClassName() メソッドを使用します。オブジェクトのタイプを報告するか、単純なデータ型の場合にはオペレータのタイプを報告します。
このコマンドと反対の動作をするのが SetValue コマンドです。このコマンドではパラメータの値を設定できます。
Object Model は GetValue および SetValue の代わりとして使用できます。 たとえば、以下の 2 番目の例のように、パラメータ値は Parameter.Value を使用して取得および修正できます。 また、Dictionary.GetObject を使用しても、オブジェクトを取得できます。
oVariant = GetValue( Target, [Time] ); |
' ' 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; |