使い方

参考:

Blender の UI を制御する | はじめての Blender アドオン開発

メニューに項目を追加する

参考:

プラグインでサブメニューを作成する方法 – Qiita

Official keymap example does not work? – Blender Developer Talk

How to add a custom object entry to the add menu? – Blender Stack Exchange

Deleting unwanted New objects in the “add Object” menu – Blender Stack Exchange

Operator docstrings displayed on buttons, not in search mode – Blender Stack Exchange

メニューを置き換える

参考:

How to delete an existing menu? – Blender Stack Exchange

ダイアログ/ポップアップを表示する

こちらのページを参照

参考:

Blender の UI を制御する 3 | はじめての Blender アドオン開発

Blender でボタンが押されたときポップアップウインドウを表示する (dskjal) – GitHub Gist

Creating pop-up panels with user UI in Blender add-on | Interplanety

Dialog Box | Blender Python API [Official]

パネルを作成する

サイドバーパネル
class MYTOOL_PT_render(bpy.types.Panel):
    """My Tool"""
    bl_idname      = "MYTOOL_PT_render"
    bl_label       = "Render"
    bl_space_type  = 'VIEW_3D'
    bl_region_type = 'UI'
    bl_category    = "My Tool"

    def draw(self, context):
        layout = self.layout
        scene = context.scene

        layout.label(text="Size:")
        row = layout.row(align=True)
        row.prop(scene, "resolution_x")
        row.prop(scene, "resolution_y")

        layout.label(text="Are You Ready?:")
        row = layout.row()
        row.scale_y = 1.5
        row.operator("render.render")

def register():
    bpy.utils.register_class(MYTOOL_PT_render)

def unregister():
    bpy.utils.unregister_class(MYTOOL_PT_render)

if __name__ == "__main__":
    register()

参考:

Blender 2.8 の Python 実行で UI パネルを追加する | MR が楽しい

Blender 2.8 で UI パネルに自作のプロパティを追加する | MR が楽しい

Panel 編 | めもてう

bpy.types.Panel | Blender Python API [Official]

templates_py/ui_tool_simple.py – blender/blender – GitHub

templates_py/ui_panel.py – blender/blender – GitHub

How to change the location of an addon in the UI – Blender Stack Exchange

列/行を作成する (row / column)

参考:

User interface elements alignment by columns | Interplanety

User Interface Layout – Best Practice | Blender Python API [Official]

How do I use multiple columns in my add-on UI? – Blender Stack Exchange

グリッドフロー (grid_flow / column_flow)

参考:

bpy.types.UILayout.grid_flow | Blender Python API [Official]

bpy.types.UILayout.column_flow | Blender Python API [Official]

Column Align – Blender Stack Exchange

split

参考:

bpy.types.UILayout.split | Blender Python API [Official]

keeping a UIlayout box a specific width percentage – Blender Artists Community

プロパティ欄を作成する (prop)

参考:

bpy.types.UILayout.prop | Blender Python API [Official]

オブジェクトを選択する

スポイトアイコン付きのオブジェクト選択欄を作成する。

参考:

オブジェクト指定のアドオンスクリプト | MR が楽しい

Object selection box with eyedropper – Blender Stack Exchange

Make the eyedropper tool available in add-ons via Python | Right-Click Select (Blender.Community)

GUI を作成する

参考:

Addon のチェックボックスの追加とプロパティへのアクセス | ぬの部屋 (仮)

Code snippets/Interface | wiki.blender.jp

アイコンを表示する

使用できるアイコンを確認する → Icon Viewer

参考:

UILayout.prop | Blender Python API [Official]

UILayout.label | Blender Python API [Official]

New icons for Blender 2.8x – Blender Developer Talk [Official]

2.8 Outlined/Coloured Icon Adaptation – Blender Developer Talk [Official]

Colored icons in add-on – Blender Developer Talk [Official]

New icons for Blender 2.8 – Blender Artists Community

2.8 Outlined/Coloured Icon Adaptation – Blender Artists Community

Is there a list or something available which shows the code of the Symbols of Blender – Blender Stack Exchange

How to edit 2.8 UI icons? – Blender Stack Exchange

項目に色を付ける (alert)

参考:

In Python is it possible to change the background color of a property ui? – Blender Stack Exchange

パイメニューを作成する

参考:

Permanently expanded submenu in pie menu – Blender Artists Community

How to properly overwrite Blender default keys with Pie Menu hotkeys – Blender Stack Exchange

Mesh / Object Mode with Pie menu? – Blender Stack Exchange

Make a Pie-Specials Menu, dependent on selection type – Blender Stack Exchange

shift in my hotkeys toggles multiselection mode between vertex edge and faces, how to toggle off previous mode? – Blender Stack Exchange

パネルを条件に応じて表示する (poll)

条件を判定してパネルの表示・非表示を切り替えるにはクラスメソッド poll を定義する。

    @classmethod
    def poll(cls, context):
        return context.object is not None

参考:

