12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- import re, os, math
- import nuke, nukescripts
-
-
-
- class CreateFolders(KellerNukePlugin):
-
- def configurePlugin(self):
- menubar = nuke.menu("Nuke")
- m = menubar.addMenu("&Render")
- m.addCommand("CreateFolders",'createFolders.createFolders()', "F16")
- pass
-
-
-
- ##########################
- def createFolders():
- writeNodes = get_broken_write_nodes()
- if writeNodes:
- fix_broken_write_nodes()
-
-
- def get_broken_write_nodes():
- """
- Returns list of all write nodes that refer to non-existing paths (or an empty list).
- If nodes are selected only they will be checked.
- """
-
- nodes = nuke.selectedNodes()
- if not nodes: nodes = nuke.allNodes()
- n = [i for i in nodes if i.Class() == "Write"]
- result = []
- for curNode in n:
- fileKnob = curNode['file']
- try:
- if not os.path.exists(os.path.dirname(fileKnob.evaluate())):
- result.append(curNode)
- except:
- pass
-
- return result
-
-
-
- def fix_broken_write_nodes():
- """
- Create paths for all (selected) write nodes in case they don't exist yet.
- """
-
- nodes = get_broken_write_nodes()
- for curNode in nodes:
- thePath = os.path.dirname(curNode['file'].evaluate())
- if thePath and not os.path.exists(thePath):
- try:
- os.makedirs(thePath)
- print ("created directory "+thePath)
- except:
- nuke.message("CreateFolders.fix_broken_write_nodes(): Error creating "+thePath)
|