write me a smibple blender script that creates 2 buttons: one remembers (stores) the object's dimensions and other applies that stored values to the selected object
Here is a simple Blender script that creates two buttons, one to remember the dimensions of the selected object and the other to apply the stored dimensions to the selected object:
import bpy
class DimensionToolsPanel(bpy.types.Panel):
"""Creates a panel with two buttons to remember and apply object dimensions"""
bl_label = "Dimension Tools"
bl_idname = "OBJECT_PT_dimension_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="Remember Dimensions", icon='FILE_TICK')
row = layout.row()
row.operator("object.apply_remembered_dimensions", text="Apply Remembered Dimensions", icon='FILE_REFRESH')
class RememberDimensionsOperator(bpy.types.Operator):
"""Stores the object's dimensions"""
bl_idname = "object.remember_dimensions"
bl_label = "Remember Object's Dimensions"
def execute(self, context):
obj = context.active_object
obj.remember_dimensions = obj.dimensions.copy()
self.report({'INFO'}, "Remembered dimensions for object: " + obj.name)
return {'FINISHED'}
class ApplyRememberedDimensionsOperator(bpy.types.Operator):
"""Applies the remembered dimensions to the object"""
bl_idname = "object.apply_remembered_dimensions"
bl_label = "Apply Remembered Dimensions"
def execute(self, context):
obj = context.active_object
if hasattr(obj, 'remember_dimensions'):
obj.dimensions = obj.remember_dimensions
self.report({'INFO'}, "Applied remembered dimensions to object: " + obj.name)
else:
self.report({'WARNING'}, "No remembered dimensions found for object: " + obj.name)
return {'FINISHED'}
def register():
bpy.utils.register_class(DimensionToolsPanel)
bpy.utils.register_class(RememberDimensionsOperator)
bpy.utils.register_class(ApplyRememberedDimensionsOperator)
def unregister():
bpy.utils.unregister_class(DimensionToolsPanel)
bpy.utils.unregister_class(RememberDimensionsOperator)
bpy.utils.unregister_class(ApplyRememberedDimensionsOperator)
if __name__ == "__main__":
register()
You can put this script in the scripts/addons/
directory, then you can use the script by activating it via the Blender preferences.
This script creates a new panel in the Properties window called "Dimension Tools" that contains two buttons: "Remember Dimensions" and "Apply Remembered Dimensions".