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:
authorSergey Sharybin <sergey.vfx@gmail.com>2012-03-14 12:55:57 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2012-03-14 12:55:57 +0400
commitb745621038a0e66d1c9d1fd26e99b46a1538b054 (patch)
tree6f162b9c74c793603c853b14a8ee36ef9f4671ef /release
parentbbb76ccb25f104764c70e0229ed503a4ccba9b4e (diff)
Changes to python-defined add object operators:
- Reset rotation value when toggling Align to View property which correctly re-alignes object on continuous property toggling and fixes issue #30510: [2.62] Add Mesh - Torus - "Align to View" cannot be switched back when toggling off - Moves all generic object-add properties into a helper function which might be easily re-used.
Diffstat (limited to 'release')
-rw-r--r--release/scripts/modules/bpy_extras/object_utils.py26
-rw-r--r--release/scripts/startup/bl_operators/add_mesh_torus.py32
2 files changed, 34 insertions, 24 deletions
diff --git a/release/scripts/modules/bpy_extras/object_utils.py b/release/scripts/modules/bpy_extras/object_utils.py
index 9175d1f9792..16e568dab99 100644
--- a/release/scripts/modules/bpy_extras/object_utils.py
+++ b/release/scripts/modules/bpy_extras/object_utils.py
@@ -21,12 +21,15 @@
__all__ = (
"add_object_align_init",
"object_data_add",
+ "object_generic_transform_prop",
)
import bpy
import mathutils
+from bpy.props import (BoolProperty, FloatVectorProperty)
+
def add_object_align_init(context, operator):
"""
@@ -120,7 +123,8 @@ def object_data_add(context, obdata, operator=None, use_active_layer=True):
base.layers_from_view(context.space_data)
base.layers[scene.active_layer] = True
else:
- base.layers = [True if i == scene.active_layer else False for i in range(len(scene.layers))]
+ base.layers = [True if i == scene.active_layer
+ else False for i in range(len(scene.layers))]
if v3d:
base.layers_from_view(context.space_data)
@@ -163,3 +167,23 @@ def object_data_add(context, obdata, operator=None, use_active_layer=True):
bpy.ops.object.mode_set(mode='EDIT')
return base
+
+
+class AddObjectHelper:
+ def view_align_update_callback(self, context):
+ if not self.view_align:
+ self.rotation.zero()
+
+ view_align = BoolProperty(
+ name="Align to View",
+ default=False,
+ update=view_align_update_callback,
+ )
+ location = FloatVectorProperty(
+ name="Location",
+ subtype='TRANSLATION',
+ )
+ rotation = FloatVectorProperty(
+ name="Rotation",
+ subtype='EULER',
+ )
diff --git a/release/scripts/startup/bl_operators/add_mesh_torus.py b/release/scripts/startup/bl_operators/add_mesh_torus.py
index 5b28cdf44ae..23e2ddfe209 100644
--- a/release/scripts/startup/bl_operators/add_mesh_torus.py
+++ b/release/scripts/startup/bl_operators/add_mesh_torus.py
@@ -21,6 +21,14 @@ import bpy
from bpy.types import Operator
import mathutils
+from bpy.props import (FloatProperty,
+ IntProperty,
+ BoolProperty,
+ FloatVectorProperty,
+ )
+
+from bpy_extras import object_utils
+
def add_torus(major_rad, minor_rad, major_seg, minor_seg):
from math import cos, sin, pi
@@ -75,14 +83,8 @@ def add_torus(major_rad, minor_rad, major_seg, minor_seg):
return verts, faces
-from bpy.props import (FloatProperty,
- IntProperty,
- BoolProperty,
- FloatVectorProperty,
- )
-
-class AddTorus(Operator):
+class AddTorus(Operator, object_utils.AddObjectHelper):
'''Add a torus mesh'''
bl_idname = "mesh.primitive_torus_add"
bl_label = "Add Torus"
@@ -131,22 +133,7 @@ class AddTorus(Operator):
default=0.5,
)
- # generic transform props
- view_align = BoolProperty(
- name="Align to View",
- default=False,
- )
- location = FloatVectorProperty(
- name="Location",
- subtype='TRANSLATION',
- )
- rotation = FloatVectorProperty(
- name="Rotation",
- subtype='EULER',
- )
-
def execute(self, context):
-
if self.use_abso == True:
extra_helper = (self.abso_major_rad - self.abso_minor_rad) * 0.5
self.major_radius = self.abso_minor_rad + extra_helper
@@ -166,7 +153,6 @@ class AddTorus(Operator):
mesh.faces.foreach_set("vertices_raw", faces)
mesh.update()
- from bpy_extras import object_utils
object_utils.object_data_add(context, mesh, operator=self)
return {'FINISHED'}