Dictionary.GetObject

Dictionary.GetObject

説明

フルパス名に対応する既存のオブジェクトを戻します。すなわち、Softimage オブジェクトの文字列表現をObject Model の表現に変換します。このメソッドは GetValue コマンドに似ています。ただし、Parameter オブジェクトの場合は、Dictionary.GetObject がパラメータオブジェクトを戻し、GetValue がパラメータ値を戻します(以下の例を参照)。

(オブジェクトモデル表現から文字列に)変換方向を変える場合は、SIObject.FullName を使用します。

C#構文

Object Dictionary.GetObject( String in_bszObjectName, Boolean in_bThrowError );

スクリプト構文

oReturn = Dictionary.GetObject( Pathname, [ThrowError] );

戻り値

検索されたオブジェクト

パラメータ

パラメータ タイプ 説明
Pathname String 検索するオブジェクトのフルパス名
ThrowError Boolean デフォルトでは、オブジェクトが存在しない場合、Softimage はスクリプトエラーを戻します。オブジェクトが存在するかどうかがわからない場合、またはこの引数値としてfalse を渡さない場合、Softimage はエラーではなくヌルを戻します。これは v5.0で初めて導入されたパラメータです。

デフォルト値: true

1. VBScript の例

'

' Demonstrates usage of the Dictionary.GetObject method

'

' Clear the current scene to avoid name clashes and create

' a new cone named "foo"

deleteall false

CreatePrim "Cone", "MeshSurface", "foo"

' Find the subdivu parameter from the cone and set it to 10

Set oSubdivuParam = Dictionary.GetObject("foo.polymsh.geom.subdivu")

Application.LogMessage "Found a " & oSubdivuParam.type ' Outputs "Found a Parameter"

SetValue oSubdivuParam, 10

' Find the cone by its name and delete it

Set oCone = Dictionary.GetObject("foo")

Application.LogMessage "Found a " & oCone.type ' Outputs "Found a polymsh"

DeleteObj (oCone)

2. JScript の例

/*

	Demonstrates usage of the Dictionary.GetObject method

*/

NewScene(null,false);

var oModel = ActiveSceneRoot.AddModel(new ActiveXObject("XSI.Collection"),"MyMdl") ;

var oNull = oModel.AddNull( "MyN" );

var oSphere = oNull.AddGeometry("Sphere","MeshSurface","MyS");

// Expect "MyMdl.MyS"

Application.LogMessage( oSphere.FullName ) ;

// Retrieve the sphere again, this time via its string name

oSphere = Dictionary.GetObject( "MyMdl.MyS" )

// The sphere is actually nested underneath the Null so you can also specify it like this

oSphere = Dictionary.GetObject( "MyMdl.MyN.MyS" )

// Now look at one of the parameters under the sphere

// Expect "MyMdl.MyS.kine.local.posx"

Application.LogMessage( oSphere.Kinematics.Local.Parameters("posx").FullName );

// First move the sphere to a recognizable position

SetValue( "MyMdl.MyS.kine.local.posx", 7.5 )

// Calling GetValue will return the VALUE of posx parameter

var paramValue = GetValue( "MyMdl.MyS.kine.local.posx" ) ;

// Expect "number,7.5"

Application.LogMessage( typeof( paramValue ) + "," + paramValue);

// But calling Dictionary.GetObject will return the 

// actual Parameter object

var oParameter = Dictionary.GetObject( "MyMdl.MyS.kine.local.posx" )

// Expect "object,Parameter,7.5"

Application.LogMessage( typeof( oParameter ) + "," + Application.ClassName(oParameter) + "," + oParameter.Value ) ;

3. VBScript の例

'

' This example shows how to find an object by its name, and to create it if it doesn't already exists.  

' In this case we reuse the Annotation that has a specific name if it is already present at the scene root.

'

NewScene , false

dim strAnnotationName

strAnnotationName = "MyAnnotation"

set oObj = Dictionary.GetObject( strAnnotationName, false )

if TypeName( oObj ) = "Nothing" then

	set oObj = ActiveSceneRoot.AddProperty( "Annotation", false, strAnnotationName )

end if

InspectObj( oObj )

4. JScript の例

/*

	This example shows how to find an object by its name, and to create it if it doesn't already exists.  

	In this case we reuse the Annotation that has a specific name if it is already present at the scene root.

*/

var strAnnotationName = "MyAnnotation" ;

var oObj = Dictionary.GetObject( strAnnotationName, false ) ;

if ( !oObj ) {

	var oObj = ActiveSceneRoot.AddProperty( "Annotation", false, strAnnotationName ) ;

}

InspectObj( oObj )

関連項目

GetValue SIObject Parameter