## Model.Groups

### Description

Returns a GroupCollection containing all Group objects in the model.

### C# Syntax

    // get accessor

    GroupCollection rtn = Model.Groups;

### Examples

#### VBScript Example

    '----------------------------------------------------------

    '

    '	This example demonstrates how to find groups under the

    '	scene root or under a specific model given the

    '	following structure:

    '

    '        Scene_Root                        Model    Group

    '            + RootGroup                              *

    '            + ChildModel                    *

    '                + ChildGroup                         *

    '            + AnotherChildModel             *

    '                + AnotherChildGroup                  *

    '                + GrandChildModel           *

    '                    + GrandChildGroup                *

    '                                          =====    =====

    '                                            3        4

    '

    '	NB: The Model.Groups property has a limitation of only

    '		getting the immediate children of that model

    '		(whereas you can get every all models in all

    '		generations with the X3DObject.Models property).

    '

    '----------------------------------------------------------

    '

    '	SETUP

    '

    NewScene , false

    ' Set up a scene with 4 objects

    set oRoot = ActiveSceneRoot

    set oMbr1 = oRoot.AddGeometry( "Disc", "MeshSurface" )

    set oMbr2 = oRoot.AddGeometry( "Torus", "MeshSurface" )

    set oMbr3 = oRoot.AddGeometry( "Sphere", "MeshSurface" )

    set oMbr4 = oRoot.AddNull()

    ' Create a group under the root

    oRoot.AddGroup oMbr1, "RootGroup"

    ' Create a new model and another group under the new model

    set oMdl = oRoot.AddModel( oMbr2, "ChildModel" )

    oMdl.AddGroup oMbr2, "ChildGroup"

    ' Add another model to the root

    set oMdl = oRoot.AddModel( oMbr3, "AnotherChildModel" )

    oMdl.AddGroup oMbr3, "AnotherChildGroup"

    ' Nest yet another model under the second child model

    set oMdl = oMdl.AddModel( oMbr4, "GrandChildModel" )

    oMdl.AddGroup oMbr4, "GrandChildGroup"

    '----------------------------------------------------------

    '

    '	SEARCH

    '

    ' Find all groups under the scene root

    LogMessage "******** GROUPS UNDER " & oRoot.Name & " ********"

    FindGroupsUnderModel oRoot

    ' Find all groups under 'AnotherChildModel'

    LogMessage "******** GROUPS UNDER " & oMdl.Name & " ********"

    FindGroupsUnderModel oMdl

    ' Now find all groups in the scene

    RecursiveGroupSearch oRoot

    '----------------------------------------------------------

    '

    '	RESULTS

    '

    'INFO : "******** GROUPS UNDER Scene_Root ********"

    'INFO : "RootGroup contains these members:"

    'INFO : "	disc"

    'INFO : "******** GROUPS UNDER GrandChildModel ********"

    'INFO : "GrandChildModel.GrandChildGroup contains these members:"

    'INFO : "	null"

    'INFO : "******** FINDING ALL GROUPS IN THE SCENE ********"

    'INFO : "# of models under the root: 3"

    'INFO : "RootGroup contains these members:"

    'INFO : "	disc"

    'INFO : "ChildModel.ChildGroup contains these members:"

    'INFO : "	torus"

    'INFO : "AnotherChildModel.AnotherChildGroup contains these members:"

    'INFO : "	sphere"

    'INFO : "GrandChildModel.GrandChildGroup contains these members:"

    'INFO : "	null"

    '----------------------------------------------------------

    '

    '	HELPERS

    '

    ' Finds all groups under a specific model (not recursive)

    function FindGroupsUnderModel( in_model )

    	' Find all groups under the specified model

    	set oGrps = in_model.Groups

    	for each g in oGrps

    		LogMessage g.FullName & " contains these members:"

    		for each m in g.Members

    			LogMessage vbTab & m.Name

    		next

    	next

    end function

    '----------------------------------------------------------

    ' Finds all groups under a specific model (recursive). Since

    ' we can get every model recursively (except the one we

    ' started with) start with listing the groups under the

    ' current model and then get the groups for each model under

    ' it, calling FindGroupsUnderModel for each one.

    function RecursiveGroupSearch( in_model )

    	LogMessage "******** FINDING ALL GROUPS IN THE SCENE ********"

    	LogMessage "# of models under the root: " & in_model.Models.Count

    	' First print out the groups info for the current model

    	FindGroupsUnderModel in_model

    	' Then iterate over every model contained inside the

    	' current model, printing the groups info for each one

    	for each mdl in in_model.Models

    		FindGroupsUnderModel mdl

    	next

    end function