モデル内にあるすべてのGroupオブジェクトを含むGroupCollectionを戻します。
'---------------------------------------------------------- ' ' 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 |