1
+ '''..................................................................................................
2
+ Author: Diego Inácio
3
+ GitHub: github.com/diegoinacio
4
+ Date: SEP/01/2016
5
+ ..................................................................................................'''
6
+ import nuke
7
+
8
+ def reloadAllReads ():
9
+ '''
10
+ Reload all read nodes
11
+ '''
12
+ nodes = [node for node in nuke .allNodes (recurseGroups = True ) if node .Class () == 'Read' ]
13
+ for node in nodes :
14
+ node .knob ('reload' ).execute ()
15
+
16
+ def reloadAllBlinks ():
17
+ '''
18
+ Reload all blinkScript nodes
19
+ '''
20
+ nodes = [node for node in nuke .allNodes (recurseGroups = True ) if node .Class () == 'BlinkScript' ]
21
+ for node in nodes :
22
+ nuke .show (node )
23
+ node .knob ('reloadKernelSourceFile' ).execute ()
24
+ node .hideControlPanel ()
25
+
26
+ def pathExplorer ():
27
+ '''
28
+ Open filename's path on explorer from Read or Write selected nodes
29
+ '''
30
+ import os , subprocess
31
+
32
+ sel = nuke .selectedNodes ()
33
+ for node in sel :
34
+ if node .Class () == 'Read' or node .Class () == 'Write' :
35
+ File = nuke .filename (node )
36
+ path = os .path .dirname (File )
37
+ subprocess .Popen ('explorer "%s"' % path .replace ('/' , '\\ ' ))
38
+
39
+ def writeFolderCreator ():
40
+ '''
41
+ Checks if selected write node's folder exists and create them if does not
42
+ '''
43
+ import os
44
+
45
+ nodes = nuke .selectedNodes ('Write' )
46
+ if nodes == []:
47
+ nuke .message ('select some write node' )
48
+ return None
49
+
50
+ for node in nodes :
51
+ file = nuke .filename (node )
52
+ path = os .path .dirname (file )
53
+ if not os .path .isdir (path ):
54
+ if nuke .ask (node .knob ('name' ).getValue () + '\n \n ' + path + \
55
+ '\n \n this path does not exist. would like to create it?' ):
56
+ os .makedirs (path )
57
+
58
+ def setMultipleKnobs ():
59
+ '''
60
+ Set multiple knobs into multiple selected nodes
61
+ '''
62
+ import ast
63
+
64
+ nodes = nuke .selectedNodes ()
65
+ if nodes == []:
66
+ nuke .message ('select some node' )
67
+ return None
68
+
69
+ classes = set ()
70
+ for node in nodes :
71
+ classes .add (node .Class ())
72
+ enumClasses = ' ' .join (['all' ] + list (classes ))
73
+
74
+ p = nuke .Panel ('set multiple knobs' )
75
+ p .addEnumerationPulldown ('node class' , enumClasses )
76
+ p .addSingleLineInput ('knob name' , '' )
77
+ p .addSingleLineInput ('value' , '' )
78
+ c = p .show ()
79
+
80
+ if c :
81
+ nodeClass = p .value ('node class' )
82
+ knobName = [e .lstrip () for e in p .value ('knob name' ).split (',' )]
83
+ try :
84
+ value = list (ast .literal_eval (p .value ('value' )))
85
+ except :
86
+ value = [eval (p .value ('value' ))]
87
+
88
+ if len (knobName ) != len (value ):
89
+ nuke .message ( "the knobName's field and the value's \
90
+ field must have the same number of arguments" )
91
+ return None
92
+
93
+ for node in nodes :
94
+ if node .Class () == nodeClass or nodeClass == 'all' :
95
+ for index in range (len (knobName )):
96
+ node .knob (knobName [index ]).setValue (value [index ])
0 commit comments