## X3DObjectCollection.Find

### Description

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

### C# Syntax

    X3DObject X3DObjectCollection.Find( String in_filter );

### Scripting Syntax

    oReturn = X3DObjectCollection.Find( [Type] );

### Return Value

X3DObject

### Parameters

Parameter | Type | Description
--- | --- | ---
Type | siType | The type of object to look for defined by siType or an empty string if the type is not required. The type can be a specific X3DObject type such as siModelType and si3DObjectType or a primitive type such as siPolyMeshType or siSrfMeshPrimType. If a primitive type is supplied, the function returns the first child object defined with a primitive of this type.
Possible Values: | Description:
siPolyMeshType | Polygon Mesh type
si3DObjectType | 3D Object type
siArcPrimType | Implicit Arc Primitive type
siAttractorCtrlType | Attractor Control Object type (electric force)
siCameraPrimType | Camera Primitive type
siCameraRootPrimType | Camera Root primitive type
siChainBonePrimType | Chain Bone Primitive type
siChainEffPrimType | Chain End Effector Primitive type
siChainRootPrimType | Chain Root Primitive type
siCirclePrimType | Implicit Circle Primitive type
siCloudPrimType | Cloud Primitive type
siConePrimType | Cone Primitive type
siCrvListAggregatePrimType | NURBS Curve List Aggregate Primitive type
siCrvListPrimType | NURBS Curve List Primitive type
siCubePrimType | Cube Primitive type
siCylinderPrimType | Cylinder Primitive type
siDiscPrimType | Disc Primitive type
siDodecahedronPrimType | Dodecahedron Primitive type
siDragCtrlPrimType | Drag Control Primitive type
siEddyCtrlPrimType | Eddy Control Primitive type
siFanType | Fan Force Object type
siFurPrimType | Fur Primitive type
siGeoShaderPrimType | GeoShader Primitive Type
siGravityCtrlType | Gravity Force Control Object type
siGridPrimType | Grid Primitive type
siIcosahedronPrimType | Icosahedron Primitive type
siLatticePrimType | Lattice Primitive type
siLightPrimType | Light Primitive type
siModelNullPrimType | Model Null Primitive type
siModelType | 3D Model type
siNullPrimType | Null Primitive type
siOctahedronPrimType | Octahedron Primitive type
siSpherePrimType | Sphere Primitive type
siSpiralPrimType | Implicit Spiral Primitive type
siSpotInterestPrimType | Spot Interest Primitive type
siSpotRootPrimType | Spot Root Primitive type
siSquarePrimType | Implicit Square Primitive type
siSrfMeshPrimType | NURBS Surface Mesh Primitive type
siTetrahedronPrimType | Tetrahedron Primitive type
siTorusPrimType | Torus Primitive type
siTurbulenceCtrlPrimType | Turbulence Control Primitive type
siVolumeDeformType | Volume Deform type (implicit sphere volume)
siVortexCtrlType | Vortex Control Object type (magnetic force)
siWaveCtrlType | Wave Control Object type
siWindType | Wind Force Object type

### Examples

#### VBScript Example

    'VBScript example
    ' 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"