La secuencia de comandos del complemento no funciona
Soy un novato en las secuencias de comandos de Blender, pero estoy tratando de hacer un complemento muy simple con la ayuda del tutorial de YT que se ve así, pero me está dando el error de que algo está mal, aunque no hay un mensaje de error en la ventana de la consola.
La secuencia de comandos debe aparecer como un elemento de menú dentro de OBJETO -> APLICAR, y solo debe aplicar todos los modificadores activos en todos los objetos seleccionados. el script del Addon se ve así:
bl_info = {
"name": "Apply Modifiers In Selected",
"author": "Anonymous",
"version": (1, 0),
"blender": (2, 90, 1),
"location": "View3D > Object > Apply > Modifiers In Selected",
"description": "Applies all the modifier in selected objects",
"warning": "",
"doc_url": "",
"category": "Object Apply",
}
import bpy
from bpy.types import (
AddonPreferences,
Operator,
Panel,
PropertyGroup,
)
class OBJECT_OT_applymodifiersinselected(Operator):
bl_label = "Apply Modifiers In Selected"
bl_idname = "object.apply.modifiersinselected"
bl_description = "Applies all the modifier in selected objects"
bl_space_type = "VIEW_3D"
bl_region_type = "UI"
bl_options = {'REGISTER', 'UNDO'}
def execute (self, context):
for ob in bpy.context.selected_objects:
bpy.context.view_layer.objects.active = ob
for name in [m.name for m in ob.modifiers]:
modifier = ob.modifiers[name]
if modifier.show_viewport:
bpy.ops.object.modifier_apply( modifier = name )
return {'FINISHED'}
def menu_func (self, context):
self.layout.operator(OBJECT_OT_applymodifiersinselected.bl_idname)
def register():
bpy.utils.register_class(OBJECT_OT_applymodifiersinselected)
bpy.types.VIEW3D_MT_object_apply.append(menu_func)
def unregister():
bpy.utils.unregister_class(OBJECT_OT_applymodifiersinselected)
bpy.types.VIEW3D_MT_object_apply.remove(menu_func)
if __name__ == "__main__":
register()
¿Alguien puede, por favor, decirme qué está mal con el código?
Respuestas
No bl_idnamese permite que contenga más de un punto. El mensaje de error es:
Traceback (most recent call last):
File "\Text", line 52, in <module>
File "\Text", line 44, in register
RuntimeError: Error: Registering operator class: 'OBJECT_OT_applymodifiersinselected', invalid bl_idname 'object.apply.modifiersinselected', must contain 1 '.' character
Este mensaje se puede ver al iniciar Blender desde el terminal en Linux, macOS y Windows. En Windows, también puede usar Ventana> Alternar consola del sistema .
Para solucionar este problema, elija una opción diferente bl_idname, por ejemplo:
bl_idname = "object.apply_modifiers_in_selected"