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