Resultados 1 al 2 de 2

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

  1. #1
    Usuario a moderar
    Fecha de ingreso
    Sep 2022
    Mensajes
    1
    Gracias (Dadas)
    0
    Gracias (Recibidas)
    0

    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: 55 
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
    Administrador, fundador y milenario... Avatar de 3dpoder
    Fecha de ingreso
    Apr 2002
    Mensajes
    27,513
    Gracias (Dadas)
    3604
    Gracias (Recibidas)
    5133
    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 gráfico y CAD
    Respuestas: 1
    Último mensaje: 04-04-2023, 23: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 gráfico y CAD
    Respuestas: 1
    Último mensaje: 04-04-2023, 18:02
  3. Animación en base a lista de coordenadas
    Por 3J Kernel en el foro Animación y Rigging
    Respuestas: 7
    Último mensaje: 11-08-2016, 10:41
  4. Asignar coordenada z a objetos
    Por nenofar en el foro Programas de Diseño gráfico y CAD
    Respuestas: 6
    Último mensaje: 25-09-2008, 21:27
  5. Respuestas: 4
    Último mensaje: 27-04-2006, 22:02

Etiquetas para este tema