d momento tengo esto
' Seteando VBScript como Lenguaje de Scripting y y un par de cosillas mas
SetValue "preferences.scripting.language", "VB Script Language"
Application.LogMessage "Version de XSI "&Application.Version & "y esto esta pensado para la 5.1"
DeselectAll
' Declarando Contador
dim gCounter
gCounter = 0
' Llamada a rutina
rSickAllMat
' Rutina de busqueda de materiales no destructiva
sub rSickAllMat
' Crear Coleccion de materiales de la escena
dim oMats, m
set oMats = CreateObject ( "XSI.Collection" )
SIGetAllNodeMaterial ActiveSceneRoot, oMats
' Imprimir Lista de mayteriales + total
LogMessage "-----> Hay (" & gCounter & ") materiales"
for each m in oMats
LogMessage "Material " & m
next
end sub
' Inspeccionar cada nodo y anyadir su material, si lo tiene, a la coleccion
sub SIGetAllNodeMaterial( in_Obj, byref io_materials )
' Obtener propiedades y repetir
dim oProp, p
set oProp = in_Obj.Properties
for each p in oProp
if TypeName(p) = "Material" Then
' Descartando lo q no sean materiales
if Not p.Branch then
' Anyade a la coleccion y suma 1 al counter
gCounter = gCounter + 1
io_materials.Add p
end if
end if
next
' Llama a SIGetAllNodeMaterial una y otra vez hasta q no haya mas Child
dim oChild, c
set oChild = in_Obj.FindChildren
for each c in oChild
SIGetAllNodeMaterial c, io_materials
next
end sub
' Crear grupos de seleccion a partir de el output
' p.e. todos los objetos q tengan .qwer en un grupo q se llame OBJCon_qwer
' el tema es q "*.qwer" es el material no el objeto3D