Script addon non funzionante
Sono un principiante dello scripting di Blender, ma sto cercando di creare un componente aggiuntivo molto semplice con l'aiuto del tutorial di YT che assomiglia a questo, ma mi dà l'errore che qualcosa non va, anche se non ci sono messaggi di errore nella finestra della console.
Lo script dovrebbe apparire come una voce di menu all'interno di OBJECT -> APPLY, e dovrebbe solo applicare tutti i modificatori attivi in tutti gli oggetti selezionati. lo script del componente aggiuntivo ha questo aspetto:
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()
Qualcuno può, per favore, dirmi cosa c'è che non va nel codice?
Risposte
Non bl_idnameè consentito contenere più di un punto. Il messaggio di errore è:
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
Questo messaggio può essere visualizzato all'avvio di Blender dal terminale su Linux, macOS e Windows. Su Windows puoi anche usare Finestra> Attiva / disattiva console di sistema .
Per risolvere questo problema, scegli un altro bl_idname, ad esempio:
bl_idname = "object.apply_modifiers_in_selected"