def select_node_target(arg_material: bpy.types.Material, arg_node: bpy.types.Node): """対象マテリアルの指定ノードのみを選択状態する Args: arg_material (bpy.types.Material): 対象マテリアル arg_node (bpy.types.Node): 指定ノード """ # ノード操作のマニュアル # (https://docs.blender.org/api/current/bpy.types.Node.html) # ノードリスト操作のマニュアル # (https://docs.blender.org/api/current/bpy.types.Nodes.html) # ターゲットマテリアルのノード参照を取得 mat_nodes = arg_material.node_tree.nodes # 全てのノードの選択状態を解除する for mat_node in mat_nodes: # 選択状態を解除する mat_node.select = False # 指定ノードを選択状態にする arg_node.select = True # 指定ノードをアクティブにする mat_nodes.active = arg_node return
def copy_basic_node_props(from_node: bpy.types.Node, to_node: bpy.types.Node): """Copy non-node-specific properties to a different node.""" to_node.parent = from_node.parent to_node.location = from_node.location to_node.select = from_node.select to_node.arm_logic_id = from_node.arm_logic_id to_node.arm_watch = from_node.arm_watch
def select_children_of(self, node: bpy.types.Node, links: list[bpy.types.NodeLink], visited: list[bpy.types.Node]) -> None: # Prevent loops if node in visited: return node.select = True visited.append(node) if not node.inputs: return for link in links: if link.to_node == node: self.select_children_of(link.from_node, links, visited)