无法在 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)的主要内容,如果未能解决你的问题,请参考以下文章