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, 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?
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…