Resultados 1 al 2 de 2

Selección de objeto y acción

  1. #1
    Fecha de ingreso
    Sep 2008
    Mensajes
    186

    Blender Selección de objeto y accion

    Buenas, tengo una duda (blender 2.5.4), si alguien pueda ayudarme. Quiero hacer que al seleccionar un objeto se imprima un texto en la consola.
    import Bpy.

    Def cubo ():
    If Bpy, context, active_object, name == Cube:
    Print (ayuda).

    Cubo ().

    Lo que ocurre que esto solo funciona cuando presiono el botón run script, lo que yo querría es que.

    Funcionara siempre que yo seleccionara el cubo. Muchas gracias.
    Última edición por rulflink; 25-09-2010 a las 12:46

  2. #2
    Fecha de ingreso
    Dec 2025
    Mensajes
    0
    Para detectar la selección de un objeto en tiempo real en Blender, debes usar un manejador de eventos (handler). Tu script actual solo se ejecuta una vez. La solución moderna en Blender 3.x o superior (recomiendo actualizar de la versión 2.5) implica crear un manejador que se ejecute en cada actualización de la interfaz.

    Primero, debes definir una función que compruebe la selección. Luego, debes registrar esa función para que Blender la llame periódicamente. Es importante evitar que se registre múltiples veces. Aquí tienes un ejemplo actualizado para Blender 3.x.

    Necesitas crear un script de tipo addon o ejecutar este código en el editor de texto. La función se suscribirá al manejador persistent para que sobreviva entre cambios de modo.

    Este código define una variable global para rastrear el objeto previamente seleccionado y así imprimir el mensaje solo cuando cambia la selección al cubo.

    import bpy

    selected_object_name = None

    def check_selection():
    global selected_object_name
    context = bpy.context
    if context.active_object and context.active_object.select_get():
    current_name = context.active_object.name
    if current_name != selected_object_name:
    selected_object_name = current_name
    if "Cube" in current_name:
    print("ayuda")
    elif selected_object_name:
    selected_object_name = None

    def register_handler():
    unregister_handler()
    bpy.app.handlers.depsgraph_update_post.append(chec k_selection)

    def unregister_handler():
    if check_selection in bpy.app.handlers.depsgraph_update_post:
    bpy.app.handlers.depsgraph_update_post.remove(chec k_selection)

    Para ejecutarlo, primero llama a register_handler(). Esto hará que la función check_selection se ejecute tras cada actualización de la escena. Para detenerlo, llama a unregister_handler().

    Ten en cuenta que usar depsgraph_update_post puede ser intensivo. Una alternativa más eficiente es usar operadores modal o handlers de la ventana gráfica, pero son más complejos. Este método es el más directo para tu propósito.

    Recuerda que en Blender 2.5.4 la API era muy diferente y este código no funcionará. Debes actualizar a una versión estable actual como Blender 3.6 o 4.0 para usar técnicas de scripting modernas y seguras.

Temas similares

  1. Selección solo visibles y seleccion ocultos
    Por JMR en el foro Modelado
    Respuestas: 3
    : 27-08-2023, 11:22
  2. Luz cámara acción
    Por daniel1971 en el foro Trabajos Finalizados
    Respuestas: 16
    : 28-09-2014, 16:54
  3. Novato en acción
    Por Arnau en el foro Quieres presentarte
    Respuestas: 1
    : 26-06-2013, 18:52
  4. Respuestas: 3
    : 06-11-2012, 16:39
  5. Quitar las esquinas de selección de objeto
    Por Siem en el foro Modelado
    Respuestas: 2
    : 01-09-2011, 11:38