ShaderParamDefCollection.Find
 
 
 

ShaderParamDefCollection.Find

Description

Returns the first member of this collection that matches the find criteria. If no item is found, it returns "Nothing", which you can use to trap errors.

C# Syntax

ShaderParamDef ShaderParamDefCollection.Find( String in_filter );

Scripting Syntax

oReturn = ShaderParamDefCollection.Find( [Type] );

Return Value

Object (type varies according to find criteria).

Parameters

Parameter Type Description
Type String Object type (see siType for a list of possible values)

Examples

1. VBScript Example

'
'       This example demonstrates how to find X3DObject objects
'
' Set up the example using a mesh grid, cube, cone, and a nurbs cube:
set oRoot = activesceneroot
oRoot.addgeometry "grid", "meshsurface"
oRoot.addgeometry "cube", "meshsurface"
oRoot.addgeometry "cone", "meshsurface"
oRoot.addgeometry "cube", "nurbssurface"
set oGeoms = oRoot.findchildren( ,,siGeometryFamily)
logmessage "The collection of geometry from the root is a " & typename( oGeoms ) 
logmessage "There are " & oGeoms.count & " geometry objects under the root." 
logmessage ""
for each item in oGeoms
        logmessage item.name & " is a " & item.type & " " & typename( item )
next
set oCone = oGeoms.find( "cone" )
set oCube = oGeoms.find( "cube" )
set oGrid = oGeoms.find( "grid" )
logmessage ""
logmessage "=========================================================================="
logmessage " Stats for the collection:"
logmessage " ------------------------"
logmessage "    Total number of objects in collection: " & oGeoms.count
logmessage "    Name of the first cone in the collection: " & oCone.name
logmessage "    Name of the first cube in the collection: " & oCube.name
' Try some error trapping ( if you are trying to use a find criteria that returns Nothing, 
' you will see this error message: 'ERROR : "Object required: 'oCube1'" )
set oCube1 = oGeoms.find( "cube1" )
if typename( oCube1 ) = "Nothing" then
        logmessage "    Can't get the name of the other cube in the collection."
else 
        logmessage "    Name of the other cube in the collection: " & oCube1.name
end if
logmessage "    Name of the first grid in the collection: " & oGrid.name
' Output of above script is:
'INFO : "The collection of geometry from the root is a X3DObjectCollection"
'INFO : "There are 4 geometry objects under the root."
'INFO : ""
'INFO : "grid is a polymsh X3DObject"
'INFO : "cube is a polymsh X3DObject"
'INFO : "cone is a polymsh X3DObject"
'INFO : "cube1 is a surfmsh X3DObject"
'INFO : ""
'INFO : "=========================================================================="
'INFO : " Stats for the collection:"
'INFO : " ------------------------"
'INFO : "       Total number of objects in collection: 4"
'INFO : "       Name of the first cone in the collection: cone"
'INFO : "       Name of the first cube in the collection: cube"
'INFO : "       Can't get the name of the other cube in the collection."
'INFO : "       Name of the first grid in the collection: grid"

2. JScript Example

/*
        This example demonstrates how to find Cluster objects
*/
NewScene( null, false );
var obj = CreatePrim( "Cube", "MeshSurface" );
CreateCluster("cube.pnt[2,3,6,LAST]");
CreateCluster("cube.poly[1]");
CreateCluster("cube.edge[0,1,3,5-8,LAST]");
CreateCluster("cube.sample[0,3-9,12,15,20,21]");
// find the cluster using the siType constant.
var cls = obj.activeprimitive.geometry.clusters.find( siPolygonCluster );
if ( cls != null )
        logmessage( "found polygon cluster: " + cls.fullname ); 
//Expected results:
//INFO : found polygon cluster: cube.polymsh.cls.Polygon

3. Python Example

#
#       This example demonstrates how to to find PlayControl Property objects 
#       under the scene root
#
PlayCtrlProp = Application.ActiveProject.Properties.Find( "PlayControl" )
try :
        if Application.ClassName(PlayCtrlProp) == "Property" :
                Application.LogMessage( "PlayControl property OK" )
        else :
                Application.LogMessage( "PlayControl property NOT found" )
except :
        Application.LogMessage( "PlayControl property NOT found" )
# Output of above script:
#INFO : PlayControl property OK