目录
[2. 切平:](#2. 切平:)
效果图:

1.判断轴向:
bash
exec(open(r"E:\project\bpy_pro\zhou.py").read())
python
import bpy
obj = bpy.context.active_object
verts = obj.data.vertices
x_vals = [v.co.x for v in verts]
y_vals = [v.co.y for v in verts]
z_vals = [v.co.z for v in verts]
print(f"X轴范围: {min(x_vals):.2f} ~ {max(x_vals):.2f} 高度差: {max(x_vals)-min(x_vals):.2f}")
print(f"Y轴范围: {min(y_vals):.2f} ~ {max(y_vals):.2f} 高度差: {max(y_vals)-min(y_vals):.2f}")
print(f"Z轴范围: {min(z_vals):.2f} ~ {max(z_vals):.2f} 高度差: {max(z_vals)-min(z_vals):.2f}")
2. 切平:
执行脚本:
python
exec(open(r"E:\project\bpy_pro\qie_ping.py").read())
E:\project\bpy_pro\qie_ping.py
python
import bpy
def flatten_bottom_vertices(axis='Y', z_target=0, threshold=0.01):
"""
将物体底部的顶点压平
参数:
axis: 高度轴,可选 'X', 'Y', 'Z'
z_target: 目标高度值
threshold: 容差
"""
obj = bpy.context.active_object
if obj is None or obj.type != 'MESH':
print("请先选中一个网格物体")
return
bpy.ops.object.mode_set(mode='OBJECT')
mesh = obj.data
# 根据选择的轴获取坐标值
axis_idx = {'X': 0, 'Y': 1, 'Z': 2}[axis]
# 找出该轴的最小值
coords = [v.co[axis_idx] for v in mesh.vertices]
lowest = min(coords)
print(f"沿 {axis} 轴,最低点: {lowest:.4f}")
# 选择底部顶点(距离最低点小于阈值的顶点)
selected_verts = []
for v in mesh.vertices:
if abs(v.co[axis_idx] - lowest) < threshold:
selected_verts.append(v)
print(f"找到 {len(selected_verts)} 个底部顶点")
if not selected_verts:
print("未找到底部顶点,请尝试增大threshold")
return
# 直接修改坐标
for v in selected_verts:
co = list(v.co)
co[axis_idx] = z_target
v.co = co
mesh.update()
print(f"已将 {len(selected_verts)} 个顶点压平到 {axis}={z_target}")
# ===== 使用Y轴,压平到Y=0 =====
flatten_bottom_vertices(axis='Y', z_target=0, threshold=0.05)