I want to know an edge length ONLY in Top Orthographic (like 2D), and, if it's possible I want to know how to change this length. Help me.enter image description here

I don't want to know the length like this:enter image description here

  • 1
    $\begingroup$ To clarify, the edge will have same length no matter what view. I imagine you want the length of edge projected onto xy plane. (eg the length the edges would be if you scale to zero in z)? $\endgroup$
    – batFINGER
    Commented Aug 21, 2019 at 13:59
  • $\begingroup$ Yes, I want this. $\endgroup$
    – ALEXander
    Commented Aug 21, 2019 at 14:07

2 Answers 2


Script version

Would IMO be a bit OTT to dupe n scale just to get the ortho projection length of an edge. Here is a little test script that projects the edge globally. ie taking into account object transform, onto the XY plane and returns its length

Select an edge in edit mode, run script, prints the edges global projected length to console. (Unmodified, undeformed)

enter image description here Test run on default cone. Shows radial lengths as 1 as expected

import bpy
import bmesh
from mathutils import Vector

context = bpy.context
ob = context.edit_object
mw = ob.matrix_world
me = ob.data
bm = bmesh.from_edit_mesh(me)
# define plane
plane_no = Vector((0, 0, 1))  # plane normal
plane_co = Vector() # (0, 0, 0) point on plane

e = bm.select_history.active
if isinstance(e, bmesh.types.BMEdge):
    def proj(v):
        return v - (v - plane_co).dot(plane_no) * plane_no
    v1, v2 = [proj(mw @ v.co) for v in e.verts]
    print((v1 - v2).length)

Note could easily extend this to use the 3d view as defining the plane, and overlay the lengths over edges.

  • $\begingroup$ English is not my native language, so I do not quite understand what it means "IMO" and "OTT"? $\endgroup$
    – ALEXander
    Commented Aug 21, 2019 at 18:10
  • $\begingroup$ How to insert this script into Blender before running it? $\endgroup$
    – ALEXander
    Commented Aug 21, 2019 at 20:07
  • $\begingroup$ Copy the script above, open a new blank text block in blender, paste script, hit the "Run Script" button on the header. Be in edit mode with an edge active. $\endgroup$
    – batFINGER
    Commented Aug 22, 2019 at 6:32
  1. Duplicate the entire object.
  2. Hide the original and go into edit mode for the duplicate. Select all the vertices and scale to zero on the z axis. I typically do this about a "Median" pivot. The key sequence is "S", "Z", "0".
  3. Now, because all the vertices are in the same cardinal plane, you can directly translate them all to zero-level (although I guess this step doesn't matter): Tap the "N" key to pull up object coordinates. You can do this in Edit or Object mode since all the vertices are in the same plane. If you are in Edit mode, make sure all vertices are still selected and that the current space is "Global", not "Local" for the transformation fields in the right panel. Type "0" for the Z-coordinate.

Now you can measure segments that have literally been projected onto the XY-plane.


You must log in to answer this question.

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