Gracias Gracias:  0
Página 1 de 2 12 ÚltimoÚltimo
Resultados 1 al 15 de 18

Tema: Python Como nombrar objetos si los creo en un for

  1. #1
    Senior Member Avatar de Sayden
    Fecha de ingreso
    Dec 2007
    Ubicación
    Pepino´s Land
    Mensajes
    681

    (Python)Cómo nombrar objetos si los creo en un for

    Seguro que alguien me mata por hacer esta pregunta, pero llevo dándole y dándole y no lo saco.

    Tengo una clase Luces de la cual quiero crear todas las luces que tenga en la escena.

    Hago una tupla con las luces (guay)

    Accedo a sus atributos por separado cuando instancio al objeto dentro de un for que recorre la tupla (guay)

    Ahora... como coño puedo nombrar a cada objeto dentro del for? Creo los objetos de la forma

    seqLuces = Luces(x,y,z)

    Pero no se cómo hacer que nombre los objetos del modo "luz" + posición del iterable!
    EDITO: Los objetos se crean en la forma <__main__.Luces instance at 0x00...>

    Es algo super básico, lo sé, pero no consigo sacarlo!
    Última edición por Sayden; 03-02-2009 a las 23:57
    "Todo el mundo necesita un Grid en su vida"
    - Will Cunningham "The Magic Of Houdini"

    Mis blogs:
    http://houdini3d.blogspot.com - Blog dedicado a Houdini
    http://mariocaster.blogspot.com - Blog dedicado al 3D en general

    ¿Quieres aprender Renderman, el motor de render de Pixar?

  2. #2
    Vampiro Giovanni Avatar de Pepius
    Fecha de ingreso
    Feb 2004
    Ubicación
    Guadassuar, Valencia
    Mensajes
    4,998

    Re: (Python)Cómo nombrar objetos si los creo en un for

    Para que programa es el scriptí

  3. #3
    Vampiro Giovanni Avatar de Pepius
    Fecha de ingreso
    Feb 2004
    Ubicación
    Guadassuar, Valencia
    Mensajes
    4,998

    Re: (Python)Cómo nombrar objetos si los creo en un for

    De todas formas, debería ser algo tipo:

    for i in range(len(tupla_luces)):
    tupla_luces[i].name = "luz" + i

    No se si es lo que buscas =)

  4. #4
    Senior Member Avatar de Sayden
    Fecha de ingreso
    Dec 2007
    Ubicación
    Pepino´s Land
    Mensajes
    681

    Re: (Python)Cómo nombrar objetos si los creo en un for

    Hombre Pepius! Has visto que bien estoy aprendiendo Python eh?

    Es para Maya, pero concretamente esto creo que da igual para lo que sea, que es más dependiente de Python.

    El atributo .name al instanciar un objeto existe? Acabo de intentarlo pero tampoco funciona.

    No obstante me has dado una idea. Cuando estaba creando el objeto lo hacía de la forma:

    i = Luces (x,y,z)

    Ahora lo he cambiado y he puesto.

    elPutoNombre = Luces (x,y,z)

    Y ahora el objeto se llama de la misma manera que se llama el mismo objeto en la escena. Sigue sin ser lo que quería pero me voy acercando
    "Todo el mundo necesita un Grid en su vida"
    - Will Cunningham "The Magic Of Houdini"

    Mis blogs:
    http://houdini3d.blogspot.com - Blog dedicado a Houdini
    http://mariocaster.blogspot.com - Blog dedicado al 3D en general

    ¿Quieres aprender Renderman, el motor de render de Pixar?

  5. #5
    Vampiro Giovanni Avatar de Pepius
    Fecha de ingreso
    Feb 2004
    Ubicación
    Guadassuar, Valencia
    Mensajes
    4,998

    Re: (Python)Cómo nombrar objetos si los creo en un for

    Por eso te preguntaba que en que programa trabajas, porque los atributos de la clase luz depende del paquete =)

    Pero a ver si me aclaro. Tu tienes una serie de luces en la escena, y las has puesto en una tupla y quieres renombrarlasí O estas creando las luces?

    Un saludo.

  6. #6
    Senior Member Avatar de Sayden
    Fecha de ingreso
    Dec 2007
    Ubicación
    Pepino´s Land
    Mensajes
    681

    Re: (Python)Cómo nombrar objetos si los creo en un for

    Quiero crear una tupla con las luces que haya en la escena (ya creadas) para luego agruparlos en una ventana con los atributos intensidad, samples y color (que con este ya me pelearé por ser tres valores)

    La clase ya la tengo hecha, creo que bien:

    class Luces:
    def __init__ (self, lightIntensity, lightColor, subDiv)
    self.lightIntensity = lightIntensity
    self.lightColor = lightColor
    self.subDiv = subDiv

    #Luego creo la tupla.
    tuplaLuces = cmds.ls (typ="VRayLightRectShape")

    #Y el bucle

    for i in tuplaLuces:
    intensidad = cmds.getAttr(i + ".intensityMult")
    color...
    subdivisiones....
    luz = Luces(intensidad, color, subDivisiones)
    #Aquí le meto un print para comprobar
    print "Para la luz %s" % i
    print "Intensidad %i" % intensidad
    print "Subdivisiones %i" % subDivisiones + "\n"

    Basicamente creo que no hay nada más, es que no podía copiar y pegar por que el ordenador con el que trabajo no "huele" Internet por temas de rendimiento y virus. Con este código me devuelve:

    Para la luz VRayLightRectShape1
    Intensidad = 30
    Subdivisiones = 8

    Un saludo y gracias!

    EDITO: Esta bien indentado y todo, es que aquí no lo ha mostrado bien
    Última edición por Sayden; 04-02-2009 a las 01:39
    "Todo el mundo necesita un Grid en su vida"
    - Will Cunningham "The Magic Of Houdini"

    Mis blogs:
    http://houdini3d.blogspot.com - Blog dedicado a Houdini
    http://mariocaster.blogspot.com - Blog dedicado al 3D en general

    ¿Quieres aprender Renderman, el motor de render de Pixar?

  7. #7
    pythonized... Avatar de Cesar Saez
    Fecha de ingreso
    Mar 2004
    Ubicación
    Granada, España
    Mensajes
    3,765

    Re: (Python)Cómo nombrar objetos si los creo en un for

    Como quieres renombrar un objeto en Maya claro que es específico para cada software/SDK, en Maya lo puedes hacer con el comando rename

    No tengo Maya en frente pero debería ser algo así.
    Código:
    import maya.cmds as cmds
    for i in range(len(tupla_luces)):
     newName = "luz%s" % (i)
     cmds.rename(tupla_luces[i], newName)

  8. #8
    Senior Member Avatar de Sayden
    Fecha de ingreso
    Dec 2007
    Ubicación
    Pepino´s Land
    Mensajes
    681

    Re: (Python)Cómo nombrar objetos si los creo en un for

    Cita Iniciado por Cesar Saez Ver mensaje
    Como quieres renombrar un objeto en Maya claro que es específico para cada software/SDK, en Maya lo puedes hacer con el comando rename

    No tengo Maya en frente pero debería ser algo así.
    Código:
    import maya.cmds as cmds
    for i in range(len(tupla_luces)):
     newName = "luz%s" % (i)
     cmds.rename(tupla_luces[i], newName)
    No ya, si no es que quiera renombrar el objeto. Quiero saber como se llama el objeto:Clase que cree para apuntar a él dentro del código. No al objeto geométrico de Maya.

    Es que no sé como apuntar a los objetos que instancio de la clase Luz por que no se como se llaman al crearlos.
    "Todo el mundo necesita un Grid en su vida"
    - Will Cunningham "The Magic Of Houdini"

    Mis blogs:
    http://houdini3d.blogspot.com - Blog dedicado a Houdini
    http://mariocaster.blogspot.com - Blog dedicado al 3D en general

    ¿Quieres aprender Renderman, el motor de render de Pixar?

  9. #9
    Vampiro Giovanni Avatar de Pepius
    Fecha de ingreso
    Feb 2004
    Ubicación
    Guadassuar, Valencia
    Mensajes
    4,998

    Re: (Python)Cómo nombrar objetos si los creo en un for

    A ver, según lo que hace tu bucle, siempre asignas cada nueva instancia de la clase Luces, a la variable luz, y para lo único que usas la tupla es para la longitud del bucle (si no recuerdo mal de python). Entonces al final del bucle tendrías una sola instancia, dentro de la variable luz.

    Yo haría algo así (ya te digo que de maya, ni idea, igual tienes que cambiar algo, o igual ni sirve)

    for i in range(len(tupla_luces)):
    tupla_luces[i] = Luces(arg1,arg2,arg3)

    Eso te dejaría algo así:

    tupla_luces = [instancia_luz,instancia_luz,instancia_luz,instanci a_luz,...]

    Y ahí es donde puedes después acceder a la luz que tu quieras. Para acceder a la primera luz, pues tupla_luces[0], y así sucesivamente.

    Un saludete.

  10. #10
    reconvertido Avatar de ikerCLoN
    Fecha de ingreso
    Apr 2002
    Ubicación
    Los Angeles, USA
    Mensajes
    14,911

    Re: (Python)Cómo nombrar objetos si los creo en un for

    Lo que dice Pepius, en MAX se llama 'array', e imagino que en Maya recibira el mismo nombre.
    character TD @ Walt Disney Animation Studios

    mi curso de rigging facial :: https://www.domestika.org/en/courses...je-3d/ikerclon
    blog :: www.somosposmodernos.com
    twitter :: www.twitter.com/soyposmoderno
    linkedIn :: www.linkedin.com/in/ikerj

  11. #11
    Senior Member Avatar de Sayden
    Fecha de ingreso
    Dec 2007
    Ubicación
    Pepino´s Land
    Mensajes
    681

    Re: (Python)Cómo nombrar objetos si los creo en un for

    Una tupla es similar a un array pero sus objetos son inmutables. Se accede de la misma manera que los arrays (tupla[x] donde x es el número del índice en la tupla).

    Pero lo que quiero no es crear una tupla con las luces (y sus propiedades) dentro, esa ya está creada.

    Lo que quiero es crear objetos (pero objetos de POO) de la clase Luz con los argumentos que le pase al constructor desde la tupla.
    "Todo el mundo necesita un Grid en su vida"
    - Will Cunningham "The Magic Of Houdini"

    Mis blogs:
    http://houdini3d.blogspot.com - Blog dedicado a Houdini
    http://mariocaster.blogspot.com - Blog dedicado al 3D en general

    ¿Quieres aprender Renderman, el motor de render de Pixar?

  12. #12
    Vampiro Giovanni Avatar de Pepius
    Fecha de ingreso
    Feb 2004
    Ubicación
    Guadassuar, Valencia
    Mensajes
    4,998

    Re: (Python)Cómo nombrar objetos si los creo en un for

    Uf, menudo lio :lol

    Pero lo que quiero no es crear una tupla con las luces (y sus propiedades) dentro, esa ya está creada.
    A esto te refieres a una tupla con las instancias de la clase luz?

  13. #13
    Senior Member Avatar de Sayden
    Fecha de ingreso
    Dec 2007
    Ubicación
    Pepino´s Land
    Mensajes
    681

    Re: (Python)Cómo nombrar objetos si los creo en un for

    No, juer que lio. A ver.

    Pongamos la clase Coche. Para crear un objeto de la clase coche haríamos:

    mi_coche = Coche()

    No? Y tendríamos una instancia de la clase Coche a la que podríamos acceder de la forma:

    mi_coche.marca = "Audi"
    mi_coche.color = "Rojo"

    Ahora, teniendo un array con 5 coches con sus respectivos atributos (todos, no solo marca y color), querría crear 5 objetos de mi clase Coche con los atributos marca y color extraidos de este array.

    Consigo extraer los atributos, pero mi duda es que no sé como asignar nombres a cada objeto. ¿Como conseguir que se llame mi_coche[índice de la tupla].Coche?

    micoche[].Coche() no funciona, por cierto. Es posible que sea por que tiene que ser un diccionario o una lista en lugar de una tupla?
    "Todo el mundo necesita un Grid en su vida"
    - Will Cunningham "The Magic Of Houdini"

    Mis blogs:
    http://houdini3d.blogspot.com - Blog dedicado a Houdini
    http://mariocaster.blogspot.com - Blog dedicado al 3D en general

    ¿Quieres aprender Renderman, el motor de render de Pixar?

  14. #14
    Vampiro Giovanni Avatar de Pepius
    Fecha de ingreso
    Feb 2004
    Ubicación
    Guadassuar, Valencia
    Mensajes
    4,998

    Re: (Python)Cómo nombrar objetos si los creo en un for

    O sea, tu tienes un array, con los atributos del palo de esto:

    Array = {Atributos1, Atributos2, Atributos3}

    Y quieres crear tantas instancias como elementos haya en en ese array, y con esos atributos? Algo tipo esto:

    coche1 = Coche(atributos1)
    coche2 = Coche(atributos2)
    coche3 = Coche(atributos3)

  15. #15
    Senior Member Avatar de Sayden
    Fecha de ingreso
    Dec 2007
    Ubicación
    Pepino´s Land
    Mensajes
    681

    Re: (Python)Cómo nombrar objetos si los creo en un for

    Claro! Pero hacerlo en un for por que el número de atributos del array es variable dependiendo de la escena.

    En teoría tendría que ser algo como:

    for i in array:
    "coche" + i = Coche(atributos)

    No? pero así no sale.
    "Todo el mundo necesita un Grid en su vida"
    - Will Cunningham "The Magic Of Houdini"

    Mis blogs:
    http://houdini3d.blogspot.com - Blog dedicado a Houdini
    http://mariocaster.blogspot.com - Blog dedicado al 3D en general

    ¿Quieres aprender Renderman, el motor de render de Pixar?

Página 1 de 2 12 ÚltimoÚltimo

Temas similares

  1. Blender Detectar objetos con ratón python bge
    Por Juani en el foro Programación y Scripts
    Respuestas: 2
    Último mensaje: 11-11-2015, 23:10
  2. Rhinoceros como creo sombras
    Por Luks_carp en el foro Render, Iluminación y Cámaras
    Respuestas: 0
    Último mensaje: 03-04-2011, 01:46
  3. Nombrar objetos hechos a mano de nombre serial
    Por juliux en el foro Programación y Scripts
    Respuestas: 2
    Último mensaje: 10-07-2009, 18:28
  4. Respuestas: 5
    Último mensaje: 11-03-2008, 18:58
  5. Como creo una encuesta
    Por Gepetto en el foro Ayuda con el uso del foro
    Respuestas: 1
    Último mensaje: 02-11-2006, 01:25

Actualmente estos son sus permisos de publicación en el foro.

  • -No puedes crear nuevos temas al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes responder temas al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes subir archivos adjuntos al no estar registrado o no haber iniciado sesión en el foro.
  • -No puedes editar tus mensajes al no estar registrado o no haber iniciado sesión en el foro.
  •