Hallo there…i’m a newbie in Python. I need help.
I made a new method that will be return a total length of edges in a loop. the method looks like this :
def getCurrentLengthOf(name):
obj_mesh = bpy.data.objects['nameOfObject']
# Store the mesh
mesh = obj_mesh.data
#BMESH import bmesh
bm = bmesh.new()
bm.from_mesh(mesh)
#set active the object
bpy.context.scene.objects.active = obj_mesh
#set to edit mode
opsobj.mode_set(mode='EDIT')
#set mesh mode into edge mode (vertex, edge, face)
bpy.context.tool_settings.mesh_select_mode = (False, True, False)
#set to the object mode first
opsobj.mode_set(mode='OBJECT')
index = 0
if name==some1:
index = 24218
elif name==some2:
index = 20856
#get an edge by index
bpy.context.active_object.data.edges[index].select=True
#back to edit mode
opsobj.editmode_toggle()
#make a loop from selected edge
bpy.ops.mesh.loop_multi_select()
bm.select_flush(True)
#get the sum
total = sum(edge.calc_length() for edge in bm.edges if edge.select)
return total
the mistake is in the result.
in the first run of script, i just get the length of a single edge that i selected before (by index)…and then i run again the script, and finally i get the sum of the lengths which is that i hope as a result. Why did this happen?
assume, i have to get the result as ‘total’ 28. a single edge that selected by index is 1.032. i got the result like this :
first run : 28
2nd run : 1.032
3rd run and so on : 28…
thanks before for helping me. :’)