Python: Traceback (most recent call last): File "…", line 32, in execute AttributeError: 'Object' object has no attribute 'remember_dimensions'
I apologize for the confusion caused by my previous response. The error message you are getting is because the script is trying to access an attribute 'remember_dimensions'
on the object that does not exist. In order to fix the issue, you can add the following line before storing the dimensions:
obj["remember_dimensions"] = obj.dimensions.copy()
This line creates a new attribute 'remember_dimensions'
on the object and assigns the current dimensions to it.
Here's the full corrected code:
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 "remember_dimensions" in obj:
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()