在F3操作员搜索中找不到自定义的Blender操作员(Blender 2.9)

15

我正在学习这个教程:
https://docs.blender.org/manual/en/latest/advanced/scripting/addon_tutorial.html

我从教程中复制了下面的脚本,并且在运行时它能够编译成功,但是我无法在操作搜索菜单(F3)中搜索到“Move X by One”来执行该操作,如何让该操作显示在搜索菜单中?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()

当我在Blender 2.82中运行它时,它能正常工作。 - mazore
2
我遇到了相同的问题,我测试了2.90和2.91,但没有显示。 - intijk
尝试了2.83.6 LTS,可以工作。 - intijk
4个回答

13

您需要在偏好设置 -> 界面下启用复选框开发人员扩展,然后可能需要重新加载插件。您可能已经在以前弄清楚了这一点,但在升级时丢失了设置。


1
另一种可能是,如果在您首次启用“开发人员选项”期间,Blender 崩溃,则会发生这种情况。在最终崩溃的会话中设置的任何首选项都将被重置。 - smheidrich

11

Blender 2.90.1

其他用户指出,API已经更新。您可以在此查看发布说明:
Blender 2.90: Python API ,其中写到:

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

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

添加menu_func函数:

def menu_func(self, context):
    self.layout.operator(ObjectMoveX.bl_idname)

并更新register函数:

def register():
    bpy.utils.register_class(ObjectMoveX)
    bpy.types.VIEW3D_MT_object.append(menu_func)

现在您可以通过操作符搜索(F3)或通过菜单访问您的操作符,例如Object> YourOperatorName。
如果您不希望这些通过菜单访问,发行说明还提到:
对于那些主要面向开发人员的更为晦涩的运算符,我们建议将它们添加到TOPBAR_MT_app_system菜单中。这可以通过顶部栏中Blender图标下的System菜单访问。

2
谢谢,我花了很多时间试图弄清楚为什么它不起作用。他们应该更新他们的文档... - ElLocoCocoLoco
@ElLocoCocoLoco 没错。如果像这样的内容在发布日志中得到宣布,他们更新他们的教程肯定是有意义的。 - gmdev
2
只需启用开发人员选项(用户首选项>界面)。无需将运算符添加到菜单中。 - p2or

3
Sybren在这篇文章中承认了这一点。 在我的情况下,解决方案是复制这个示例。以下是它的工作原理:
  1. 在调用register_class()后添加此内容:bpy.types.TOPBAR_MT_app_system.append(menu_func)
  2. 添加menu_func(self, context)和以下内容: self.layout.operator( 你的register_class参数 .bl_idname)

0

我之前也遇到了2.90.0的同样问题,但是当我升级到2.90.1后,它完美地解决了。 我用你提供的代码进行了测试。所以我建议你尝试一下2.90.1。 对我来说,它在系统更新时默默地更新了。如果你想手动更新,可以在这里下载: https://download.blender.org/release/Blender2.90/

(由于我没有足够的Stack Overflow积分,所以无法发表评论)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接