それぞれの辺の中点を比較して一番zが低い値を一番下としている
スクリプトの最初位にやってて間違えてて、後の設定全部直す羽目になってて今半泣き状態。
一番最後の番号の時は最初の番号の頂点の中点をとる。
import bpy,bmesh from mathutils import Matrix, plane =bpy.context.object mat = plane.matrix_world.copy() msh = plane.data #zの値が小さいloopを一番下と仮定する(z_min_no) z = [] for l in msh.loops: index_no0 = l.vertex_index if l.index == len(msh.loops) - 1: index_no1 = msh.loops[0].vertex_index else: print(l.index) index_no1 = msh.loops[l.index + 1].vertex_index z0 = orig_p_mat @ msh.vertices[index_no0].co z1 = orig_p_mat @ msh.vertices[index_no1].co z_center = (z0 + z1) / 2 z.append(z_center[2]) #一番下のloopのindex z_min_no = z.index(min(z)) #一番下の頂点のindex z_min_vertex_no = msh.loops[z_min_no].vertex_index