I'm in edit mode for this. I don't think I need an image for this question.

I just want to move a mesh by selecting ONE of its vertices and typing in the new (x,y,z) coordinates. Selecting the G (Grab) tool doesn't do the job.

Also, while at it, how do you select ONE edge of a mesh, type in a new length for that selected edge, and the rest of the mesh would scale accordingly?

I'm not having any luck finding an add-on for what I need.

  • 1
    $\begingroup$ Regarding to your second question I think it's possible using a workaround. Scale your edge as you wish, remember the scale factor, undo action, select whole mesh and press S > n, where n is that factor. $\endgroup$
    – Mr Zak
    Commented Nov 7, 2015 at 0:02
  • $\begingroup$ Thank you for that. I actually take existing length divided by desired length, on an actual calculator outside Blender (SMH, but that will do for now), and then scale the whole thing by that factor. $\endgroup$ Commented Nov 7, 2015 at 2:17
  • 1
    $\begingroup$ Please post different questions separately, 1 question per post. $\endgroup$
    – PGmath
    Commented Nov 10, 2015 at 14:41

3 Answers 3


If you move the object in Object Mode, it moves all at once, but if you want to use Edit Mode for whatever reason, you could:

  1. Turn on Proportional Editing (either press O or select it at the bottom of the 3D view) move the vertex by using the 'Grab Tool' (G) and then typing In the coordinates into the 'options panel' of the Toolshelf (T)

  2. Once the vertex is where you want it to be, scroll down in the same panel to the proportional editing section, and increase the 'Proportional Size' until the entire mesh moves to the desired location

  • 1
    $\begingroup$ Welcome to Blender.SE! I would recommend setting the falloff type to constant so that the other vertices don't experience minuscule translation. $\endgroup$
    – PGmath
    Commented Nov 10, 2015 at 14:35

You can achieve this with this addon. If you're not sure how to install an addon from file, see this answer.

After you install this addon, if you select an object and go to edit mode, you will see a new tab in the Tool Shelf, called "Vertex Mover". Select a vertex and you'll be able to see its location in world (global) space, and to type in the desired new location for this vertex in the box. When you press the Move button, the entire object will move.

In the example below, you can see it used to move a vertex from (1,1,1) to (2,2,0), and the entire object with it.

enter image description here

bl_info = {
    "name"        : "Move object with Vert",
    "blender"     : (2, 74, 0),
    "version"     : (0, 0, 0, 1),
    "location"    : "3D View > Toolbox",
    "description" : "Move object with Vert",
    "category"    : "Object"

import bpy, bmesh
from mathutils import Vector

class VertexMoverPropGroup( bpy.types.PropertyGroup ):
    newLoc = bpy.props.FloatVectorProperty(
        name        = "New Location",
        description = "New location for selected vertex",
        default     = ( 0.0, 0.0, 0.0 ),
        precision   = 2,
        subtype     = 'XYZ',
        unit        = 'LENGTH',
        size        = 3

def get_current_vertex_loc():
    o = bpy.context.object
    if o:
        if o.mode == 'EDIT':
            bm = bmesh.from_edit_mesh( o.data )
            activeElement = bm.select_history.active
            if activeElement and type( activeElement ) == bmesh.types.BMVert:
                return o.matrix_world * bm.select_history.active.co
    return False    

class VertexMover( bpy.types.Operator ):
    """ Move vertex to desired position and object with it """
    bl_idname      = "object.vertex_and_object_mover"
    bl_label       = "Vertex Mover"
    bl_description = "Move vertex to desired position and object with it"
    bl_options     = {'REGISTER', 'UNDO'}

    def poll( self, context ):
        return get_current_vertex_loc()

    def execute( self, context ):
        o     = context.object
        newLoc = context.scene.vertex_mover_props.newLoc

        offset = Vector( newLoc ) - get_current_vertex_loc()
        o.location += offset

        return {'FINISHED'}

class VertexMoverPanel( bpy.types.Panel ):
    bl_idname      = "VertexMoverPanel"
    bl_label       = "Move objet by vertex"
    bl_category    = "Vertex Mover"
    bl_space_type  = 'VIEW_3D'
    bl_region_type = 'TOOLS'

    def poll( self, context ): 
        return context.object and context.object.mode == 'EDIT'

    def draw( self, context):
        layout = self.layout
        col    = layout.column()
        props  = context.scene.vertex_mover_props

        vertLoc = get_current_vertex_loc() if get_current_vertex_loc() else [ "N/A" for i in range(3) ]
        col.label( "Current Position" )
        col.label( "X: %s  Y: %s  Z: %s" % tuple( vertLoc ) ) 

        col.prop( props, 'newLoc' )

            text = 'Move',
            icon = 'MAN_TRANS'

def register():
    bpy.types.Scene.vertex_mover_props = bpy.props.PointerProperty(
        type = VertexMoverPropGroup

def unregister():

The first wished thing can be done (sort of, is a trick) in this way.

  1. in edit mode, duplicate the vertex with Shift+D.
  2. then separate it (P -> Selection)
  3. in Object mode, parent the original object to the new separated "point" object
  4. now you can move the "point" and the whole object will follow it.

I know is not very practical but it could solve some particular needs.

  • $\begingroup$ I think you should clear transformation of the "point" object first before parenting original mesh to it with Alt+S in order this to work as moving to the absolute position. $\endgroup$
    – Mr Zak
    Commented Nov 10, 2015 at 13:13

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .