フルパス名に対応する既存のオブジェクトを戻します。すなわち、Softimage オブジェクトの文字列表現をObject Model の表現に変換します。このメソッドは GetValue コマンドに似ています。ただし、Parameter オブジェクトの場合は、Dictionary.GetObject がパラメータオブジェクトを戻し、GetValue がパラメータ値を戻します(以下の例を参照)。
(オブジェクトモデル表現から文字列に)変換方向を変える場合は、SIObject.FullName を使用します。
Object Dictionary.GetObject( String in_bszObjectName, Boolean in_bThrowError ); |
oReturn = Dictionary.GetObject( Pathname, [ThrowError] ); |
検索されたオブジェクト
パラメータ | タイプ | 説明 |
---|---|---|
Pathname | String | 検索するオブジェクトのフルパス名 |
ThrowError | Boolean |
デフォルトでは、オブジェクトが存在しない場合、Softimage はスクリプトエラーを戻します。オブジェクトが存在するかどうかがわからない場合、またはこの引数値としてfalse を渡さない場合、Softimage はエラーではなくヌルを戻します。これは v5.0で初めて導入されたパラメータです。
デフォルト値:true |
' ' 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) |
/* 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 ) ; |
' ' 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 ) |
/* 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 ) |
""" Demonstrates Dictionary.GetObject() method with error handling """ Application.NewScene( "", False ) #Create a primitive oCone = Application.CreatePrim("Cone", "MeshSurface", "", "") # Use dictionary to locate the its render visibility try: oRenderVisParam = Application.Dictionary.GetObject( "cone.visibility.rendvis", True ) Application.LogMessage( "Parameter found. Value: " + str( oRenderVisParam.Value ) ) except: Application.LogMessage( "Parameter not found." ) |