Resultados 1 al 2 de 2

Custom properties

  1. #1
    Fecha de ingreso
    Sep 2008
    Mensajes
    186

    Custom properties

    Hola buenas. ¿Alguien sabe si puedo usar un custom property para mover un cubo, por ejemplo, sin uso de drivers? Mediante script?
    Sería algo como esto, pero en el panel properties:
    import Bpy.

    Class addgem(Bpy, types. Operator):
    Bl_idname = Mesh, primitivegemadd.

    Bl_label = addgem.

    Bl_description = create an offset Faceted gem.

    Bl_options = {register, undo}.

    Segments = Bpy, props. Floatproperty(name=segments.

    Description=longitudial segmentation.

    Min=0.0.

    Max=1.0.

    Default=0..

    Def execute (self, context):
    Bpy, data, objects[Cube].location.x = self, segments.

    Return {finished}.

    Bpy, utils, register_class(addgem).

    Run script- En 3dview, space - Addgem y en la parte izquierda del 3dview crea un slider que mueve el cubo.

    Se podría hacer esto en el panel properties? Gracias.
    Última edición por rulflink; 04-05-2011 a las 18:29
    si quieres ver algo mas...... www.rulflinks.blogspot.com

  2. #2
    Fecha de ingreso
    Dec 2025
    Mensajes
    0
    Sí, puedes crear custom properties en el panel Properties para controlar objetos sin drivers, usando Python. La forma actual y recomendada es crear una propiedad personalizada en un objeto, escena o colección, y luego usar un panel (UI Panel) en el área de Properties para mostrar un control que la modifique. Para que el cambio en la propiedad actualice la ubicación del cubo en tiempo real, necesitas un manejador de actualización (update handler).

    Aquí tienes un ejemplo completo que hace lo que describes. Este script registra una propiedad personalizada en los objetos de tipo malla y un panel en la pestaña Object del panel Properties. Al cambiar el valor con el deslizador, el cubo se moverá en el eje X.

    Primero, define la propiedad personalizada. Esto se hace típicamente en el objeto bpy.types.Scene o bpy.types.Object para que sea accesible. Luego, crea un panel para mostrarla. Finalmente, escribe una función que se ejecute cada vez que la propiedad cambie (update) para aplicar el movimiento.

    El código actualizado para versiones recientes de Blender sería similar a este:

    import bpy

    def update_location(self, context):
    obj = context.object
    if obj and obj.type == 'MESH' and obj.get("mi_desplazamiento_x") is not None:
    obj.location.x = obj.mi_desplazamiento_x

    bpy.types.Object.mi_desplazamiento_x = bpy.props.FloatProperty(
    name="Desplazamiento X",
    description="Mueve el objeto en el eje X",
    default=0.0,
    update=update_location
    )

    class MIPANEL_PT_panel_propiedades(bpy.types.Panel):
    bl_label = "Mi Panel de Control"
    bl_idname = "MIPANEL_PT_panel_propiedades"
    bl_space_type = 'PROPERTIES'
    bl_region_type = 'WINDOW'
    bl_context = "object"

    def draw(self, context):
    layout = self.layout
    obj = context.object
    if obj and obj.type == 'MESH':
    layout.prop(obj, "mi_desplazamiento_x")
    else:
    layout.label(text="Selecciona un objeto de malla")

    def register():
    bpy.utils.register_class(MIPANEL_PT_panel_propieda des)

    def unregister():
    bpy.utils.unregister_class(MIPANEL_PT_panel_propie dades)

    if __name__ == "__main__":
    register()

    Para usar este script, ejecútalo en el Editor de Textos de Blender. Luego, selecciona tu cubo (que debe ser un objeto de malla). Ve a la ventana de Properties, a la pestaña Object (el icono de cubo). Allí verás un nuevo panel llamado Mi Panel de Control con un control deslizante Desplazamiento X. Al moverlo, el cubo cambiará su posición en X.

    La clave está en el parámetro update de la propiedad FloatProperty. Allí se especifica la función update_location que se llama automáticamente cada vez que el valor de la propiedad cambia, moviendo el objeto. Esto evita por completo el uso de drivers.

    Recuerda que si quieres que esta propiedad esté disponible siempre, deberías guardar el script como un addon e instalarlo. Si solo es para una sesión, ejecutarlo en el editor de textos es suficiente.

Temas similares

  1. Respuestas: 1
    : 29-12-2025, 03:50
  2. Por que no me deja utilizar el Color Management en Output Properties?
    Por Max_Gal en el foro Programas de Diseño 3D y CAD
    Respuestas: 2
    : 24-09-2023, 14:20
  3. No aparece stars en world properties
    Por rgisbert en el foro Render, Iluminación y Cámaras
    Respuestas: 6
    : 07-02-2018, 17:35
  4. V-Ray Vray properties
    Por liberado en el foro Programas de Diseño 3D y CAD
    Respuestas: 18
    : 17-06-2005, 08:32
  5. XSI: para que es el override object properties
    Por Leander en el foro Modelado
    Respuestas: 6
    : 16-02-2005, 23:19