Blender で選択されているオブジェクトがメッシュで名前が Cube の時だけ UI を表示する (dskjal) – GitHub Gist

Simple Object Panel | Blender Python API [Official]

パネルを一時的に無効化する

enabled プロパティに False を指定する。

class MYTOOL_PT_test(bpy.types.Panel)
    # ...
    def draw(self, context)
        layout = self.layout
        col = layout.column()
        col.enabled = False
        col.prop(scene, ...)

参考:

UILayout.enabled | Blender Python API [Official]

How to disable a single component in a custom panel? – Blender Artists Community

How to do i disable a row.operator in my custom panel by detecting if there is a specific modifier type and name is present or not? – Blender Stack Exchange

モジュールの読み込み順/パネルの順序

参考:

How to know the order in which scripts are loaded? – Blender Artists Community

How I can define the order of the panels? – Blender Stack Exchange

パネルを動的に登録する

参考:

Change Blender’s Preferences Dynamically – Blender Stack Exchange

サイドバータブ

参考:

Human Interface Guidelines/Sidebar Tabs | Blender Developer Wiki [Official]

Trouble with Vertical Toolbar Tabs! Any idea or script to fix this mess? – Blender Artists Community

Remove addons from tabs in 3d window – Blender Stack Exchange

N Panel Tab Clutter – Right-Click Select (Blender.Community)

Right Toolbar needs improvment in 2.8 – Right-Click Select (Blender.Community)

More options for reordering Workspaces and Sidebar tabs – Right-Click Select (Blender.Community)

The Toolbar/Sidebar Interface Issue – Blender Developer Talk [Official]

sidebar custom colors for tabs – Blender Stack Exchange

スペシャルメニューに項目を追加する

参考:

スペシャルメニューに任意のメニューを追加するアドオンを作る方法 | 気まぐれブロマガ

パネル (Panel)

bl_region_type表示形態を指定する

  • WINDOW
  • HEADER
  • CHANNELS
  • TEMPORARY
  • UI
  • TOOLS
  • TOOL_PROPS
  • PREVIEW
  • HUD
  • NAVIGATION_BAR
  • EXECUTE
  • FOOTER
  • TOOL_HEADER

bl_space_type表示するエディター/場所を指定する

  • VIEW_3D
  • IMAGE_EDITOR
  • NODE_EDITOR
  • SEQUENCE_EDITOR
  • CLIP_EDITOR
  • DOPESHEET_EDITOR
  • GRAPH_EDITOR
  • NLA_EDITOR
  • TEXT_EDITOR
  • CONSOLE
  • INFO
  • TOPBAR
  • STATUSBAR
  • OUTLINER
  • PROPERTIES
  • FILE_BROWSER
  • SPREADSHEET
  • PREFERENCES

参考:

Creating panels for placing Blender add-ons user interface (UI) | Interplanety

Panel (bpy.types.Panel) | Blender Python API [Official]

How to change the location of an addon in the UI – Blender Stack Exchange

イベント (Event)

参考:

スクリプトでマウスやキーボードのイベントを扱う方法 – Qiita

Event (bpy.types.Event) | Blender Python API [Official]

prop_search

参考:

prop_search の使い方 | blender-script メモ

Object selection box in addon – Blender Stack Exchange

Limit “prop_search” to Specific Types of Objects – Blender Stack Exchange

Search custom properties in objects on the scene – Blender Stack Exchange

メッセージを出力する (report)

参考:

Blender 2.8 で UI パネルの処理にエラーメッセージの表示を追加する | MR が楽しい

bpy.types.Operator.report | Blender Python API [Official]

Is it possible to print to the Report window in the Info view? – Blender Stack Exchange

How to script add-on info and warnings? – Blender Stack Exchange

プログレスバー

参考:

How to show to the user a progression in a script? – Blender Stack Exchange

UILayout

こちらのページを参照

参考:

UILayout | Blender Python API [Official]

UIList

参考:

UIList | Blender Python API [Official]

まとめ

参考:

アドオンのメニューを追加する・既存メニューを完全に置き換える・他アドオンのメニューも保持する | 忘却まとめ

メニューの作り方・様々なレイアウト要素の紹介 | 忘却まとめ

Icon Viewer

テキストエディター

サイドバーで「Dev」タブを開いて、「Icon Viewer」パネルでアイコン一覧を確認する。

Python コンソール

ヘッダーの「Icon Viewer」ボタンを押して、ダイアログでアイコン一覧を確認する。

参考:

Icon Viewer | Blender Manual [Official]

Blender 2.8 で Icon Viewer を使ってアイコンの ID を確認する | MR が楽しい

Icon Viewer – 標準装備アイコンの名前を確認できる | CGrad Project

Layout Practice

学習用サンプル

参考:

Layout Practice – UI Layoutを学習するアドオン | Gumroad

UI Layout を学習するアドオン (Bookyakuno) | BOOTH

メニューの作り方・様々なレイアウト要素の紹介 | 忘却まとめ

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です