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
Esempio n. 2
0
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
Esempio n. 3
0
 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)