10
$\begingroup$

In "Mirror changes to side of cube across all six sides", it is advised to add an Empty. However, I cannot find that option in Blender 2.73. How can I add an Empty in Blender 2.73?

When I do a Shift+A on the 3D View the context menu displays:

[Mesh||Plane|Cube|Circle|UV Sphere|Ico Sphere|Cylinder|Cone|Torus||Grid|Monkey]

$\endgroup$
10
$\begingroup$

It does not displays all of them, when you are working in Edit-Mode. Switch to Object-Mode to add an empty.

$\endgroup$
20
$\begingroup$

Shift+A > Empty > Plain Axis

Add Empty

Note that you must be in Object mode for this to work, in Edit mode you may only add mesh elements.

$\endgroup$
  • $\begingroup$ As in the update of my question, Shift+A only displays inner elements of the Mesh menu item. $\endgroup$ – bmm Feb 28 '15 at 7:04
  • 3
    $\begingroup$ While in edit mode add only lists mesh items. Other options are visible in object mode. $\endgroup$ – sambler Feb 28 '15 at 7:25
8
$\begingroup$

This problem bugged me for a while too, but it is not specific to Blender 2.73 it goes way back to the first Blenders I used 2.5x (and maybe earlier). It's not a bug, but in my opinion it is a missing feature.

In Edit Mode the default setup has no feature to add an Empty. An Empty is an object in its own right, adding an object while in Edit Mode may make sense to us, but to Blender it doesn't.

the available options are all meshes (verts+edges+faces)

A solution is to:

  • move the 3d cursor to where you want the Empty,
  • drop out of Edit Mode into Object Mode
  • add the Empty
  • go back to your original object and continue working.

3 years ago I wrote a small Python add-on that lets me stay in Edit Mode and add an Empty at a selected vertex, or multiple empties when multiple vertices had been selected. It does this by collecting the location data and jumping out of edit mode, then adds the Empties to the scene, then returns me back to the original object in Edit Mode.

enter image description here

edit v1.1 for 2.73+

here's an easy to install one file version of the addon:
objects_place_empty_in_edit_mode.py

here the code inline incase it gets waxed on github:

import bpy
import bmesh
from mathutils import Vector

bl_info = {
    'name': 'Add Empties',
    'author': 'Dealga McArdle (zeffii)',
    'version': (1, 1, 2),
    'blender': (2, 7, 3),
    'location': 'Add > Empties',
    'description': 'adds new Empty while in edit mode',
    'wiki_url': '',
    'tracker_url': '',
    'category': 'Mesh'}


def add_to_selected(context, kind):
    D = bpy.data
    scn = context.scene
    obj = context.edit_object
    obj_name = obj.name
    mesh = obj.data

    bm = bmesh.from_edit_mesh(mesh)

    def add_empty(coordinate, kind='PLAIN_AXES'):
        empty = D.objects.new('MT_' + obj_name, None)
        empty.location = coordinate
        empty.empty_draw_size = 0.45
        empty.empty_draw_type = kind
        scn.objects.link(empty)
        scn.update()

    coordinates = [v.co[:] for v in bm.verts if v.select]

    # must be in object mode to add objects to the scene.
    myob = D.objects[obj_name]
    bpy.ops.object.mode_set(mode='OBJECT')

    if not coordinates:
        coordinate = context.scene.cursor_location
        add_empty(coordinate, kind)
    else:
        for co in coordinates:
            vert_coordinate = myob.matrix_world * Vector(co)
            add_empty(vert_coordinate, kind)

    # set original object to active, selects it, place back into editmode
    scn.objects.active = myob
    myob.select = True
    bpy.ops.object.mode_set(mode='EDIT')
    return


class AddEmpties(bpy.types.Operator):
    """Add a vertex to 3d cursor location"""
    bl_idname = "object.empties_add"
    bl_label = "Add Empties"
    bl_options = {'REGISTER', 'UNDO'}

    kind = bpy.props.StringProperty(default='PLAIN_AXES')

    def execute(self, context):
        add_to_selected(context, self.kind)
        return {'FINISHED'}


class EDITMODE_MT_PlaceEmpties(bpy.types.Menu):
    bl_label = "Adding Empties.."

    def draw(self, context):
        options = [
            'PLAIN_AXES', 'ARROWS', 'SINGLE_ARROW',
            'CIRCLE', 'CUBE', 'SPHERE', 'CONE', 'IMAGE']

        layout = self.layout
        for opt in options:
            layout.operator("object.empties_add", text=opt).kind = opt


def menu_func(self, context):
    self.layout.menu("EDITMODE_MT_PlaceEmpties", icon='EMPTY_DATA')


def register():
    bpy.utils.register_module(__name__)
    bpy.types.INFO_MT_mesh_add.prepend(menu_func)


def unregister():
    bpy.utils.unregister_module(__name__)
    bpy.types.INFO_MT_mesh_add.remove(menu_func)

if __name__ == "__main__":
    register()
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.