プロパティ

参考:

Property Definitions (bpy.props) | Blender Python API [Official]

使い方

定義
削除

参考:

スクリプトにおいてクラス間で変数を共有する方法 | dskjal

オペレータプロパティを活用する | はじめての Blender アドオン開発

Blender でプロパティを追加して UI で編集する Addon サンプル | トックの CG 部屋

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

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

Property Definitions (bpy.props) | Blender Python API [Official]

概要

参考:

プロパティとID プロパティおよび両者の違い | wiki.blender.jp

Blender の RNA プロパティと ID プロパティとの違い | dskjal

Properties, ID-Properties and their differences | wiki.blender.jp

書き方

参考:

ClassVar – typing | Python 3.x ドキュメント [公式]

Class Property Registration | Blender Developer Wiki [Official]

PEP 526 – Syntax for Variable Annotations | Python.org [Official]

Can´t see the inputs in dialog box – Blender Stack Exchange

2.93 update throws error with bpy.props – Blender Stack Exchange

PointerProperty

シーンまたはウィンドウマネージャにポインタプロパティを追加する。

def register():
    bpy.types.Scene.my_pointer         = bpy.props.PointerProperty(type=MyParams)
    bpy.types.WindowManager.my_pointer = bpy.props.PointerProperty(type=MyParams)

def unregister():
    del bpy.types.Scene.my_pointer
    del bpy.types.WindowManager.my_pointer

参考:

bpy.props.PointerProperty | Blender Python API [Official]

Assigning value to PointerProperty? – Blender Artists Community

Is it possible to use bpy.props.PointerProperty to store a pointer to an object? – Blender Stack Exchange

How do you access the object that a PointerProperty points to? – Blender Stack Exchange

Is it possible to use bpy.props.PointerProperty to store a pointer to an object? – Blender Stack Exchange

New property type: IDPointerProperty | Right-Click Select (Blender.Community)

Examples of bpy.props.PointerProperty | ProgramCreek.com

EnumProperty

参考:

EnumProperty の選択項目を動的に設定する方法 – Qiita

bpy.props.EnumProperty | Blender Python API [Official]

Add/remove EnumProperty items? – Blender Artists Community

automatically update EnumProperty from UI Panel – Blender Artists Community

How to go about Changing a property to that of another object? – Blender Stack Exchange

PropertyGroup

参考:

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

PropertyGroup | Blender Python API [Official]

Store Pointer Property array/list – Blender Stack Exchange

PointerProperty to node of material node tree – Blender Stack Exchange

Get previous value of updated property – Blender Stack Exchange

prop_search with a custom PropertyGroup – Blender Stack Exchange

CollectionProperty

参考:

要素ごとに状態を保存するメニュー作る | 忘却まとめ

CollectionProperty | Blender Python API [Official]

Collection Example | Blender Python API [Official]

bpy.props.CollectionProperty | Blender Python API [Official]

bpy_prop_collection | Blender Python API [Official]

python/intern/bpy_rna.c at v2.93.0 · blender/blender – GitHub

makesrna/intern/rna_access.c at v2.93.0 · blender/blender – GitHub

Role of “name” in Collection Property – Blender Artists Community

Custom CollectionProperty different from builtin collections? – Blender Artists Community

Adding a Property to a CollectionProperty After Creating it – Blender Stack Exchange

How to get the class type of a Blender Collection Property? – Blender Stack Exchange

change item’s index – Blender Stack Exchange

can’t find update callback for CollectionProperty – Blender Stack Exchange

Combining bpy_prop_collection to use in prop_search() – Blender Stack Exchange

プロパティが変更された時にコールバックを実行する (update)

参考:

Update Example | Blender Python API [Official]

updating properties based on object selection state – Blender Artists Community

Function Update on Boolean Property – Blender Stack Exchange

How to get an IntProperty to update a function? – Blender Stack Exchange

how to make Blender run check()/redraw when option changed? – Blender Stack Exchange

Update function for a Custom Property? – Blender Artists Community

getter / setter

オブジェクトに対して直接に値を設定した場合、コールバックは呼ばれない。

scene['my_prop'] = 123

プロパティとしてアクセスするとコールバックが呼ばれる。

scene.my_prop = 123

参考:

Getter/Setter Example | Blender Python API [Official]

Get previous value of updated property – Blender Stack Exchange

オペレーターに渡す

こちらのページを参照

参考:

Operator Example – Property Definitions | Blender Python API [Official]

How to access variable of other user Class? – Stack Overflow

カスタムプロパティ

オブジェクトにカスタムプロパティを設定する。

object["prop_name"] = 123.45

カスタムプロパティが未設定の場合に値を設定する。

if object.get("prop_name") is None:
    object["prop_name"] = 123.45

参考:

Custom Property | Interplanety

Custom Properties | Blender Manual [Official]

How do i read out Custom Properties in Blender with Python? – Stack Overflow

How to check if an object has a custom property with python? – Blender Stack Exchange

デフォルト値を設定する

参考:

Property の default 値をユーザー設定にする方法 | 忘却まとめ

How can I change IntProperty default value? – Blender Stack Exchange

How can I change IntProperty default value stored within PropertyGroup? – Blender Stack Exchange

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

getter を指定して setter は指定せずにプロパティを定義する。

def get_my_prop(self):
    return self['my_prop']

def register():
    # ...
    bpy.types.Object.my_prop = bpy.proprs.StringProperty(
        get=get_my_prop
    )

def unregister():
    # ...
    del bpy.types.Object.my_prop

if __name__ == '__main__':
    obj = bpy.context.object
    obj['my_prop'] = "Hello!"

参考:

How to block custom properties from being edited by the user? – Blender Stack Exchange

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

プロパティを列挙する

参考:

Walking the Property – Blender Artists Community

動的にリストを作成する

参考:

Can bpy.props be used for dynamic lists? – Blender Developer Talk

列挙型プロパティの値一覧を取得する

参考:

How to get a list with all possible values of an EnumProperty | Interplanety

パスを扱う

参考:

How to build an operator that corrects StringProperty(“subtype = ‘DIR_PATH’) from relative path? – Blender Stack Exchange

辞書型を使いたい

参考:

How can I save a dict in a scene propertyGroup? – Blender Stack Exchange

Property

プロパティの基底クラス

参考:

Property | Blender Python API [Official]

bpy_struct | Blender Python API [Official]

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

コメントを残す

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