Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2013-05-29 03:07:16 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-05-29 03:07:16 +0400
commitde3686ac25f5a8c19837ac3f79a5ff347dde68af (patch)
treec0df684f526b332206c586e06c88766f8502d699 /release
parentabfee7425b2cbe96a8d7cab5cc475b05912ddb5f (diff)
fix [#34851] "UnitSettings.scale_length" not beeing calculated the same way for all objects
Diffstat (limited to 'release')
-rw-r--r--release/scripts/modules/bpy_extras/object_utils.py18
-rw-r--r--release/scripts/startup/bl_operators/add_mesh_torus.py17
2 files changed, 32 insertions, 3 deletions
diff --git a/release/scripts/modules/bpy_extras/object_utils.py b/release/scripts/modules/bpy_extras/object_utils.py
index 838d22c1262..9381f49d408 100644
--- a/release/scripts/modules/bpy_extras/object_utils.py
+++ b/release/scripts/modules/bpy_extras/object_utils.py
@@ -22,6 +22,9 @@ __all__ = (
"add_object_align_init",
"object_data_add",
"AddObjectHelper",
+ "object_add_grid_scale",
+ "object_add_grid_scale_apply_operator",
+ "object_image_guess",
)
@@ -210,6 +213,21 @@ def object_add_grid_scale(context):
return 1.0
+def object_add_grid_scale_apply_operator(operator, context):
+ """
+ Scale an operators distance values by the grid size.
+ """
+ grid_scale = object_add_grid_scale(context)
+
+ properties = operator.properties
+ properties_def = properties.bl_rna.properties
+ for prop_id in properties_def.keys():
+ if not properties.is_property_set(prop_id):
+ prop_def = properties_def[prop_id]
+ if prop_def.unit == 'LENGTH' and prop_def.subtype == 'DISTANCE':
+ setattr(operator, prop_id, getattr(operator, prop_id) * grid_scale)
+
+
def object_image_guess(obj, bm=None):
"""
Return a single image used by the object,
diff --git a/release/scripts/startup/bl_operators/add_mesh_torus.py b/release/scripts/startup/bl_operators/add_mesh_torus.py
index 948cb39f5b1..6b2f8be49d1 100644
--- a/release/scripts/startup/bl_operators/add_mesh_torus.py
+++ b/release/scripts/startup/bl_operators/add_mesh_torus.py
@@ -93,12 +93,16 @@ class AddTorus(Operator, object_utils.AddObjectHelper):
"center of the cross sections"),
min=0.01, max=100.0,
default=1.0,
+ subtype='DISTANCE',
+ unit='LENGTH',
)
minor_radius = FloatProperty(
name="Minor Radius",
description="Radius of the torus' cross section",
min=0.01, max=100.0,
default=0.25,
+ subtype='DISTANCE',
+ unit='LENGTH',
)
major_segments = IntProperty(
name="Major Segments",
@@ -122,24 +126,31 @@ class AddTorus(Operator, object_utils.AddObjectHelper):
description="Total Exterior Radius of the torus",
min=0.01, max=100.0,
default=1.0,
+ subtype='DISTANCE',
+ unit='LENGTH',
)
abso_minor_rad = FloatProperty(
name="Inside Radius",
description="Total Interior Radius of the torus",
min=0.01, max=100.0,
default=0.5,
+ subtype='DISTANCE',
+ unit='LENGTH',
)
+ def invoke(self, context, event):
+ object_utils.object_add_grid_scale_apply_operator(self, context)
+ return self.execute(context)
+
def execute(self, context):
- grid_scale = object_utils.object_add_grid_scale(context)
if self.use_abso is True:
extra_helper = (self.abso_major_rad - self.abso_minor_rad) * 0.5
self.major_radius = self.abso_minor_rad + extra_helper
self.minor_radius = extra_helper
- verts_loc, faces = add_torus(self.major_radius * grid_scale,
- self.minor_radius * grid_scale,
+ verts_loc, faces = add_torus(self.major_radius,
+ self.minor_radius,
self.major_segments,
self.minor_segments)