import bpy
class DimensionToolsPanel(bpy.types.Panel):
"""Creates a panel with two buttons to remember and apply object dimensions"""
bl_label = "Retransform Tool"
bl_idname = "OBJECT_PT_retransform_tools"
bl_space_type = 'PROPERTIES'
bl_region_type = 'WINDOW'
bl_context = "object"
def draw(self, context):
layout = self.layout
obj = context.active_object
row = layout.row()
row.label(text="Selected Object: " + obj.name)
row = layout.row()
row.operator("object.remember_dimensions", text="Retransform All Meshes", icon='FILE_REFRESH')
class RememberDimensionsOperator(bpy.types.Operator):
"""Stores the object's dimensions"""
bl_idname = "object.remember_dimensions"
bl_label = "Retransform All Meshes"
def execute(self, context):
counter = 0
for obj in bpy.data.objects:
if obj.type == 'MESH':
obj["remember_dimensions"] = obj.dimensions.copy()
obj.dimensions = (10,10,10)
obj.select_set(True)
bpy.ops.object.transform_apply(location=False, rotation=False, scale=True)
obj.dimensions = obj["remember_dimensions"]
obj.select_set(False)
counter += 1
self.report({'INFO'}, "Retransformed ALL " + str(counter) + " meshes in the scene")
return {'FINISHED'}
def register():
bpy.utils.register_class(DimensionToolsPanel)
bpy.utils.register_class(RememberDimensionsOperator)
def unregister():
bpy.utils.unregister_class(DimensionToolsPanel)
bpy.utils.unregister_class(RememberDimensionsOperator)
if __name__ == "__main__":
register()
dimension_tools_06.py