TCL/Python Snippets

TCL/Python Snippets

Get input node name:

[python nuke.thisNode().input(0).name()]
[python nuke.thisNode().input(1).name()]
[value this.input0.name]
[value this.input1.name]

Set a variable in expression with TCL:

[set VARIABLENAME VALUE; return]

To use this variable later needs to type it as:

$VARIABLENAME

Get the last letter/section from node name, separated by “_”:

nuke.thisNode().name().rsplit("_").__getitem__(2)

TCL String Operation that returns the 5th character from top input node name:

[string index [value [topnode this.input0].name] 5]

Use TCL string operation to converts to uppercase or lowercase:

[string tolower [value]]

Check if anything is plugged in to an input:

[exists this.input0]]
if nuke.thisNode().input(0)

Check input1 and check if anything is plugged in:

[value [topnode this.input0].name]
[exists parent.[string tolower [value [topnode this.input1].name]]]

This handy getting filename from topmost read I grabbed from Nukepedia

[lindex [split [lindex [split [knob [topnode].file] .] 0] /] end]
[file dirname [knob [topnode].file]]/[lindex [split [lindex [split [knob [topnode].file] .] 0] /] end]_conv.%04d.exr

Read metadata with TCL

[metadata input/filename]

Using expressions in Text node (needs to square bracket the whole thing):

[expression frame==1?1:0]

Get Bezier1’s point 0 (which is first point) position in Roto1 node :

[value Roto1.curves.Bezier1.curve_points.0.main]

List of all nodes but exclude selected ones:

n = nuke.allNodes()
for i in nuke.selectedNodes()
n.remove(i)
return n

Replace frame paddings (%04d) and extension with .mov

import re
v = nuke.toNode('Read1')['file'].value()
print re.sub(r'%.*d.exr', 'mov', v)

Search for frame paddings

f = nukescripts.replaceHashes(nuke.filename(n))
padd = re.search(r'%.*d', f)
print padd.group(0)

Leave a Reply

Your email address will not be published. Required fields are marked *