Set material and color properties of Blob objects.
[blender-addons-contrib.git] / add_mesh_symmetrical_empty.py
1 # ##### BEGIN GPL LICENSE BLOCK #####
2 #
3 #  This program is free software; you can redistribute it and/or
4 #  modify it under the terms of the GNU General Public License
5 #  as published by the Free Software Foundation; either version 2
6 #  of the License, or (at your option) any later version.
7 #
8 #  This program is distributed in the hope that it will be useful,
9 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
10 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 #  GNU General Public License for more details.
12 #
13 #  You should have received a copy of the GNU General Public License
14 #  along with this program; if not, write to the Free Software Foundation,
15 #  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
16 #
17 # ##### END GPL LICENSE BLOCK #####
18
19 bl_info = {
20     "name": "Add Symmetrical Empty",
21     "author": "Pablo Vazquez",
22     "version": (1, 0, 2),
23     "blender": (2, 64, 0),
24     "location": "View3D > Add > Mesh > Symmetrical Empty",
25     "description": "Add an empty mesh with a Mirror Modifier for quick symmetrical modeling",
26     "warning": "",
27     "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"
28         "Scripts/Add_Mesh/Add_Symmetrical_Empty",
29     "tracker_url": "",
30     "category": "Add Mesh"}
31 '''
32 Adds an empty mesh with a mirror modifier.
33 '''
34
35 import bpy
36 from bpy.props import BoolProperty
37
38 def Add_Symmetrical_Empty():
39
40     bpy.ops.mesh.primitive_plane_add(enter_editmode = True)
41
42     sempty = bpy.context.object
43     sempty.name = "SymmEmpty"
44
45     # check if we have a mirror modifier, otherwise add
46     if (sempty.modifiers and sempty.modifiers['Mirror']):
47         pass
48     else:
49         bpy.ops.object.modifier_add(type ='MIRROR')
50
51     # Delete all!
52     bpy.ops.mesh.select_all(action='TOGGLE')
53     bpy.ops.mesh.select_all(action='TOGGLE')
54     bpy.ops.mesh.delete(type ='VERT')
55
56
57 class AddSymmetricalEmpty(bpy.types.Operator):
58
59     bl_idname = "mesh.primitive_symmetrical_empty_add"
60     bl_label = "Add Symmetrical Empty Mesh"
61     bl_description = "Add an empty mesh with a Mirror Modifier for quick symmetrical modeling"
62     bl_options = {'REGISTER', 'UNDO'}
63
64     def draw(self, context):
65         layout = self.layout
66         mirror = bpy.context.object.modifiers['Mirror']
67
68         layout.prop(mirror,'use_clip', text="Use Clipping")
69
70         layout.label("Mirror Axis")
71         row = layout.row(align=True)
72         row.prop(mirror, "use_x")
73         row.prop(mirror, "use_y")
74         row.prop(mirror, "use_z")
75
76     def execute(self, context):
77         Add_Symmetrical_Empty()
78         return {'FINISHED'}
79
80 ## menu option ##
81 def menu_item(self, context):
82     # only in object mode
83     if bpy.context.mode == "OBJECT":
84         self.layout.operator("mesh.primitive_symmetrical_empty_add",
85             text="Symmetrical Empty", icon="EMPTY_DATA")
86
87 ## register and add it on top of the list ##
88 def register():
89     bpy.utils.register_module(__name__)
90     bpy.types.INFO_MT_mesh_add.prepend(menu_item)
91
92 def unregister():
93     bpy.utils.unregister_module(__name__)
94     bpy.types.INFO_MT_mesh_add.remove(menu_item)
95
96 if __name__ == "__main__":
97     register()