[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [3697] contrib/py/scripts/addons/ oscurart_tools.py: Add automatic overrides
Eugenio Pignataro
info at oscurart.com.ar
Sun Sep 2 04:07:01 CEST 2012
Revision: 3697
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=3697
Author: oscurart
Date: 2012-09-02 02:06:58 +0000 (Sun, 02 Sep 2012)
Log Message:
-----------
Add automatic overrides
Modified Paths:
--------------
contrib/py/scripts/addons/oscurart_tools.py
Modified: contrib/py/scripts/addons/oscurart_tools.py
===================================================================
--- contrib/py/scripts/addons/oscurart_tools.py 2012-09-02 01:03:55 UTC (rev 3696)
+++ contrib/py/scripts/addons/oscurart_tools.py 2012-09-02 02:06:58 UTC (rev 3697)
@@ -253,6 +253,10 @@
boxcolrow=boxcol.row()
boxcolrow.operator("render.apply_overrides", text="Apply Overrides", icon="ERROR")
boxcolrow.operator("render.restore_overrides", text="Restore Overrides", icon="ERROR")
+ boxcol.label(text="Automatic Overrides")
+ boxcolrow=boxcol.row()
+ boxcolrow.operator("render.overrides_on", text="On", icon="ERROR")
+ boxcolrow.operator("render.overrides_off", text="Off", icon="ERROR")
##---------------------------RELOAD IMAGES------------------
@@ -1957,7 +1961,70 @@
## ------------------------------------ APPLY AND RESTORE OVERRIDES --------------------------------------
+def DefOscApplyOverrides(self):
+ LISTMAT = []
+ PROPTOLIST = list(eval(bpy.context.scene['OVERRIDE']))
+ # REVISO SISTEMA
+ if sys.platform.startswith("w"):
+ print("PLATFORM: WINDOWS")
+ SYSBAR = "\\"
+ else:
+ print("PLATFORM:LINUX")
+ SYSBAR = "/"
+ FILEPATH=bpy.data.filepath
+ ACTIVEFOLDER=FILEPATH.rpartition(SYSBAR)[0]
+ ENTFILEPATH= "%s%s%s_OVERRIDE.xml" % (ACTIVEFOLDER, SYSBAR, bpy.context.scene.name)
+ XML=open(ENTFILEPATH ,mode="w")
+ ## GUARDO MATERIALES DE OBJETOS EN GRUPOS
+
+ LISTMAT = { OBJ : [SLOT.material for SLOT in OBJ.material_slots[:]] for OBJ in bpy.data.objects[:] if OBJ.type == "MESH" or OBJ.type == "META" or OBJ.type == "CURVE" }
+
+
+ for OVERRIDE in PROPTOLIST:
+ for OBJECT in bpy.data.groups[OVERRIDE[0]].objects[:]:
+ if OBJECT.type == "MESH" or OBJECT.type == "META" or OBJECT.type == "CURVE":
+ if len(OBJECT.material_slots) > 0:
+ for SLOT in OBJECT.material_slots[:]:
+ SLOT.material = bpy.data.materials[OVERRIDE[1]]
+ else:
+ print ("* %s have not Material Slots" % (OBJECT.name))
+
+
+ XML.writelines(str(LISTMAT))
+ XML.close()
+
+
+def DefOscRestoreOverrides(self):
+ # REVISO SISTEMA
+ if sys.platform.startswith("w"):
+ print("PLATFORM: WINDOWS")
+ SYSBAR="\\"
+ else:
+ print("PLATFORM:LINUX")
+ SYSBAR="/"
+ FILEPATH = bpy.data.filepath
+ ACTIVEFOLDER = FILEPATH.rpartition(SYSBAR)[0]
+ ENTFILEPATH = "%s%s%s_OVERRIDE.xml" % (ACTIVEFOLDER, SYSBAR, bpy.context.scene.name)
+ XML = open(ENTFILEPATH, mode="r")
+ RXML = XML.readlines(0)
+
+ LISTMAT = dict(eval(RXML[0]))
+
+ # RESTAURO MATERIALES DE OVERRIDES
+
+ for OBJ in LISTMAT:
+ if OBJ.type == "MESH" or OBJ.type == "META" or OBJ.type == "CURVE":
+ SLOTIND = 0
+ for SLOT in LISTMAT[OBJ]:
+ OBJ.material_slots[SLOTIND].material = SLOT
+ SLOTIND += 1
+
+ # CIERRO
+ XML.close()
+
+
+## HAND OPERATOR
class OscApplyOverrides(bpy.types.Operator):
bl_idname = "render.apply_overrides"
bl_label = "Apply Overrides in this Scene"
@@ -1965,36 +2032,7 @@
def execute (self, context):
- LISTMAT = []
- PROPTOLIST = list(eval(bpy.context.scene['OVERRIDE']))
- # REVISO SISTEMA
- if sys.platform.startswith("w"):
- print("PLATFORM: WINDOWS")
- SYSBAR = "\\"
- else:
- print("PLATFORM:LINUX")
- SYSBAR = "/"
- FILEPATH=bpy.data.filepath
- ACTIVEFOLDER=FILEPATH.rpartition(SYSBAR)[0]
- ENTFILEPATH= "%s%s%s_OVERRIDE.xml" % (ACTIVEFOLDER, SYSBAR, bpy.context.scene.name)
- XML=open(ENTFILEPATH ,mode="w")
- ## GUARDO MATERIALES DE OBJETOS EN GRUPOS
-
- LISTMAT = { OBJ : [SLOT.material for SLOT in OBJ.material_slots[:]] for OBJ in bpy.data.objects[:] if OBJ.type == "MESH" or OBJ.type == "META" or OBJ.type == "CURVE" }
-
-
- for OVERRIDE in PROPTOLIST:
- for OBJECT in bpy.data.groups[OVERRIDE[0]].objects[:]:
- if OBJECT.type == "MESH" or OBJECT.type == "META" or OBJECT.type == "CURVE":
- if len(OBJECT.material_slots) > 0:
- for SLOT in OBJECT.material_slots[:]:
- SLOT.material = bpy.data.materials[OVERRIDE[1]]
- else:
- print ("* %s have not Material Slots" % (OBJECT.name))
-
-
- XML.writelines(str(LISTMAT))
- XML.close()
+ DefOscApplyOverrides(self)
return {'FINISHED'}
class OscRestoreOverrides(bpy.types.Operator):
@@ -2004,35 +2042,29 @@
def execute (self, context):
- # REVISO SISTEMA
- if sys.platform.startswith("w"):
- print("PLATFORM: WINDOWS")
- SYSBAR="\\"
- else:
- print("PLATFORM:LINUX")
- SYSBAR="/"
+ DefOscRestoreOverrides(self)
+ return {'FINISHED'}
+
+class OscOverridesOn(bpy.types.Operator):
+ bl_idname = "render.overrides_on"
+ bl_label = "Turn On Overrides"
+ bl_options = {"REGISTER", "UNDO"}
- FILEPATH = bpy.data.filepath
- ACTIVEFOLDER = FILEPATH.rpartition(SYSBAR)[0]
- ENTFILEPATH = "%s%s%s_OVERRIDE.xml" % (ACTIVEFOLDER, SYSBAR, bpy.context.scene.name)
- XML = open(ENTFILEPATH, mode="r")
- RXML = XML.readlines(0)
+ def execute (self, context):
+ bpy.app.handlers.render_pre.append(DefOscApplyOverrides)
+ bpy.app.handlers.render_post.append(DefOscRestoreOverrides)
+ return {'FINISHED'}
- LISTMAT = dict(eval(RXML[0]))
+class OscOverridesOff(bpy.types.Operator):
+ bl_idname = "render.overrides_off"
+ bl_label = "Turn Off Overrides"
+ bl_options = {"REGISTER", "UNDO"}
- # RESTAURO MATERIALES DE OVERRIDES
-
- for OBJ in LISTMAT:
- if OBJ.type == "MESH" or OBJ.type == "META" or OBJ.type == "CURVE":
- SLOTIND = 0
- for SLOT in LISTMAT[OBJ]:
- OBJ.material_slots[SLOTIND].material = SLOT
- SLOTIND += 1
-
- # CIERRO
- XML.close()
+ def execute (self, context):
+ bpy.app.handlers.render_pre.remove(DefOscApplyOverrides)
+ bpy.app.handlers.render_post.remove(DefOscRestoreOverrides)
+ return {'FINISHED'}
- return {'FINISHED'}
## ------------------------------------ CHECK OVERRIDES --------------------------------------
@@ -2310,6 +2342,8 @@
bpy.utils.register_class(OscResymSave)
bpy.utils.register_class(OscResymMesh)
bpy.utils.register_class(DialogDistributeOsc)
+ bpy.utils.register_class(OscOverridesOn)
+ bpy.utils.register_class(OscOverridesOff)
def unregister():
bpy.utils.unregister_class(OscPanelControl)
@@ -2356,6 +2390,8 @@
bpy.utils.unregister_class(OscResymSave)
bpy.utils.unregister_class(OscResymMesh)
bpy.utils.unregister_class(DialogDistributeOsc)
+ bpy.utils.unregister_class(OscOverridesOn)
+ bpy.utils.unregister_class(OscOverridesOff)
if __name__ == "__main__":
register()
More information about the Bf-extensions-cvs
mailing list