XSIforum.com

Foros 3D => Autodesk Softimage => Rigging y Scripting => Mensaje iniciado por: gerardoxsi en 14 Agosto 2010, 20:21:34

Título: FindChildren
Publicado por: gerardoxsi en 14 Agosto 2010, 20:21:34
Hola a todos

estoy empezando a darle al python, y ya tengo mis primeross problemas!  XD



Código: [Seleccionar]
xsi = Application
asr = Application.ActiveSceneRoot

xsi.GetPrim("Null", "", "", "")

myT = asr.FindChildren ("null*")

xsi.LogMessage ( myT )


yo esperaba que me diera de resultado la lista de nulls de la escena, pero no ha sido, obtengo un none!
¿que he hecho mal?
Título: Re: FindChildren
Publicado por: alanf en 14 Agosto 2010, 21:28:55
Vienes de MEL, no? MEL te da listas como strings ya que no tiene object model.

Esto si funciona:
Código: [Seleccionar]
xsi = Application
asr = xsi.ActiveSceneRoot

myT = asr.FindChildren("*", "null")

for null in myT:
xsi.LogMessage(null)
Título: Re: FindChildren
Publicado por: gerardoxsi en 14 Agosto 2010, 21:29:42
vaale, lo que obtengo es una lista.
tengo que itinerarla y mostrar cada miembro para ello.
Título: Re: FindChildren
Publicado por: alanf en 14 Agosto 2010, 21:31:51
Y tu otro problema del codigo era que usabas .FindChildren("null*") que significa que no busca nulls necesariamente sino objetos cuyo nombre empieze por "null".

Lo que hize yo filtra los hijos por su .Type y solo te da nulls ya que el .Type de un null es "null".
Si miras el manual, pone: X3DObject.FindChildren( [Name], [Type], [Family], [Recursive] )
Título: Re: FindChildren
Publicado por: gerardoxsi en 14 Agosto 2010, 21:34:08
si si.. eso lo habia visto en la ayuda.
lo que no entendia era que me devolvia una lista, y que las listas no se muestran como strings

gracias alan!

estoy haciendo un curso acelerado de python para ver si resuelvo unos problemillas de rigs
Título: Re: FindChildren
Publicado por: alanf en 14 Agosto 2010, 21:41:36
Si lees mas a fondo la pagina sobre FindChildren y miras abajo, pone:
Return Value
X3DObjectCollection

con un link. Si le das te da los methods y properties de ese tipo de "collection". Hay mas de un tipo. Lo que te da es un collection, no una lista.

En Python un "list" es otra cosa completamente diferente de un collection de XSI.
Título: Re: FindChildren
Publicado por: gerardoxsi en 14 Agosto 2010, 21:53:25
vale, me devuelve una coleccion de objetos, no la lista de sus nombres.. no?
Título: Re: FindChildren
Publicado por: alanf en 14 Agosto 2010, 22:05:56
vale, me devuelve una coleccion de objetos, no la lista de sus nombres.. no?
Correcto. :) Si sus nombres cambiasen, la lista continuaria teniendo los objetos correctos.

Pero como dije, hay mas de un tipo de collection. Lo que te da FindChildren() es un X3DObjectCollection, que por ejemplo tiene algunos metodos diferentes del tipo XSICollection.
Título: Re: FindChildren
Publicado por: Cesar Saez en 17 Agosto 2010, 14:35:24
En lugar de usar FindChildren()/FindChild() es mejor usar un FindChildren2()/FindChild2() que ya no incluyen al objeto padre y son el reemplazo a los antigüos métodos, dentro de algunas versiones los van a deprecar y es mejor ir usando desde ya los nuevos métodos ;)
Título: Re: FindChildren
Publicado por: gerardoxsi en 17 Agosto 2010, 15:47:08
si, ya notaba yo raro que me salieran los objetos padres en la coleccion
me imagino que eliminar estos antiguos metodos, los nuevos funcionaran por estos
es decir, FindChildren será FindChildren2.... no?
Título: Re: FindChildren
Publicado por: Cesar Saez en 17 Agosto 2010, 16:07:25
Si, era un bug que se ha reparado de esa forma para evitar que se rompan los desarrollos anteriores O0
Título: Re: FindChildren
Publicado por: Chelos en 17 Agosto 2010, 16:46:40
¿Gerardo si no te importa como estás empezando? Porque yo llevo tiempo queriéndome poner pero no hago más que ir de un lado para otro sin sacar nada claro macho xD
Título: Re: FindChildren
Publicado por: gerardoxsi en 17 Agosto 2010, 17:47:44
hola... ¿como que como estoy empezando?
con python?... pues nada, con un par de manuales online "python para todos" y este que me lo he bajado pero ni lo he mirado: http://es.diveintopython.org/ (http://es.diveintopython.org/)
Título: Re: FindChildren
Publicado por: Chelos en 17 Agosto 2010, 18:35:01
¿'Phyton para todos' es el de Raúl González? Creo que lo tengo por ahí (so es uno que hay gratuito), pero no lo llegué a ver

Es que yo llevo muchísimo tiempo queriendo empezar a tocar algo de scrpting, me da igual java, phyton en maya o en xsi, el caso es que no encuentro nada decente, no se donde buscar o no es lo mío, pero el caso es que cada vez que me pongo a leer algo termino igual que empecé, así que algo debo no estar haciendo bien xD

Supongo que tu eres autodidacta y empezastes con MEL ¿no?
Título: Re: FindChildren
Publicado por: alanf en 17 Agosto 2010, 18:37:24
si, ya notaba yo raro que me salieran los objetos padres en la coleccion
me imagino que eliminar estos antiguos metodos, los nuevos funcionaran por estos
es decir, FindChildren será FindChildren2.... no?
No, porque podria romper compatibilidad con FindChildren() en scripts antiguos. FindChildren2() continuara existiendo por separado. (No es el unico comando asi.)
Título: Re: FindChildren
Publicado por: gerardoxsi en 17 Agosto 2010, 18:43:03
¿'Phyton para todos' es el de Raúl González? Creo que lo tengo por ahí (so es uno que hay gratuito), pero no lo llegué a ver

Es que yo llevo muchísimo tiempo queriendo empezar a tocar algo de scrpting, me da igual java, phyton en maya o en xsi, el caso es que no encuentro nada decente, no se donde buscar o no es lo mío, pero el caso es que cada vez que me pongo a leer algo termino igual que empecé, así que algo debo no estar haciendo bien xD

Supongo que tu eres autodidacta y empezastes con MEL ¿no?

bueno, yo es que programación estudie desde niño, toque Basic, Pascal, Cobol... pero bueno, sé de muchos que ha aprendido scripting en 3D desde cero.

en Digital Tutors hay tutoriales de python para Maya y Softi (creo que el único que hay de python para xsi), de Mel hay muchisimos en internet y en 3Dquakers hay scripting para XSI que van desde conceptos basicos.
Título: Re: FindChildren
Publicado por: Chelos en 18 Agosto 2010, 11:40:00
bueno, yo es que programación estudie desde niño, toque Basic, Pascal, Cobol... pero bueno, sé de muchos que ha aprendido scripting en 3D desde cero.

en Digital Tutors hay tutoriales de python para Maya y Softi (creo que el único que hay de python para xsi), de Mel hay muchisimos en internet y en 3Dquakers hay scripting para XSI que van desde conceptos basicos.


Le echaré un vistazo a esos, sobre a todo a los de quakers, que me molan, no sabía que tuvieran scripting... a ver tal
Muchas gracias gerardo! :P