Open9

Blender+Python

S.Fuka(S.Haruya)S.Fuka(S.Haruya)

カスタムプロパティを追加する方法

例:選択中のオブジェクトにScaleというカスタムプロパティを追加する

import bpy

if bpy.context.selected_objects != [] :
    bpy.context.active_object['Scale'] = 7.0

タイプ別追加方法

bpy.context.active_object['プロパティ名'] = 0.0   # Float
bpy.context.active_object['プロパティ名'] =[0.0,0.0,0.0]   # Float配列
bpy.context.active_object['プロパティ名'] = 0   # Int
bpy.context.active_object['プロパティ名'] =[0,0,0]   # Int配列
bpy.context.active_object['プロパティ名'] = "文字列"   # 文字列

どれにも当てはまらなかった場合Pythonタイプになる

S.Fuka(S.Haruya)S.Fuka(S.Haruya)

カスタムプロパティを編集する

例:Float配列のカスタムプロパティのサブタイプをLinearColorに変更する

bpy.context.active_object.id_properties_ui("プロパティ名").update(subtype='COLOR')

例2:Floatの最大、最小を設定する

bpy.context.active_object.id_properties_ui("プロパティ名").update(min=-10,max=10)

参考サイト

https://docs.blender.org/api/current/bpy.types.bpy_struct.html#bpy.types.bpy_struct.id_properties_ui
https://docs.blender.org/api/current/bpy.props.html

_RNA_UIは3.0で廃止されたっぽい

記事を探すと_RNA_UIを使った方法が色々引っかかるけど、_RNA_UIは3.0で廃止されているようです。

参考サイト

https://wiki.blender.jp/Dev:JA/Ref/Release_Notes/3.00/Python_API

S.Fuka(S.Haruya)S.Fuka(S.Haruya)

アウトライナーで選択されたコレクションを取得する

bpy.context.view_layer.active_layer_collection.collection

アウトライナーで選択されたコレクション内のオブジェクトを取得する

bpy.context.view_layer.active_layer_collection.collection.objects[0]
S.Fuka(S.Haruya)S.Fuka(S.Haruya)

選択中のノード

bpy.context.object.active_material.node_tree.nodes.active

選択中のノードの座標

bpy.context.object.active_material.node_tree.nodes.active.location

マテリアル出力のサーフェスに入力されているノード

bpy.context.object.active_material.node_tree.nodes["Material Output"].inputs[0].links[0].from_node
S.Fuka(S.Haruya)S.Fuka(S.Haruya)

現在のblendファイルのファイルパス

bpy.data.filepath

ファイルが一度でも保存されているか

if bpy.data.filepath != "" :

現在のblendファイルのあるフォルダをブラウザで開く

subprocess.Popen(["explorer", os.path.dirname(dir)], shell=True)
S.Fuka(S.Haruya)S.Fuka(S.Haruya)

選択中のメッシュの三角ポリゴン数を取得する

bpy.context.active_object.data.calc_loop_triangles()
len(bpy.context.active_object.data.loop_triangles)
S.Fuka(S.Haruya)S.Fuka(S.Haruya)

頂点カラーを追加する

bpy.ops.geometry.color_attribute_add(name="Output", domain='CORNER', data_type='BYTE_COLOR')
bpy.ops.geometry.color_attribute_add(name="Color", domain='CORNER', data_type='FLOAT_COLOR')