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", icon='FILE_REFRESH')
        
class RememberDimensionsOperator(bpy.types.Operator):
    """Stores the object's dimensions"""
    bl_idname = "object.remember_dimensions"
    bl_label = "RETRANSFORM"

    def execute(self, context):
        obj = context.active_object
        obj["remember_dimensions"] = obj.dimensions.copy()
        obj.dimensions = (10,10,10)
        bpy.ops.object.transform_apply(location=False, rotation=False, scale=True)
        obj.dimensions = obj["remember_dimensions"]
        self.report({'INFO'}, "RETRANSFORMED object: " + obj.name)
        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_04.py