pythonnuke

Setting default value of a drop down menu in nuke with python


I am relatively new to python still, and I have been trying to write some simple things do nuke overrides for my work style. One of them being a remove node.

import nuke

def removeOverride():
    nuke.thisNode()["operation"].setValue("keep")
    nuke.thisNode()["channels"].setValue("rgb")
##Adds end lined commands to run when node is created by the user.

nuke.addOnUserCreate(removeOverride, nodeClass = "remove")

The above code is my attempt to change the values in the operations knob to keep instead of the nuke default of remove. As in my work flow I find it easier to just tell it which channels I want I want to keep.


Solution

  • Try the following one. Use this code for nodes with specific names:

    def removeOverride():
        nuke.toNode("Remove1")['operation'].setValue('keep')
        nuke.toNode("Remove1")['channels'].setValue('rgb')
    
    nuke.addOnUserCreate(removeOverride(), nodeClass='Remove') 
    
    # use UpperCamelCasing for any class name ('Blur','Read','Remove')
    

    Also for any subsequent nodes created, use this code:

    def removeOverride():
        for node in nuke.allNodes():
            if node.Class() == "Remove":
                node["operation"].setValue("keep")
                node["channels"].setValue("rgb")
    
    removeOverride()
    # OR
    nuke.addOnUserCreate(removeOverride(), nodeClass='Remove')
    

    And the last configuration using nuke.selectedNodes() and nuke.thisNode() methods is suitable for selected nodes in the DAG:

    def removeOverride():
    
        thisNode = nuke.thisNode()
        rootDAG = nuke.root()
    
        with rootDAG:
            allNodesSelected = nuke.selectedNodes()
        try:
            allNodesSelected.remove(thisNode)
        except:
            pass
    
        for node in allNodesSelected:
            node["operation"].setValue("keep")
            node["channels"].setValue("rgb")
    
        return allNodesSelected
    
    nuke.addOnUserCreate(removeOverride(), nodeClass='Remove')