用于创建工具架面板的 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 脚本没有给出任何结果的主要内容,如果未能解决你的问题,请参考以下文章

Blender程序化建模简明教程PCG

Blender程序化建模简明教程PCG

在 Blender 脚本中测量路径长度?

Blender 镜像修改器不导出镜像的一半

在 Blender 中添加后如何编辑网格属性

搅拌机导入/导出脚本