4

私はこのチュートリアルを見つけて、ツールシェルフで独自のパネルを作成しようと続けてきましたが、明白な理由がないため、私のものは機能しません。

私はBlender2.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は何かがおかしいのかどうか私にまったくわからないので、どんな助けでもありがたいです。

4

3 に答える 3

2

クラスを登録する必要があります。これをスクリプトの最後に追加します

bpy.utils.register_class(customToolshelfPanel)

また、blenderを閉じた後にスクリプトが確実に削除されるようにするには、スクリプトの登録も解除する必要があります。

bpy.utils.unregister_class(customToolshelfPanel)

スクリプトの実行後にインターフェイスを更新するには、Tを数回押すこともできます。

于 2012-07-15T05:19:03.073 に答える
0

私はまだ(悲しいことに)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)

クラスの作成は1つのことですが、UIにも登録する必要があります。

于 2012-07-15T05:19:03.497 に答える
0

クラスを定義しましたが、インスタンス化したことはありません。スクリプトで何かを実行したい場合は、そのクラスで何かを実行する必要があります。しかし、それがどうなるかは明らかではありません。あなたのクラスが実際に何かをしているようには見えません。より大きなインターフェースに追加されるのは、ある種の「パネル」のようです。

ドキュメントを調べて、実行しようとしていることの例を見つける必要があります。おそらく、単一のパネル以上のものを作成する必要があります。

于 2012-07-15T05:19:11.187 に答える