Returns an existing object that corresponds to a full path name. In other words, it converts from a string
representation of a Softimage object to the Object Model representation. This is similar to the GetValue
command. However, in the case of Parameter objects, Dictionary.GetObject returnz the Parameter object
and GetValue returns the parameter value (see the example below).
To convert in the other direction (from an Object Model representation to a string), use SIObject.FullName.
Object Dictionary.GetObject( String in_bszObjectName, Boolean in_bThrowError ); |
oReturn = Dictionary.GetObject( Pathname, [ThrowError] ); |
The found object.
Parameter | Type | Description |
---|---|---|
Pathname | String | Full path name of the object to find. |
ThrowError | Boolean |
By default Softimage will cause a script error if the object does not exist.
If you are not sure if the object exists or not pass false as the value
of this argument and Softimage will return null rather than throwing an error.
This parameter is new starting with v5.0.
Default Value: 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 ) |