Le script complémentaire ne fonctionne pas
Je suis novice dans les scripts Blender, mais j'essaie de créer un addon très simple à l'aide du didacticiel YT qui ressemble à ceci, mais cela me donne l'erreur que quelque chose ne va pas, bien qu'il n'y ait pas de message d'erreur dans la fenêtre de la console.
Le script doit apparaître comme un élément de menu dans OBJECT -> APPLY, et doit simplement appliquer tous les modificateurs actifs dans tous les objets sélectionnés. le script de l'Addon ressemble à ceci:
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()
Quelqu'un peut-il, s'il vous plaît, me dire ce qui ne va pas avec le code?
Réponses
Le bl_idnamen'est pas autorisé à contenir plus d'un point. Le message d'erreur est:
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
Ce message peut être vu lors du démarrage de Blender à partir du terminal sous Linux, macOS et Windows. Sous Windows, vous pouvez également utiliser Fenêtre> Basculer la console système .
Pour résoudre ce problème, choisissez un autre bl_idname, par exemple:
bl_idname = "object.apply_modifiers_in_selected"