Resultados 1 al 2 de 2

Tema: Python Blender - Asignar coordenadas a objetos desde una lista

  1. #1
    Fecha de ingreso
    Sep 2022
    Mensajes
    1

    Python Blender - Asignar coordenadas a objetos desde una lista

    Hola a todos. Tengo una lista con valores Z y una serie de sub-colecciones en el árbol de Blender. Mi idea es crear un objeto del tipo Vacío (Empty) en cada una de las subcolecciones y asignar a cada uno los valores Z correspondientes de la lista. Entiendo que debería ejecutar dos bucles for, uno para recorrer las subcolecciones y crear los objetos, y otro para recorrer la lista de valores Z y asignarlos a los objetos creados. Sin embargo, no he logrado obtener el resultado que busco.

    Mi código es el siguiente:

    Código:
    import bpy
    
    
    heights = [0.09, 3.09, 6.09]
    
    
    ...
    
    
    ind = 0
    for coll in bpy.data.collections['IfcBuilding/My Building'].children:
        empty = bpy.data.objects.new('IfcBuildingStorey/Level' + str(ind), None)
        coll.objects.link(empty)
        empty.empty_display_type = 'PLAIN_AXES'
        for i in heights:
            empty.location[2] = i
        ind += 1
    La estructura de mi árbol de Blender es la de la imagen:

    Clic en la imagen para ver su versión completa. 

Nombre: Captura.PNG 
Visitas: 283 
Tamaño: 15.2 KB 
ID: 243748


    Con este código consigo cambiar el valor de la coordenada Z de los objetos, pero todos adquieren el último valor de la lista (6.09).

    ¿Podría alguien ayudarme con esto?

    Muchas gracias de antemano.

  2. #2
    Fecha de ingreso
    Apr 2002
    Mensajes
    25,945
    El problema con tu código es que estás asignando todos los valores de la lista heights a cada objeto empty en el segundo bucle for. En lugar de eso, deberías asignarle un valor único a cada objeto empty basado en su índice en la lista heights. Aquí te muestro un ejemplo de cómo podrías modificar tu código para lograr esto:

    Código:

    Código:
    import bpy
    
    heights = [0.09, 3.09, 6.09]
    
    ...
    
    for i, coll in enumerate(bpy.data.collections['IfcBuilding/My Building'].children):
    empty = bpy.data.objects.new('IfcBuildingStorey/Level' + str(i), None)
    coll.objects.link(empty)
    empty.empty_display_type = 'PLAIN_AXES'
    empty.location[2] = heights[i]
    Ten en cuenta que en lugar de utilizar un contador externo ind, puedes utilizar la función enumerate de Python para obtener tanto el índice como el elemento actual en la lista heights. De esta manera, puedes asignar el valor correspondiente de heights a cada objeto empty dentro del bucle for principal.
    |Agradecer cuando alguien te ayuda es de ser agradecido|

Temas similares

  1. Generar sólidos en AutoCAD 2007 a partir de una lista de puntos con coordenadas
    Por crstuardo en el foro Programas de Diseño 3D y CAD
    Respuestas: 1
    : 04-04-2023, 22:22
  2. AutoCAD Problema al asignar coordenadas de mapeo en Autodesk Viz al exportar muros de AutoCAD
    Por bestianimal en el foro Programas de Diseño 3D y CAD
    Respuestas: 1
    : 04-04-2023, 17:02
  3. 3dsMax Animación en base a lista de coordenadas
    Por 3J Kernel en el foro Animación y Rigging
    Respuestas: 7
    : 11-08-2016, 09:41
  4. 3dsMax Asignar objetos a armature
    Por adelmo83 en el foro Animación y Rigging
    Respuestas: 14
    : 08-07-2008, 00:57
  5. Sugerencias Blender mas Python se puede aceder a un archivo Blender desde otro
    Por yeclapa en el foro Programas de Diseño 3D y CAD
    Respuestas: 4
    : 27-04-2006, 21:02

Etiquetas para este tema