Skip to content
Snippets Groups Projects
add_mesh_symmetrical_empty.py 3.06 KiB
Newer Older
  • Learn to ignore specific revisions
  • # ##### BEGIN GPL LICENSE BLOCK #####
    #
    #  This program is free software; you can redistribute it and/or
    #  modify it under the terms of the GNU General Public License
    #  as published by the Free Software Foundation; either version 2
    #  of the License, or (at your option) any later version.
    #
    #  This program is distributed in the hope that it will be useful,
    #  but WITHOUT ANY WARRANTY; without even the implied warranty of
    #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    #  GNU General Public License for more details.
    #
    #  You should have received a copy of the GNU General Public License
    #  along with this program; if not, write to the Free Software Foundation,
    #  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    #
    # ##### END GPL LICENSE BLOCK #####
    
    bl_info = {
        "name": "Add Symmetrical Empty",
    
        "author": "Pablo Vazquez",
        "version": (1, 0, 2),
    
        "blender": (2, 64, 0),
    
        "location": "View3D > Add > Mesh > Symmetrical Empty",
        "description": "Add an empty mesh with a Mirror Modifier for quick symmetrical modeling",
        "warning": "",
    
        "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"
    
            "Scripts/Add_Mesh/Add_Symmetrical_Empty",
        "tracker_url": "",
        "category": "Add Mesh"}
    '''
    Adds an empty mesh with a mirror modifier.
    
    
    import bpy
    from bpy.props import BoolProperty
    
    def Add_Symmetrical_Empty():
    
        bpy.ops.mesh.primitive_plane_add(enter_editmode = True)
    
        sempty = bpy.context.object
        sempty.name = "SymmEmpty"
    
        # check if we have a mirror modifier, otherwise add
        if (sempty.modifiers and sempty.modifiers['Mirror']):
            pass
        else:
            bpy.ops.object.modifier_add(type ='MIRROR')
    
        # Delete all!
        bpy.ops.mesh.select_all(action='TOGGLE')
        bpy.ops.mesh.select_all(action='TOGGLE')
        bpy.ops.mesh.delete(type ='VERT')
    
    
    class AddSymmetricalEmpty(bpy.types.Operator):
    
        bl_idname = "mesh.primitive_symmetrical_empty_add"
        bl_label = "Add Symmetrical Empty Mesh"
        bl_description = "Add an empty mesh with a Mirror Modifier for quick symmetrical modeling"
        bl_options = {'REGISTER', 'UNDO'}
    
        def draw(self, context):
            layout = self.layout
            mirror = bpy.context.object.modifiers['Mirror']
    
            layout.prop(mirror,'use_clip', text="Use Clipping")
    
            layout.label("Mirror Axis")
            row = layout.row(align=True)
            row.prop(mirror, "use_x")
            row.prop(mirror, "use_y")
            row.prop(mirror, "use_z")
    
        def execute(self, context):
            Add_Symmetrical_Empty()
            return {'FINISHED'}
    
    ## menu option ##
    def menu_item(self, context):
        # only in object mode
        if bpy.context.mode == "OBJECT":
            self.layout.operator("mesh.primitive_symmetrical_empty_add",
                text="Symmetrical Empty", icon="EMPTY_DATA")
    
    ## register and add it on top of the list ##
    def register():
        bpy.utils.register_module(__name__)
        bpy.types.INFO_MT_mesh_add.prepend(menu_item)
    
    def unregister():
        bpy.utils.unregister_module(__name__)
        bpy.types.INFO_MT_mesh_add.remove(menu_item)
    
    if __name__ == "__main__":
        register()