123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- ## set_prerenderdirectory.py
- ##
- ## version 1.0 (2010-07-08): initial version based on set_renderdirectory
- ##
-
-
- import re, os, math
- import nuke, nukescripts
-
- default_format = "exr"
- scripts_folder = "Comp"
- render_folder = "450_PreComp"
-
- debug_flag = True
-
- ##########################
-
-
- def setPrerenderdirectory():
- """
- change output filename of write node to proper render location
- """
-
- try:
- the_node = nuke.selectedNode()
- if the_node.Class() != "Write":
- nuke.message("Please select a write node.")
- return
- except:
- nuke.message("Please select a write node.")
- return
-
- # comp saved?
- if not nuke.knob("root.name"):
- if nuke.ask("Script needs a file name first.\nSave and continue?"):
- try:
- nuke.scriptSave()
- except RuntimeError:
- # if save dialog was cancelled
- return
- else:
- return
-
- # test if script name is valid
- script_name = nuke.knob("root.name")
- script_path = os.path.dirname(script_name)
- script_name = os.path.splitext(os.path.basename(script_name))[0]
-
- new_path, num = re.subn("(?i)/"+scripts_folder+"/","/"+render_folder+"/",script_path,1)
- if num == 0:
- nuke.message("Script is not saved in "+scripts_folder+".\nRender directory can't be determined.")
- return
- # todo: make sure there are no extra directories beyond sequence and scene number (no "050_scripts/010/010_010/blabla")
-
- # ask for pretender description
- label = "pre"
- panel = nuke.Panel("Set pre-render directory")
- panel.addSingleLineInput("Label:", label)
- panel.addButton("Cancel")
- panel.addButton("OK")
- if panel.show() == 0:
- return
-
- # clean label for use in filenames
- label = panel.value("Label:")
- label = re.sub("[^\w-]","",label)
-
- new_path = new_path + "/" + script_name + "_" + label
- the_node.knob("file").setValue(new_path + "/" + script_name + "_" + label + ".####." + default_format)
- print "set pre-render directory of "+the_node.name()
- print
-
- # create directory?
- if not debug_flag:
- if not os.path.exists(new_path):
- try:
- os.makedirs(new_path)
- print "created directory "+new_path
- print
- except:
- nuke.message("Error creating "+new_path)
-
-
- # fin
|