Para la documentación de la API de las funciones enumeradas anteriormente, consulte:
- bpy.types.KeyMaps.new,
- bpy.types.KeyMap,
- bpy.types.KeyMapItems.new,
- bpy.types.KeyMapItem.
Llevar todo junto
bl_info = {
"name" : "Cursor de arrays" ,
"categoría" : "Objeto" ,
}
import bpy
clase ObjectCursorArray ( bpy . tipos . Operador ):
"" "Cursor objeto Array" ""
bl_idname = "" object.cursor_array
bl_label = "cursor matriz"
bl_options = { 'REGISTER' , 'Deshacer' }
total de = bpy . apoyos . IntProperty ( nombre = "pasos" , por defecto = 2 , min = 1 , max = 100 )
def ejecutar ( auto , contexto ):
escena = contexto . escena
del cursor = escena . cursor_location obj = escena . objetos . activo
para i en gama ( auto . total de ):
obj_new = obj . copia ()
escena . objetos . enlace ( obj_new )
factor de = i / auto . total de
obj_new . ubicación = ( obj . ubicación * factor de ) + ( cursor * ( 1,0 - factor de ))
volver { 'terminado' }
def menu_func ( auto , contexto ):
sí . diseño . operador ( ObjectCursorArray . bl_idname )
# Tienda de mapas de teclas aquí para acceder después de registro
addon_keymaps = []
def registro ():
bpy . utils . register_class ( ObjectCursorArray )
bpy . tipos . VIEW3D_MT_object . append ( menu_func )
# Manejar el mapa de teclado
wm = bpy . contexto . window_manager
# Tenga en cuenta que en modo de fondo (sin interfaz gráfica de usuario está disponible), keyconfigs no están disponibles o bien,
# así que tiene que comprobar esto para evitar errores desagradables en caso de fondo.
kc = wm . keyconfigs . complemento
si KC :
km = wm . keyconfigs . complemento . mapas de teclas . nueva ( nombre = 'Object Mode' , space_type = 'vacío' )
kmi = km . keymap_items . nueva ( ObjectCursorArray . bl_idname , 'espacio' , 'Pulse' , ctrl = Verdadero , cambiar = Verdadero )
kmi . propiedades . totales = 4
addon_keymaps . append (( km , KMI ))
def anular el registro ():
# Nota: cuando la anulación del registro, por lo general es una buena práctica para hacerlo en orden inverso al que se registró.
# Puede evitar problemas extraños como mapa de teclado sigue refiriéndose a los operadores ya no registrada ...
# manejar el mapa de teclas
de km , kmi en addon_keymaps :
km . keymap_items . eliminar ( KMI )
addon_keymaps . claro ()
bpy . utils . unregister_class ( ObjectCursorArray )
bpy . tipos . VIEW3D_MT_object . eliminar ( menu_func )
Si __name__ == "__main__" :
registrar ()
Ejecutar la secuencia de comandos (o guardarlo y añadirlo a través de las preferencias como antes) y aparecerá en el menú.
Después de seleccionar en el menú, puede elegir cuántas instancias del cubo que desea crear.
Nota
Directamente a ejecutar el guión varias veces agregará el menú cada vez demasiado. Mientras que el comportamiento no es útil, no hay nada de qué preocuparse ya que los complementos no se registren varias veces cuando se activa a través de las preferencias del usuario.conclusiones
Los complementos pueden encapsular cierta funcionalidad perfectamente para disfrutar de herramientas para mejorar el flujo de trabajo para escribir o para escribir los servicios públicos para uso de otros.
Si bien hay límites a lo que puede hacer dentro de Python Blender, sin duda hay mucho que se puede lograr sin tener que sumergirse en C de Blender / C ++ código.
El ejemplo dado en el tutorial es limitada, pero muestra la API Blender utilizado para tareas comunes que se pueden expandir a escribir sus propias herramientas.
Otras lecturas
Blender viene con las plantillas comentado que son accesibles desde la cabecera del editor de texto, si usted tiene áreas específicas que desea ver el código de ejemplo, este es un buen lugar para comenzar.
Aquí hay algunos sitios que le gustaría ver cómo después de completar este tutorial.
Blender / Python generales del API - Para más detalles de fondo sobre la integración del mezclador / Python.
Cómo Pensar como un Informático - Gran información para aquellos que todavía están aprendiendo Python.
Desarrollo de Blender (Wiki) - Desarrollo de Blender, información general y enlaces útiles.
Los artistas de Blender (sección de codificación) - foro donde las personas hacen preguntas de desarrollo de Python