[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [1278] contrib/py/scripts/addons/ object_batch_rename_datablocks.py: new batch renamer
Florian Meyer
florianfelix at web.de
Wed Dec 15 19:15:09 CET 2010
Revision: 1278
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-extensions&revision=1278
Author: testscreenings
Date: 2010-12-15 19:15:09 +0100 (Wed, 15 Dec 2010)
Log Message:
-----------
new batch renamer
Added Paths:
-----------
contrib/py/scripts/addons/object_batch_rename_datablocks.py
Added: contrib/py/scripts/addons/object_batch_rename_datablocks.py
===================================================================
--- contrib/py/scripts/addons/object_batch_rename_datablocks.py (rev 0)
+++ contrib/py/scripts/addons/object_batch_rename_datablocks.py 2010-12-15 18:15:09 UTC (rev 1278)
@@ -0,0 +1,185 @@
+# ##### 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# ##### END GPL LICENSE BLOCK #####
+#######################################################################
+bl_addon_info = {
+ "name": "Batch Rename Datablocks",
+ "author": "tstscr",
+ "version": (1, 0),
+ "blender": (2, 5, 5),
+ "api": 32013,
+ "location": "use the search :)",
+ "description": "Batch renaming of datablocks (e.g. rename materials after objectnames)",
+ "warning": "",
+ "wiki_url": "",
+ "tracker_url": "",
+ "category": "USER"}
+
+#######################################################################
+import bpy
+from bpy.props import *
+
+def get_first_material_name(ob):
+ for m_slot in ob.material_slots:
+ if m_slot.material:
+ material_name = m_slot.material.name
+ return material_name
+
+def get_name(self, ob):
+ if self.naming_base == 'Object':
+ return ob.name
+
+ if self.naming_base == 'Mesh':
+ if ob.data: return ob.data.name
+ else: return ob.name
+
+ if self.naming_base == 'Material':
+ material_name = get_first_material_name(ob)
+ if not material_name: return ob.name
+ else: return material_name
+
+ if self.naming_base == 'Custom':
+ return self.rename_custom
+
+
+def rename_datablocks_main(self, obs, context):
+ for ob in obs:
+ name = get_name(self, ob)
+
+ if self.rename_object:
+ if (self.rename_use_prefix
+ and self.prefix_object):
+ ob.name = self.rename_prefix + name
+ else:
+ ob.name = name
+
+ if self.rename_data:
+ if (ob.data
+ and ob.data.users == 1):
+ if (self.rename_use_prefix
+ and self.prefix_data):
+ ob.data.name = self.rename_prefix + name
+ else:
+ ob.data.name = name
+
+ if self.rename_material:
+ if ob.material_slots:
+ for m_slot in ob.material_slots:
+ if m_slot.material:
+ if m_slot.material.users == 1:
+ if (self.rename_use_prefix
+ and self.prefix_material):
+ m_slot.material.name = self.rename_prefix + name
+ else:
+ m_slot.material.name = name
+
+class OBJECT_OT_batch_rename_datablocks(bpy.types.Operator):
+ '''Batch rename Datablocks'''
+ bl_idname = "object.batch_rename_datablocks"
+ bl_label = "Batch Rename Datablocks"
+ bl_options = {'REGISTER', 'UNDO'}
+
+ name_origins = [
+ ('Object', 'Object', 'Object'),
+ ('Mesh', 'Mesh', 'Mesh'),
+ ('Material', 'Material', 'Material'),
+ ('Custom', 'Custom', 'Custom')
+ ]
+ naming_base = EnumProperty(name='Name after:',
+ default='',
+ items=name_origins)
+ rename_custom = StringProperty(name='Custom Name',
+ default='New Name',
+ description='Rename all with this String')
+ rename_object = BoolProperty(name='Rename Objects',
+ default=False,
+ description='Rename Objects')
+ rename_data = BoolProperty(name='Rename Data',
+ default=True,
+ description='Rename Object\'s Data')
+ rename_material = BoolProperty(name='Rename Materials',
+ default=True,
+ description='Rename Objects\' Materials')
+ rename_use_prefix = BoolProperty(name='Add Prefix',
+ default=False,
+ description='Prefix Objectnames with first Groups name')
+ rename_prefix = StringProperty(name='Prefix',
+ default='',
+ description='Prefix name with this string')
+ prefix_object = BoolProperty(name='Object',
+ default=True,
+ description='Prefix Object Names')
+ prefix_data = BoolProperty(name='Data',
+ default=True,
+ description='Prefix Data Names')
+ prefix_material = BoolProperty(name='Material',
+ default=True,
+ description='Prefix Material Names')
+
+ dialog_width = 250
+
+ def draw(self, context):
+ layout = self.layout
+ col = layout.column()
+ col.label(text='Rename after:')
+
+ row = layout.row()
+ row.prop(self.properties, 'naming_base', expand=True)
+
+ col = layout.column()
+ col.prop(self.properties, 'rename_custom')
+
+ col.separator()
+ col.label('Datablocks to rename:')
+ col.prop(self.properties, 'rename_object')
+ col.prop(self.properties, 'rename_data')
+ col.prop(self.properties, 'rename_material')
+
+ col.separator()
+ col.prop(self.properties, 'rename_use_prefix')
+ col.prop(self.properties, 'rename_prefix')
+
+ row = layout.row()
+ row.prop(self.properties, 'prefix_object')
+ row.prop(self.properties, 'prefix_data')
+ row.prop(self.properties, 'prefix_material')
+
+ col = layout.column()
+
+ @classmethod
+ def poll(cls, context):
+ return context.selected_objects != None
+
+ def execute(self, context):
+
+ obs = context.selected_objects
+ rename_datablocks_main(self, obs, context)
+
+ return {'FINISHED'}
+
+ def invoke(self, context, event):
+ wm = context.window_manager
+ wm.invoke_props_dialog(self, self.dialog_width)
+ return {'RUNNING_MODAL'}
+
+
+def register():
+ pass
+def unregister():
+ pass
+if __name__ = '__main__':
+ register()
More information about the Bf-extensions-cvs
mailing list