Skip to content
Snippets Groups Projects
add_mesh_vertex.py 4.03 KiB
Newer Older
  • Learn to ignore specific revisions
  • # GPL # Originals by meta-androcto, Pablo Vazquez, Liero, Richard Wilks
    
    import bpy
    import bmesh
    from bpy.props import StringProperty, FloatProperty, BoolProperty, FloatVectorProperty
    
            # add the mesh as an object into the scene with this utility module
    from bpy_extras import object_utils
    
    
    
    def object_origin(width, height, depth):
        """
        This function takes inputs and returns vertex and face arrays.
        no actual mesh data creation is done here.
        """
    
        verts = [(+0.0, +0.0, +0.0)
                 ]
    
        faces = []
    
        # apply size
        for i, v in enumerate(verts):
            verts[i] = v[0] * width, v[1] * depth, v[2] * height
    
        return verts, faces
    
    class AddVert(bpy.types.Operator):
        '''Add a Single Vertice to Edit Mode'''
        bl_idname = "mesh.primitive_vert_add"
        bl_label = "Single Vert"
        bl_options = {'REGISTER', 'UNDO'}
    
        def execute(self, context):
            mesh = bpy.data.meshes.new("Vert")
            mesh.vertices.add(1)
            
            from bpy_extras import object_utils
            object_utils.object_data_add(context, mesh, operator=None)
            bpy.ops.object.mode_set(mode = 'EDIT')
    
            return {'FINISHED'}
    
    class AddEmptyVert(bpy.types.Operator):
        '''Add an Object Origin to Edit Mode'''
        bl_idname = "mesh.primitive_emptyvert_add"
        bl_label = "Empty Object Origin"
        bl_options = {'REGISTER', 'UNDO'}
    
        def execute(self, context):
            mesh = bpy.data.meshes.new("Vert")
            mesh.vertices.add(1)
            
            from bpy_extras import object_utils
            object_utils.object_data_add(context, mesh, operator=None)
            bpy.ops.object.mode_set(mode = 'EDIT')
            bpy.ops.mesh.delete(type='VERT')
    
            return {'FINISHED'}
    
    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')
    
    def Add_Symmetrical_Vert():
    
        bpy.ops.mesh.primitive_plane_add(enter_editmode = True)
    
        sempty = bpy.context.object
        sempty.name = "SymmVert"
    
        # 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.merge(type='CENTER')
    
    class AddSymmetricalEmpty(bpy.types.Operator):
    
        bl_idname = "mesh.primitive_symmetrical_empty_add"
        bl_label = "Add Symmetrical Object Origin"
        bl_description = "Object Origin with a Mirror Modifier for 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'}
    
    class AddSymmetricalVert(bpy.types.Operator):
    
        bl_idname = "mesh.primitive_symmetrical_vert_add"
        bl_label = "Add Symmetrical Origin & Vert"
        bl_description = "Object Origin with a Mirror Modifier for 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_Vert()
            return {'FINISHED'}