[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44875] trunk/blender/release/scripts: Changes to python-defined add object operators:

Sergey Sharybin sergey.vfx at gmail.com
Wed Mar 14 09:56:10 CET 2012


Revision: 44875
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44875
Author:   nazgul
Date:     2012-03-14 08:55:57 +0000 (Wed, 14 Mar 2012)
Log Message:
-----------
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.

Modified Paths:
--------------
    trunk/blender/release/scripts/modules/bpy_extras/object_utils.py
    trunk/blender/release/scripts/startup/bl_operators/add_mesh_torus.py

Modified: trunk/blender/release/scripts/modules/bpy_extras/object_utils.py
===================================================================
--- trunk/blender/release/scripts/modules/bpy_extras/object_utils.py	2012-03-14 08:14:03 UTC (rev 44874)
+++ trunk/blender/release/scripts/modules/bpy_extras/object_utils.py	2012-03-14 08:55:57 UTC (rev 44875)
@@ -21,13 +21,16 @@
 __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):
     """
     Return a matrix using the operator settings and view context.
@@ -120,7 +123,8 @@
             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 @@
             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',
+            )

Modified: trunk/blender/release/scripts/startup/bl_operators/add_mesh_torus.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_operators/add_mesh_torus.py	2012-03-14 08:14:03 UTC (rev 44874)
+++ trunk/blender/release/scripts/startup/bl_operators/add_mesh_torus.py	2012-03-14 08:55:57 UTC (rev 44875)
@@ -21,7 +21,15 @@
 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 @@
 
     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 @@
             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 @@
         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'}




More information about the Bf-blender-cvs mailing list