本日は Blender の技術調査枠です。
Blender2.9で利用可能なpythonスクリプトを作ります。
オブジェクトの選択状態を変更する
指定名のオブジェクトの選択状態を変更します。
複数のオブジェクトを同時に選択状態にすることができます。
・Script_change_meshlist_select.py
# bpyインポート import bpy # メッシュタイプのオブジェクトの選択状態を変更する def change_meshlist_select(arg_objectlist:list, arg_select:bool) -> bool: """メッシュタイプのオブジェクトの選択状態を変更する Args: arg_objectlist (list): オブジェクトリスト arg_select (bool): 変更する選択状態 Returns: bool: 実行正否 """ # オブジェクトリストを取得する for target_obj in arg_objectlist: # 要素がオブジェクトかチェックする if(type(target_obj) != bpy.types.Object): # オブジェクト以外の要素が混ざっていれば処理しない return False else: if(target_obj.type != 'MESH'): # メッシュタイプ以外の要素が混ざっていれば処理しない return False # オブジェクトリストを取得する for target_obj in arg_objectlist: # 選択状態を変更する target_obj.select_set(arg_select) return True # 関数の実行例 # 対象となるオブジェクト名のリストを作成する objectname_list = [ "Cube", "Sphere", "Cylinder", ] # オブジェクトリスト用の空リストを作成する object_list = [] # オブジェクトを取得する for name in objectname_list: # 指定オブジェクトを取得する target_obj = bpy.data.objects.get(name) # 同名のオブジェクトが存在していたか確認する if target_obj != None: # 存在していればリストに追加する object_list.append(target_obj) change_meshlist_select( arg_objectlist=object_list, arg_select=True )
選択中のオブジェクトリストを取得する
選択中のメッシュタイプのオブジェクトのリストを取得します。
・Script_get_meshlist_select.py
# bpyインポート import bpy # 選択中のメッシュタイプのオブジェクトのリストを取得する def get_meshlist_select() -> list: """メッシュタイプのオブジェクトのリストの選択状態を変更する Returns: list: オブジェクトリスト """ # オブジェクトリスト用の空リストを作成する object_list = [] # 有効なコレクションを取得する collection_list = bpy.context.scene.collection.children # 各レイヤーコレクションを精査する for collection in collection_list: # コレクション内のオブジェクトリストを取得する obj_list = collection.objects # オブジェクトのリストを精査する for obj in obj_list: # メッシュタイプか確認する if(obj.type == 'MESH'): # 選択状態か確認する if obj.select_get() == True: # 選択状態であればリストに追加する object_list.append(obj) return object_list # 関数の実行例 object_list = get_meshlist_select() for target_obj in object_list: print(target_obj.name)