From a1f3af3d59a9063923ccd2632e8cefcf7fa6f681 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Mon, 28 Jan 2008 00:05:15 +0000 Subject: [PATCH] script to save renderlayers to a file so you can load them in other blend's - useful when applying settings in a pipeline (andy tells me ;) ) --- release/scripts/render_save_layers.py | 116 ++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 release/scripts/render_save_layers.py diff --git a/release/scripts/render_save_layers.py b/release/scripts/render_save_layers.py new file mode 100644 index 00000000000..04bedde6e8d --- /dev/null +++ b/release/scripts/render_save_layers.py @@ -0,0 +1,116 @@ +#!BPY + +""" +Name: 'Save Render Layers...' +Blender: 245 +Group: 'Render' +Tooltip: 'Save current renderlayers as a BPython script' +""" + +__author__ = "Campbell Barton" +__url__ = ("blender", "elysiun") +__version__ = "1.0" + +__bpydoc__ = """\ +""" + +# -------------------------------------------------------------------------- +# The scripts generated by this script are put under Public Domain by +# default, but you are free to edit the ones you generate with this script +# and change their license to another one of your choice. +# -------------------------------------------------------------------------- +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# ***** END GPL LICENCE BLOCK ***** +# -------------------------------------------------------------------------- + +import Blender +from Blender.Window import Theme, FileSelector +from Blender import Scene + +sce = Scene.GetCurrent() +rend = sce.render + +# default filename: theme's name + '_theme.py' in user's scripts dir: +default_fname = Blender.Get("scriptsdir") +default_fname = Blender.sys.join(default_fname, sce.name + '_renderlayer.py') +default_fname = default_fname.replace(' ','_') + +def write_renderlayers(filename): + "Write the current renderlayer as a bpython script" + + if not filename.endswith('.py'): filename += '.py' + + fout = file(filename, "w") + + fout.write("""#!BPY + +# \"\"\" +# Name: '%s' +# Blender: 245 +# Group: 'Render' +# Tooltip: '' +# \"\"\" + +__%s__ = "????" +__%s__ = "2.43" +__%s__ = ["blender"] +__%s__ = \"\"\"\\ +You can edit this section to write something about your script that can +be read then with the Scripts Help Browser script in Blender. + +Remember to also set author, version and possibly url(s) above. You can also +define an __email__ tag, check some bundled script's source for examples. +\"\"\" + +# This script was automatically generated by the save_theme.py bpython script. +# By default, these generated scripts are released as Public Domain, but you +# are free to change the license of the scripts you generate with +# save_theme.py before releasing them. + +import Blender +from Blender import Scene + +sce = Scene.GetCurrent() +rend = sce.render +""" % (sce.name, "author", "version", "url", "bpydoc")) + + for lay in rend.renderLayers: # + fout.write("\nlay = rend.addRenderLayer()\n") + fout.write("lay.name = \"%s\"\n" % lay.name) + + exec("vars = dir(lay)") + + for var in vars: + if var.startswith('_'): + continue + + v = "lay.%s" % var + exec("value = %s" % v) + if type(value) == str: + fout.write("%s = '%s'\n" % (v, value)) + else: + fout.write("%s = %s\n" % (v, value)) + + fout.write('\nBlender.Redraw(-1)') + fout.close() + try: + Blender.UpdateMenus() + except: + Blender.Draw.PupMenu("Warning - check console!%t|Menus could not be automatically updated") + +FileSelector(write_renderlayers, "Save RenderLayers", default_fname) \ No newline at end of file