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

Posted

技术标签:

【中文标题】无法在 F3 运算符搜索中找到自定义 Blender 运算符(Blender 2.9)【英文标题】:Unable to find custom Blender operator in F3 operator search (Blender 2.9) 【发布时间】:2020-12-30 23:06:44 【问题描述】:

我正在学习本教程: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()

【问题讨论】:

当我在搅拌机 2.82 中运行它时,它工作正常 我遇到了同样的问题,我测试了 2.90 和 2.91,没有显示 试过 2.83.6 lts ,有效 【参考方案1】:

搅拌机 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 图标下的系统菜单访问。

【讨论】:

谢谢,我花了很多时间试图弄清楚为什么它不起作用。他们应该更新他们的文档...... @ElLocoCocoLoco 你是对的。如果在发布日志中宣布了这样的内容,那么他​​们更新他们的教程肯定是有意义的。 只需启用 Developer Extras (用户首选项 > 界面)。无需向菜单添加运算符。【参考方案2】:

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

【讨论】:

另一种可能发生的情况是,如果 Blender 在您首次启用 Developer Extras 的会话过程中崩溃。在最终崩溃的会话中设置的任何首选项都将被重置。【参考方案3】:

Sybren 在this post 中承认了这一点。 我的解决方案是复制this example。它是如何工作的:

    在调用 register_class() 后添加:bpy.types.TOPBAR_MT_app_system.append(menu_func) 添加menu_func(self, context)self.layout.operator( 您对 register_class 的参数 .bl_idname)

【讨论】:

【参考方案4】:

我在使用 2.90.0 时遇到了同样的问题,但是当我升级到 2.90.1 时,它可以完美运行。 刚刚使用您问题中的代码对此进行了测试。所以我建议你尝试2.90.1。 对我来说,它是通过我的系统更新静默更新的。如果您想手动操作,可以在这里下载: https://download.blender.org/release/Blender2.90/

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

【讨论】:

以上是关于无法在 F3 运算符搜索中找到自定义 Blender 运算符(Blender 2.9)的主要内容,如果未能解决你的问题,请参考以下文章

未捕获的类型错误:无法使用“in”运算符在未定义中搜索“scrollLeft”

即使定义了搜索路径,也无法找到自定义共享库

eclipse中F3快捷键无法跳转到定义的解决方法

解析Google自定义搜索API Swift

无法使用“in”运算符在未定义中搜索“X”

TypeError:无法使用“in”运算符在未定义中搜索“$__firebase”