blender 2.79 addon bulk rename

import bpy
from bpy.props import *
import numpy as np
bl_info = {
"name": "renameBulk",
"author": "luis alberto rodriguez montilla",
"version": (0),
"blender": (2, 72, 2),
"location": "VIEW_3D > TOOLS > Tools",
"warning": "first select the objects",
"description": "bulk rename",
"wiki_url": ""
"",
"category": "Mesh",
}
def initSceneProperties():
#para crear un string
bpy.types.Scene.brStr = StringProperty(
name = "new name")
return
#blender tiene dos principales funciones, panel que dibuja
#y operador que ejecuta; puede haber mas de un operador
class BulkRenameUIPanel(bpy.types.Panel):
bl_label = "change Names"
bl_space_type = "VIEW_3D"
bl_region_type = "TOOLS"
bl_category = "Tools"
def draw(self, context):
layout = self.layout
scn = context.scene
layout.prop(scn, "brStr")
#operator de be estar todo en minusculas y llevar un punto
layout.operator("bulk.rename_all_objects")
class defStrBulkRename(bpy.types.Operator):
def defineVar_(self, context):
scn = context.scene
brStr = scn["brStr"]
return brStr
#los nombres de funciones deberan ser diferentes de otros noambres en addons
#de lo contrario sobreescribira los valores de las funciones anteriores
class OBJECT_OT_bukRename(bpy.types.Operator):
bl_idname = "bulk.rename_all_objects"
bl_label = "change bulk name"
def execute(self, context):
for i, obj in enumerate(bpy.context.selected_objects, 1):
bpy.context.scene.objects.active = obj
#aquie el (self,context) es necesario para valores entre clases
obj.name = defStrBulkRename.defineVar_(self,context)+ str(i)
return{'FINISHED'}
#dejar por defecto este tipo de registro, es funcional y funciona siempre
#que no se nesecite mas datos; si no se registra no aparecera nada
def register():
bpy.utils.register_module(__name__)#register others class
initSceneProperties()
def unregister():
bpy.utils.unregister_module(__name__)#unregister others class
if __name__ == "__main__":
register()