$\开始组$

我正在Blender中使用创建一个插件bpy公司它是一个带有几个按钮和输入字段的侧面板。为了加快开发速度,我希望插件自动清除原始场景(默认立方体),打开其侧面板,并在启动时按下按钮。我所说的“开始”是指调试VS代码。我想这意味着在注册或安装插件之后?这可行吗?

我尝试注册操作符类和各种处理程序,但结果总是要么根本不执行,要么导致操作系统.py:

出现异常:AttributeError“_RestrictContext”对象没有属性“view_layer”

你有一个小例子吗?

$\端组$

1答案1

重置为默认值
2
$\开始组$

加载项首先是在一个限制的上下文中加载的,其中不存在view_layer,这就是为什么会抛出该错误的原因。相反,您可以在打开应用程序加载使用注册的回调bpy.app.handlers.load_post公司 应用程序处理程序这样地:

导入bpy从bpy.app.handlers导入持久def delete_all()->无:场景=bpy.context.scene对于scene.objects[:]中的obj:对于obj.users_collection中的集合:集合.对象.取消链接(obj)bpy.data.objects.remove(obj)bpy.ops.outliner.ornins_purge(do_local_ids=True,do_linked_ids=True,do_recursive=True)@持久的应用程序加载定义(a,b):打印(“应用程序加载后处理程序”,a,b)delete_all()def寄存器()->无:bpy.app.handlers.load_post.append(应用程序加载)def unregister()->无:bpy.app.handles.load_post.clear()

在本例中,当您打开Blender或使用VSCode运行调试时,场景中的所有对象都会被删除和清除。

$\端组$
1
  • $\开始组$ 这很有效。谢谢!我现在可以在启动后自动执行。如何从代码中打开侧面板? $\端组$ 评论 昨天

你必须登录来回答这个问题。

不是你想要的答案吗?浏览标记的其他问题.