Yep, the "Executable" node baseclass seems to add those knobs, so it should be a reasonably reliable way to find executable nodes

Of course it could still find non-executable nodes, e.g if someone adds beforeRender knob to their gizmo, so you'd may still want to catch the RuntimeError("Blur1 cannot be executed") exception,

try:
    nuke.execute(node, ...)
except RuntimeError, e:
    if str(e).endswith("cannot be executed"):
        ...handle error...
    else:
        raise

(incidentally, trying to execute the node is one reliable way to check if a node is executable..)

It would be worth a feature-request for a Node.isExecutable method - Nuke already has the information, it's just not exposed to Python

On 11/10/13 00:11, Frederich Munch wrote:
Not authoritative; but I just checked a custom node that is Executable
and indeed a 'beforeRender' knob is added by Nuke.

------------------------------------------------------------------------
From: diogogiro...@gmail.com
Date: Thu, 10 Oct 2013 08:05:20 -0300
Subject: Re: [Nuke-python] How to check if a Node is executable?
To: nuke-python@support.thefoundry.co.uk

nuke.allNodes('Write') will only return nodes of the Write Class, so
just "Write" nodes. Many other nodes (classes) can be executed, like
GenerateLUT, CurveTool, WriteGeo, DeepWrite, etc.

I think it's a safe bet to check for the existence of knob named "before
render", otherwise you would have to check for knobs named "go",
"render", "execute", "generate", etc which would be odd.

Personally I don't know of any other way to identify executable nodes
aside that one at least.


cheers,
Diogo


On Thu, Oct 10, 2013 at 6:14 AM, Fredrik Averpil
<fredrik.aver...@gmail.com <mailto:fredrik.aver...@gmail.com>> wrote:

    Aren't executable nodes always of type Write?

    If so, this could be what you're looking for?


    Select some node and run the script to check whether it's executable
    or not.



    [snip]


    def isExecNode( someNode ):

    execNodes = nuke.allNodes('Write')

    print execNodes

    for execNode in execNodes:

    if someNode.name() in execNode.name():

    return True

    else:

    return False




    if isExecNode( nuke.selectedNode() ):

    print 'Execute node: ' + nuke.selectedNode().name()

    else:

    print 'Do not execute node: ' + nuke.selectedNode().name()


    [/snip]





    Regards,

    Fredrik





    On Thu, Oct 10, 2013 at 3:38 AM, Paul Hudson <phudson1...@gmail.com
    <mailto:phudson1...@gmail.com>> wrote:

        Hi everyone,

        Is there an official way to check if a node is executable? I was
        just going to check if it has a 'beforeRender' knob, but wasn't
        sure that covers all cases.


        As always, thanks so much!
        -Paul

        _______________________________________________
        Nuke-python mailing list
        Nuke-python@support.thefoundry.co.uk
        <mailto:Nuke-python@support.thefoundry.co.uk>,
        http://forums.thefoundry.co.uk/
        http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python



    _______________________________________________
    Nuke-python mailing list
    Nuke-python@support.thefoundry.co.uk
    <mailto:Nuke-python@support.thefoundry.co.uk>,
    http://forums.thefoundry.co.uk/
    http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python



_______________________________________________ Nuke-python mailing list
Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python


_______________________________________________
Nuke-python mailing list
Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python

--
ben dickson
2D TD | ben.dick...@rsp.com.au
rising sun pictures | www.rsp.com.au
_______________________________________________
Nuke-python mailing list
Nuke-python@support.thefoundry.co.uk, http://forums.thefoundry.co.uk/
http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-python

Reply via email to