[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [23764] trunk/blender: - add torus back from 2.4x as an operator
Campbell Barton
ideasman42 at gmail.com
Sat Oct 10 23:23:22 CEST 2009
Revision: 23764
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23764
Author: campbellbarton
Date: 2009-10-10 23:23:20 +0200 (Sat, 10 Oct 2009)
Log Message:
-----------
- add torus back from 2.4x as an operator
bpy.ops.mesh.primitive_torus_add(major_radius=1, minor_radius=0.25, major_segments=48, minor_segments=16)
- experemental dynamic menus, used for INFO_MT_file, INFO_MT_file_import, INFO_MT_file_export and INFO_MT_mesh_add. these can have items added from python.
eg.
- removed OBJECT_OT_mesh_add, use the python add menu instead.
- made mesh primitive ops - MESH_OT_primitive_plane_add, ...cube_add, etc. work in object mode.
- RNA scene.active_object wrapped
- bugfix [#19466] 2.5: Tweak menu only available for mesh objects added within Edit Mode
ED_object_exit_editmode was always doing an undo push, made this optional using the existing flag - EM_DO_UNDO, called everywhere except when adding primitives.
Modified Paths:
--------------
trunk/blender/release/scripts/io/export_3ds.py
trunk/blender/release/scripts/io/export_fbx.py
trunk/blender/release/scripts/io/export_mdd.py
trunk/blender/release/scripts/io/export_obj.py
trunk/blender/release/scripts/io/export_ply.py
trunk/blender/release/scripts/io/export_x3d.py
trunk/blender/release/scripts/io/import_3ds.py
trunk/blender/release/scripts/io/import_obj.py
trunk/blender/release/scripts/ui/space_info.py
trunk/blender/source/blender/editors/curve/editcurve.c
trunk/blender/source/blender/editors/include/ED_object.h
trunk/blender/source/blender/editors/mesh/editmesh_add.c
trunk/blender/source/blender/editors/mesh/mesh_ops.c
trunk/blender/source/blender/editors/mesh/meshtools.c
trunk/blender/source/blender/editors/object/object_add.c
trunk/blender/source/blender/editors/object/object_edit.c
trunk/blender/source/blender/editors/object/object_intern.h
trunk/blender/source/blender/editors/object/object_ops.c
trunk/blender/source/blender/editors/screen/screen_ops.c
trunk/blender/source/blender/editors/space_outliner/outliner.c
trunk/blender/source/blender/makesrna/intern/rna_scene.c
trunk/blender/source/blender/makesrna/intern/rna_texture.c
trunk/blender/source/blender/python/intern/bpy_operator_wrap.c
trunk/blender/source/blender/windowmanager/intern/wm_files.c
Added Paths:
-----------
trunk/blender/release/scripts/io/add_mesh_torus.py
trunk/blender/release/scripts/modules/dynamic_menu.py
Added: trunk/blender/release/scripts/io/add_mesh_torus.py
===================================================================
--- trunk/blender/release/scripts/io/add_mesh_torus.py (rev 0)
+++ trunk/blender/release/scripts/io/add_mesh_torus.py 2009-10-10 21:23:20 UTC (rev 23764)
@@ -0,0 +1,98 @@
+
+import bpy, Mathutils
+from math import cos, sin, pi, radians
+
+
+def add_torus(PREF_MAJOR_RAD, PREF_MINOR_RAD, PREF_MAJOR_SEG, PREF_MINOR_SEG):
+ Vector = Mathutils.Vector
+ Quaternion = Mathutils.Quaternion
+
+ PI_2= pi*2
+ Z_AXIS = 0,0,1
+
+ verts = []
+ faces = []
+ i1 = 0
+ tot_verts = PREF_MAJOR_SEG * PREF_MINOR_SEG
+ for major_index in range(PREF_MAJOR_SEG):
+ verts_tmp = []
+ quat = Quaternion( Z_AXIS, (major_index/PREF_MAJOR_SEG)*PI_2)
+
+ for minor_index in range(PREF_MINOR_SEG):
+ angle = 2*pi*minor_index/PREF_MINOR_SEG
+
+ vec = Vector(PREF_MAJOR_RAD+(cos(angle)*PREF_MINOR_RAD), 0, (sin(angle)*PREF_MINOR_RAD)) * quat
+ verts.extend([vec.x, vec.y, vec.z])
+
+ if minor_index+1==PREF_MINOR_SEG:
+ i2 = (major_index)*PREF_MINOR_SEG
+ i3 = i1 + PREF_MINOR_SEG
+ i4 = i2 + PREF_MINOR_SEG
+
+ else:
+ i2 = i1 + 1
+ i3 = i1 + PREF_MINOR_SEG
+ i4 = i3 + 1
+
+ if i2>=tot_verts: i2 = i2-tot_verts
+ if i3>=tot_verts: i3 = i3-tot_verts
+ if i4>=tot_verts: i4 = i4-tot_verts
+
+ # stupid eekadoodle
+ if i2: faces.extend( [i1,i3,i4,i2] )
+ else: faces.extend( [i2,i1,i3,i4] )
+
+ i1+=1
+
+ return verts, faces
+
+
+class MESH_OT_primitive_torus_add(bpy.types.Operator):
+ '''Add a torus mesh.'''
+ __idname__ = "mesh.primitive_torus_add"
+ __label__ = "Add Torus"
+ __register__ = True
+ __undo__ = True
+ __props__ = [
+ bpy.props.FloatProperty(attr="major_radius", name="Major Radius", description="Number of segments for the main ring of the torus", default= 1.0, min= 0.01, max= 100.0),
+ bpy.props.FloatProperty(attr="minor_radius", name="Minor Radius", description="Number of segments for the minor ring of the torus", default= 0.25, min= 0.01, max= 100.0),
+ bpy.props.IntProperty(attr="major_segments", name="Major Segments", description="Number of segments for the main ring of the torus", default= 48, min= 3, max= 256),
+ bpy.props.IntProperty(attr="minor_segments", name="Minor Segments", description="Number of segments for the minor ring of the torus", default= 16, min= 3, max= 256),
+ ]
+
+ def execute(self, context):
+ verts_loc, faces = add_torus(self.major_radius, self.minor_radius, self.major_segments, self.minor_segments)
+
+ me= bpy.data.add_mesh("Torus")
+
+ me.add_geometry(int(len(verts_loc)/3), 0, int(len(faces)/4))
+ me.verts.foreach_set("co", verts_loc)
+ me.faces.foreach_set("verts_raw", faces)
+
+ sce = context.scene
+
+ # ugh
+ for ob in sce.objects:
+ ob.selected = False
+
+ me.update()
+ ob= bpy.data.add_object('MESH', "Torus")
+ ob.data= me
+ context.scene.add_object(ob)
+ context.scene.active_object = ob
+ ob.selected = True
+
+ ob.location = tuple(context.scene.cursor_location)
+
+ return ('FINISHED',)
+
+# Register the operator
+bpy.ops.add(MESH_OT_primitive_torus_add)
+
+# Add to a menu
+import dynamic_menu
+import space_info
+menu_item = dynamic_menu.add(bpy.types.INFO_MT_mesh_add, (lambda self, context: self.layout.itemO("mesh.primitive_torus_add", text="Add Torus")) )
+
+if __name__ == "__main__":
+ bpy.ops.mesh.primitive_torus_add()
\ No newline at end of file
Modified: trunk/blender/release/scripts/io/export_3ds.py
===================================================================
--- trunk/blender/release/scripts/io/export_3ds.py 2009-10-10 18:42:20 UTC (rev 23763)
+++ trunk/blender/release/scripts/io/export_3ds.py 2009-10-10 21:23:20 UTC (rev 23764)
@@ -1,12 +1,4 @@
-#!BPY
# coding: utf-8
-"""
-Name: '3D Studio (.3ds)...'
-Blender: 243
-Group: 'Export'
-Tooltip: 'Export to 3DS file format (.3ds).'
-"""
-
__author__ = ["Campbell Barton", "Bob Holcomb", "Richard Lärkäng", "Damien McGinnes", "Mark Stijnman"]
__url__ = ("blenderartists.org", "www.blender.org", "www.gametutorials.com", "lib3ds.sourceforge.net/")
__version__ = "0.90a"
@@ -1100,9 +1092,7 @@
# # save_3ds('/test_b.3ds')
class EXPORT_OT_3ds(bpy.types.Operator):
- '''
- 3DS Exporter
- '''
+ '''Export to 3DS file format (.3ds).'''
__idname__ = "export.3ds"
__label__ = 'Export 3DS'
@@ -1128,3 +1118,8 @@
return context.active_object != None
bpy.ops.add(EXPORT_OT_3ds)
+
+# Add to a menu
+import dynamic_menu
+menu_func = lambda self, context: self.layout.itemO("export.3ds", text="Autodesk 3DS...")
+menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func)
Modified: trunk/blender/release/scripts/io/export_fbx.py
===================================================================
--- trunk/blender/release/scripts/io/export_fbx.py 2009-10-10 18:42:20 UTC (rev 23763)
+++ trunk/blender/release/scripts/io/export_fbx.py 2009-10-10 21:23:20 UTC (rev 23764)
@@ -1,10 +1,3 @@
-#!BPY
-"""
-Name: 'Autodesk FBX (.fbx)...'
-Blender: 249
-Group: 'Export'
-Tooltip: 'Selection to an ASCII Autodesk FBX '
-"""
__author__ = "Campbell Barton"
__url__ = ['www.blender.org', 'blenderartists.org']
__version__ = "1.2"
@@ -3341,9 +3334,7 @@
# GLOBALS.clear()
class EXPORT_OT_fbx(bpy.types.Operator):
- '''
- Operator documentation text, will be used for the operator tooltip and python docs.
- '''
+ '''Selection to an ASCII Autodesk FBX'''
__idname__ = "export.fbx"
__label__ = "Export FBX"
@@ -3451,3 +3442,10 @@
# SMALL or COSMETICAL
# - find a way to get blender version, and put it in bpy.util?, old was Blender.Get('version')
+
+
+# Add to a menu
+import dynamic_menu
+menu_func = lambda self, context: self.layout.itemO("export.fbx", text="Autodesk FBX...")
+menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func)
+
Modified: trunk/blender/release/scripts/io/export_mdd.py
===================================================================
--- trunk/blender/release/scripts/io/export_mdd.py 2009-10-10 18:42:20 UTC (rev 23763)
+++ trunk/blender/release/scripts/io/export_mdd.py 2009-10-10 21:23:20 UTC (rev 23764)
@@ -1,12 +1,4 @@
-#!BPY
-"""
- Name: 'Vertex Keyframe Animation (.mdd)...'
- Blender: 242
- Group: 'Export'
- Tooltip: 'Animated mesh to MDD vertex keyframe file.'
-"""
-
__author__ = "Bill L.Nieuwendorp"
__bpydoc__ = """\
This script Exports Lightwaves MotionDesigner format.
@@ -180,9 +172,13 @@
bpy.ops.add(EXPORT_OT_mdd)
+# Add to a menu
+import dynamic_menu
+menu_func = lambda self, context: self.layout.itemO("export.mdd", text="Vertex Keyframe Animation (.mdd)...")
+menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func)
+
if __name__=='__main__':
#if not pack:
# Draw.PupMenu('Error%t|This script requires a full python install')
#Blender.Window.FileSelector(mdd_export_ui, 'EXPORT MDD', sys.makename(ext='.mdd'))
bpy.ops.EXPORT_OT_mdd(path="/tmp/test.mdd")
-
Modified: trunk/blender/release/scripts/io/export_obj.py
===================================================================
--- trunk/blender/release/scripts/io/export_obj.py 2009-10-10 18:42:20 UTC (rev 23763)
+++ trunk/blender/release/scripts/io/export_obj.py 2009-10-10 21:23:20 UTC (rev 23764)
@@ -906,14 +906,16 @@
# orig_scene.makeCurrent()
# Window.WaitCursor(0)
-
+
+'''
+Currently the exporter lacks these features:
+* nurbs
+* multiple scene export (only active scene is written)
+* particles
+'''
class EXPORT_OT_obj(bpy.types.Operator):
- '''
- Currently the exporter lacks these features:
- * nurbs
- * multiple scene export (only active scene is written)
- * particles
- '''
+ '''Save a Wavefront OBJ File'''
+
__idname__ = "export.obj"
__label__ = 'Export OBJ'
@@ -984,6 +986,10 @@
bpy.ops.add(EXPORT_OT_obj)
+import dynamic_menu
+menu_func = lambda self, context: self.layout.itemO("export.obj", text="Wavefront (.obj)...")
+menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func)
+
if __name__ == "__main__":
bpy.ops.EXPORT_OT_obj(filename="/tmp/test.obj")
Modified: trunk/blender/release/scripts/io/export_ply.py
===================================================================
--- trunk/blender/release/scripts/io/export_ply.py 2009-10-10 18:42:20 UTC (rev 23763)
+++ trunk/blender/release/scripts/io/export_ply.py 2009-10-10 21:23:20 UTC (rev 23764)
@@ -273,7 +273,9 @@
bpy.ops.add(EXPORT_OT_ply)
+import dynamic_menu
+menu_func = lambda self, context: self.layout.itemO("export.ply", text="Stanford (.ply)...")
+menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func)
+
if __name__ == "__main__":
bpy.ops.EXPORT_OT_ply(path="/tmp/test.ply")
-
-
Modified: trunk/blender/release/scripts/io/export_x3d.py
===================================================================
--- trunk/blender/release/scripts/io/export_x3d.py 2009-10-10 18:42:20 UTC (rev 23763)
+++ trunk/blender/release/scripts/io/export_x3d.py 2009-10-10 21:23:20 UTC (rev 23764)
@@ -1,10 +1,3 @@
-#!BPY
-""" Registration info for Blender menus:
-Name: 'X3D Extensible 3D (.x3d)...'
-Blender: 245
-Group: 'Export'
-Tooltip: 'Export selection to Extensible 3D file (.x3d)'
-"""
__author__ = ("Bart", "Campbell Barton")
__email__ = ["Bart, bart:neeneenee*de"]
@@ -1204,9 +1197,7 @@
# Blender.Window.FileSelector(x3d_export_ui,"Export X3D", Blender.Get('filename').replace('.blend', '.x3d'))
class EXPORT_OT_x3d(bpy.types.Operator):
- '''
- X3D Exporter
- '''
+ '''Export selection to Extensible 3D file (.x3d)'''
__idname__ = "export.x3d"
__label__ = 'Export X3D'
@@ -1229,12 +1220,12 @@
wm = context.manager
wm.add_fileselect(self.__operator__)
return ('RUNNING_MODAL',)
-
- def poll(self, context): # Poll isnt working yet
- print("Poll")
- return context.active_object != None
bpy.ops.add(EXPORT_OT_x3d)
+import dynamic_menu
+menu_func = lambda self, context: self.layout.itemO("export.x3d", text="X3D Extensible 3D (.x3d)...")
+menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func)
+
# NOTES
# - blender version is hardcoded
Modified: trunk/blender/release/scripts/io/import_3ds.py
===================================================================
--- trunk/blender/release/scripts/io/import_3ds.py 2009-10-10 18:42:20 UTC (rev 23763)
+++ trunk/blender/release/scripts/io/import_3ds.py 2009-10-10 21:23:20 UTC (rev 23764)
@@ -1,10 +1,3 @@
-#!BPY
-"""
-Name: '3D Studio (.3ds)...'
-Blender: 244
-Group: 'Import'
-Tooltip: 'Import from 3DS file format (.3ds)'
-"""
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list