用于创建工具架面板的 Blender 脚本没有给出任何结果
Posted
技术标签:
【中文标题】用于创建工具架面板的 Blender 脚本没有给出任何结果【英文标题】:Blender script to create a Toolshelf Panel gives no results whatsoever 【发布时间】:2012-07-14 10:22:33 【问题描述】:我找到了this 教程,并一直在尝试在工具架中创建我自己的面板,但我的无法正常工作,原因不明。
我使用的是 Blender 2.63,我还在 Blender 2.58 和 2.56 中尝试了完全相同的脚本,两者的结果完全相同。什么都没有。
我读过这个脚本的次数已经数不胜数了,我没有看到任何拼写错误或不正确的单词,但它仍然没有任何作用。更糟糕的是我没有收到任何错误消息。
当我在文本编辑器中单击“运行脚本”按钮时,我得到的唯一消息是我已经运行了脚本。在工具架中,它以与添加多维数据集相同的方式显示在底部,只是使用多维数据集,您可以获得一些选项,例如多维数据集的位置/比例等。它还在信息窗口中显示为:
bpy.ops.text.run_script()
这是我的代码的样子:
import bpy
class customToolshelfPanel(bpy.types.Panel):
bl_space_type = "VIEW_3D"
bl_region_type = "TOOLS"
bl_context = "objectmode"
bl_label = "Custom Toolshelf Panel"
def draw(self, context):
layout = self.layout
col = layout.column(align=True)
col.label(text="Add:")
col.operator("mesh.primitive_plane_add", icon="MESH_PLANE")
col.operator("mesh.primitive_cube_add", icon="MESH_CUBE")
任何帮助都将不胜感激,因为如果出现问题,Blender 根本不知道。
【问题讨论】:
【参考方案1】:你需要注册这个类..把这个添加到脚本的底部
bpy.utils.register_class(customToolshelfPanel)
为了确保在搅拌机关闭后脚本被删除,您还需要注销它
bpy.utils.unregister_class(customToolshelfPanel)
您可能还想在运行脚本后按几次 T 来更新界面。
【讨论】:
也谢谢!快速提问,当我添加 unregister_class 行时,面板没有出现。在我看来,它应该只在您退出搅拌机时运行。那是对的吗?如果是这样,我如何在用户退出搅拌机之前阻止它运行? 我实际上跳过了一些细节,进入聊天有点深入,你现在可以跳过它,如果你运行脚本并重新打开搅拌机,它可能仍然存在在工具面板中,但现在它完全微不足道,只需注册并玩得开心。 :) 您可以接受任何答案并正式关闭问题。 +1 实际上知道如何使用 Blender API,而不是谷歌搜索文档并注意到示例代码的结构。 好的,感谢所有回答的人!小组目前运行良好!【参考方案2】:我还没有使用过 2.5/2.6 的新 API(很遗憾),但是文档从来没有是一个不好的地方:http://www.blender.org/documentation/blender_python_api_2_57_release/bpy.types.Panel.html
示例代码:
import bpy
class HelloWorldPanel(bpy.types.Panel):
bl_idname = "OBJECT_PT_hello_world"
bl_label = "Hello World"
bl_space_type = 'PROPERTIES'
bl_region_type = 'WINDOW'
bl_context = "object"
def draw(self, context):
self.layout.label(text="Hello World")
bpy.utils.register_class(HelloWorldPanel)
您是否尝试过将此行添加到末尾?
bpy.utils.register_class(customToolshelfPanel)
创建类是一回事,但您还需要在 UI 中注册它。
【讨论】:
【参考方案3】:您定义了一个类,但从未实例化它。如果你想让你的脚本做任何事情,你需要对那个类做一些事情。但是,尚不清楚那会是什么。看起来您的班级并没有真正做任何事情。它似乎是某种“面板”,可以添加到更大的界面中。
您应该查看文档以找到您正在尝试执行的操作的示例。大概您需要创建的不仅仅是一个面板。
【讨论】:
以上是关于用于创建工具架面板的 Blender 脚本没有给出任何结果的主要内容,如果未能解决你的问题,请参考以下文章