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.