使い方

コード:

blender-basic-ui-example-28x.py (p2or) – GitHub Gist

参考:

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

How to create a custom UI? – Blender Stack Exchange

メニューを作成する

参考:

Menu | Blender Python API [Official]

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

サブメニューを追加する。

class EXAMPLE_MT_menu(bpy.types.Menu): bl_label = "Example" bl_description = "Example Menu" def draw(self, context): layout = self.layout layout.operator('transform.resize') def menu_func(self, context): layout = self.laytout layout.separator() layout.menu('EXAMPLE_MT_menu') def register(): bpy.utils.register_class(EXAMPLE_MT_menu) bpy.types.VIEW3D_MT_object.append(menu_func) def def unregister(): bpy.utils.unregister_class(EXAMPLE_MT_menu) bpy.types.VIEW3D_MT_object.remove(menu_func)
Code language: Python (python)

参考:

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

UI に項目を追加 | TomoG のごちゃまぜ倉庫

サブメニューを作成する | はじめての Blender アドオン開発

メニューの追加登録候補について | nikogoli

Official keymap example does not work? – Blender Developer Talk

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

How to add a custom menu item to the object 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]

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

参考:

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

vertical align of mixed panel? – 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

Creating a row of boolean properties (with icons) aligned in a UI panel – Blender Stack Exchange

スプリット (split)

参考:

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

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

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

How to control spacing/alignment of Label + Horizontal Enum Property? – Blender Stack Exchange

how to create UIList with auto-aligned three columns? – Blender Stack Exchange

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

必須
  • data
  • property
任意
  • text
  • text_ctxt
  • translate
  • icon
  • expand
  • slider
  • toggle
  • icon_only
  • event
  • full_event
  • emboss
  • index
  • icon_value
  • invert_checkbox
こちらのページを参照

参考:

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

ドロップダウンリストを作成する

参考:

create drop-down list in menu panel – Blender Stack Exchange

GUI を作成する

参考:

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

Interface – Code Snippets | wiki.blender.jp

アイコンを表示する

参考:

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

Changing the name / icon / function of menu / pie menu / panel with a condition? – Blender Stack Exchange

Is there a way to get icon_value for the UIList using icon name from enum? – Blender Stack Exchange

material icon_value for UIList – Blender Stack Exchange

項目に色を付ける (alert)

参考:

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

項目の順序

  • append最後に追加する
  • prepend最初に追加する

コード:

append – bpy_types.py at 2e06c223cc – GitHub

prepend – bpy_types.py at 2e06c223cc – GitHub

_GenericUI – bpy_types.py at 2e06c223cc – GitHub

参考:

Rearranging elements of a panel – Blender Stack Exchange

How to change the order of a custom function added in the dropdown menu in the header region in 2.81 with python – Blender Stack Exchange

メニューからパイメニューを開く

オブジェクトコンテキストメニューからスナップパイメニューを開く。

import bpy def custom_memu(self, context): layout = self.layout op = layout.operator("wm.call_menu_pie", text="Snap") op.name = "VIEW3D_MT_snap_pie" layout.separator() def register(): bpy.types.VIEW3D_MT_object_context_menu.prepend(custom_menu) def unregister(): bpy.types.VIEW3D_MT_object_context_menu.remove(custom_menu) if __name__ == '__main__': register()
Code language: Python (python)

参考:

pie menu inside pie menu – Blender Stack Exchange

プロパティを読み取り専用にする

参考:

How can I display a FloatVector without it being editable by the user? – Blender Stack Exchange

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

参考:

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

Blender 2.8: Where is the Specials Menu? | Blender 3D Architect

ポップオーバー (popover)

参考:

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

イベント (Event)

参考:

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

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

What are the parameters event and full_event of UILayout are for? – Blender Stack Exchange

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

What UI would work for choosing from a long, long list? – Blender Stack Exchange

How to make my prop search show the objects in my 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

ヘッダー

参考:

How to Check the List of Operators Added to the Area Header | Interplanety

Timeline header python modification – Blender Stack Exchange

Add custom menu at specific location in the header – Blender Stack Exchange

プレビュー選択欄を作成する

参考:

script custom previews in a menu – Blender Stack Exchange

マテリアル選択欄を作成する

コード:

Material-UIList Demo for Blender 2.8+ – GitHub Gist

参考:

Create an interface which is similar to the material list box – Blender Stack Exchange

デバッグする

参考:

get operator command from context menu? – Blender Stack Exchange

UILayout

こちらのページを参照

参考:

UILayout | Blender Python API [Official]

UIList

参考:

UIList | Blender Python API [Official]

サンプル/テンプレート

リポジトリ:

python_api/examples – GitHub

コード:

release/scripts/templates_py – GitHub

blender-basic-ui-example-28x.py (p2or) – GitHub Gist

basic_ui_documented.py – A commented template for making simple UI in blender using the bpy python API (tin2tin) – GitHub Gist

入手:

はじめての Blender アドオン開発 v3 サンプルアドオン集 | COLORFUL PICO

Tips

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

List Manipulation – Best Practice | Blender Python API [Official]

まとめ

参考:

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

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

Blender 関連の雑多なメモ類 | nikogoli

Interface – Code Snippets | Blender Wiki Archive

Blender Icons

リポジトリ:

Shrinks99/blender-icons: Blender’s icons have all been stored in a single svg file – GitHub

デモ:

Blendicons (wilkinson.graphics)

Icon Viewer

テキストエディター

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

Python コンソール

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

動画:

How to Use (Steven Scott)

ドキュメント:

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

参考:

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

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

コメントを残す

メールアドレスが公開されることはありません。

Protected by reCAPTCHA