diff --git a/release/scripts/modules/bpy_extras/object_utils.py b/release/scripts/modules/bpy_extras/object_utils.py index d08b98772f5..a4c9f472077 100644 --- a/release/scripts/modules/bpy_extras/object_utils.py +++ b/release/scripts/modules/bpy_extras/object_utils.py @@ -209,6 +209,7 @@ def object_add_grid_scale_apply_operator(operator, context): """ Scale an operators distance values by the grid size. """ + old_values = dict() grid_scale = object_add_grid_scale(context) properties = operator.properties @@ -217,8 +218,10 @@ def object_add_grid_scale_apply_operator(operator, context): if not properties.is_property_set(prop_id): prop_def = properties_def[prop_id] if prop_def.unit == 'LENGTH' and prop_def.subtype == 'DISTANCE': + old_values[prop_id] = getattr(operator, prop_id) setattr(operator, prop_id, getattr(operator, prop_id) * grid_scale) + return old_values def object_image_guess(obj, bm=None): diff --git a/release/scripts/startup/bl_operators/add_mesh_torus.py b/release/scripts/startup/bl_operators/add_mesh_torus.py index e4495127ce7..e6a1f68ae61 100644 --- a/release/scripts/startup/bl_operators/add_mesh_torus.py +++ b/release/scripts/startup/bl_operators/add_mesh_torus.py @@ -242,8 +242,15 @@ class AddTorus(Operator, object_utils.AddObjectHelper): col.prop(self, "abso_minor_rad", text="") def invoke(self, context, event): - object_utils.object_add_grid_scale_apply_operator(self, context) - return self.execute(context) + old_values = object_utils.object_add_grid_scale_apply_operator(self, context) + ret = self.execute(context) + + #We need to restore the old values so that we do not reapply the scaling + #on already scaled values the next time this operator is invoked + for prop_id in old_values: + setattr(self, prop_id, old_values[prop_id]) + + return ret def execute(self, context):