Is there a way to see the dimensions of the selected area in edit mode?

in edit mode, i can select say a loop and see its median XYZ under transform.

i would love to be able to see the dimensions of the selected loop in edit mode, same as in object mode. right now i have to get out the ruler tool, then scale the loop, then check with ruler again, and repeat, which is a pain.

is there a way to show the dimensions (bounding box) of the selection in real time?

thanks

https://arsides.gumroad.com/l/THZfd

i don’t want to apply the scale to the object, i want to find the size of a selection within a mesh

Maybe this one can help you.

http://blender-3d.338.s1.nabble.com/MeasureIt-Tools-Addon-in-Blender-2-9-tp737.html

1 Like

thanks, that’s interesting but it doesn’t show the bounding box dimensions of the selection. all i really need is to see the diameter of an edge loop?

Make your diameter an actual edge, and show the Edge length in the Viewport Show Overlays options?

you can use this script, after your selection in edit mode, found here, and watch the result in a console window.

import bpy
import bmesh


def print_details(num_edges, edge_length):
    print("number of edges: {0}".format(num_edges))
    print("combined length: {0:6f}".format(edge_length))

def get_combined_length(object_reference):

    # Get a BMesh representation
    bm = bmesh.from_edit_mesh(object_reference.data)

    selected_edges = [edge for edge in bm.edges if edge.select]
    num_edges = len(selected_edges)

    edge_length = 0
    for edge in selected_edges:
        edge_length += edge.calc_length()
         
    print_details(num_edges, edge_length)
    return round(edge_length, 6)
    

obj_reference = bpy.context.active_object
print(get_combined_length(obj_reference))

thanks chafouin but that shows lengths of each individual edge in the edge loop, what i need is the diameter of the whole circle (edge loop that is)

skuax, i didn’t try yet but this looks like it would give me the circumference of the edit loop right? i guess i could add something to the script to divide by pi i suppose, thanks

yes you could apply the circumference calculation rules to the total edge length.

i’m converting that in an addon, but i’m not , properly talking “a coder”, so it could takes some time for me. But it works as operator for the moment, print the result in the console and can be registred as an addon. I’m on my way to create buttons and display now.
It’s a good exercise for me.

I’ve made it an add-on on the N panel with a button.

bl_info = {
    "name": "Calculate Edge Selection Length",
    "author": "",
    "version": (1, 0),
    "blender": (2, 83, 0),
    "location": "Viev3D > N panel > Edgemeasurement",
    "description": "see title",
    "warning": "",
    "wiki_url": "",
    "category": "Mesh",
}

import bpy
#import os
import bmesh
from bpy.props import *

#os.system("clear")


#    Store properties in the active scene

def initSceneProperties(scn):
    
    scene = bpy.context.scene
    bpy.types.Scene.Ledges = FloatProperty\
    (
        name = "Combined Length", 
        description = "Edge Combined Length"
     )
    scn['Ledges'] = 0.0
    
    return
 
initSceneProperties(bpy.context.scene)


#    Menu in UI region

class UI_PT_Panel(bpy.types.Panel):
	bl_space_type = "VIEW_3D"
	bl_region_type = "UI"
	bl_context = "mesh_edit"
	bl_category = "EdgeMeasurement"
	bl_label = "Edge selection info"
	
	def draw(self, context):
		layout = self.layout
		scn = context.scene
		
		layout.prop(scn, 'Ledges')
		layout.label(text="Caculate:")
		row = layout.row()
		row.scale_y = 2.0
		row.operator("edgetlength.calculate")


class EdgeTLength_OT_Calculate(bpy.types.Operator):
    """Calculate total Edge Selection Length"""      # Use this as a tooltip for menu items and buttons.
    bl_idname = "edgetlength.calculate"        # Unique identifier for buttons and menu items to reference.
    bl_label = "Calculate edge selection length"         # Display name in the interface.
    bl_options = {'REGISTER', 'UNDO'}
    
    def execute(self, context):
        obj_reference = bpy.context.active_object
        print(get_combined_length(obj_reference))
        bpy.data.scenes["Scene"].Ledges = get_combined_length(obj_reference)

        return {'FINISHED'}            # Lets Blender know the operator finished successfully.

def print_details(num_edges, edge_length):
        print("number of edges: {0}".format(num_edges))
        print("combined length: {0:6f}".format(edge_length))

def get_combined_length(object_reference):

    # Get a BMesh representation
    bm = bmesh.from_edit_mesh(object_reference.data)

    selected_edges = [edge for edge in bm.edges if edge.select]
    num_edges = len(selected_edges)

    edge_length = 0
    for edge in selected_edges:
        edge_length += edge.calc_length()
         
    print_details(num_edges, edge_length)
    return round(edge_length, 6)

classes= [UI_PT_Panel, EdgeTLength_OT_Calculate]


def register():
	for cls in classes:
		bpy.utils.register_class(cls)

def unregister():
	for cls in classes:
		bpy.utils.unregister_class(cls)


# This allows you to run the script directly from Blender's Text editor
# to test the add-on without having to install it.
if __name__ == "__main__":
    register()

it’s not super clean, but it works on my side…