无法在 F3 运算符搜索中找到自定义 Blender 运算符 (Blender 2.9)

898*_*hew 11 python blender

我正在完成本教程:https :
//docs.blender.org/manual/en/latest/advanced/scripting/addon_tutorial.html

我从教程中复制了下面的脚本,当我运行脚本时,它编译没有任何错误。我应该能够在操作员搜索菜单 ( F3) 中搜索“按一个移动 X”来执行操作员,但它没有显示在操作员搜索菜单中。如何让操作员显示在搜索菜单中?Blender 2.9 有什么变化吗?

bl_info = {
    "name": "Move X Axis",
    "category": "Object"
}

import bpy

class ObjectMoveX(bpy.types.Operator):
    bl_idname = "object.move_x"
    bl_label = "Move X by One"
    bl_options = {'REGISTER', 'UNDO'}

    def execute(self, context):
        scene = context.scene
        for obj in scene.objects:
            obj.location.x += 1.0

        return {'FINISHED'}

def register():
    bpy.utils.register_class(ObjectMoveX)

def unregister():
    bpy.utils.unregister_class(ObjectMoveX)

if __name__ == "__main__":
    register()
Run Code Online (Sandbox Code Playgroud)

gmd*_*dev 7

搅拌机 2.90.1

正如其他用户所指出的,API 已经更新。您可以在此处查看发行说明:
Blender 2.90:Python API,其中说:

...仅通过搜索公开运算符的附加组件需要更新。

这是由于新增了仅搜索菜单(通过 访问F3)的操作员搜索。因此,您需要将运算符添加到菜单中。

添加menu_func函数:

def menu_func(self, context):
    self.layout.operator(ObjectMoveX.bl_idname)
Run Code Online (Sandbox Code Playgroud)

并更新register函数:

def register():
    bpy.utils.register_class(ObjectMoveX)
    bpy.types.VIEW3D_MT_object.append(menu_func)
Run Code Online (Sandbox Code Playgroud)

您现在可以通过运营商搜索 ( F3) 或通过菜单访问您的运营商,即Object>YourOperatorName

如果您不希望通过这些菜单访问这些内容,发行说明中还会提到:

对于例如主要供开发人员使用的更晦涩的运算符,我们建议将它们添加到 TOPBAR_MT_app_system 菜单中。这可以通过顶部栏中 Blender 图标下的系统菜单访问。

  • 谢谢,我花了很多时间试图找出它不起作用的原因。他们应该更新他们的文档...... (2认同)
  • 只需 **启用开发者附加功能** *(用户首选项 > 界面)*。无需向菜单添加操作员。 (2认同)

Zyl*_*Zyl 5

您必须启用该复选框Developer ExtrasPreferences -> Interface,然后可能重新加载插件。您过去可能已经解决了这个问题,但在升级时丢失了设置。


小智 0

我在 2.90.0 上遇到了同样的问题,但当我升级到 2.90.1 时,它工作得很好。刚刚用您问题中的代码对此进行了测试。所以我建议你尝试2.90.1。对我来说,它是随着我的系统更新而默默更新的。如果您想手动执行,可以在这里下载: https ://download.blender.org/release/Blender2.90/

(我无法写评论,因为我没有足够的堆栈溢出点)