Error in user YAML: (<unknown>): could not find expected ':' while scanning a simple key at line 3 column 1
---
- oeasy Python 0716
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
本教程同步发布在:
个人网站: `https://oeasy.org`
蓝桥云课: `https://www.lanqiao.cn/courses/3584`
GitHub: `https://github.com/overmind1980/oeasy-python-tutorial`
Gitee: `https://gitee.com/overmind1980/oeasypython`
---import bpy
import bmesh
# 清空场景
print("正在清空场景...")
bpy.ops.object.mode_set(mode='OBJECT')
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete()
# 创建一个立方体
print("正在创建立方体...")
bpy.ops.mesh.primitive_cube_add()
cube = bpy.context.active_object
print(f"创建的立方体对象: {cube.name}")
# 进入编辑模式
print("进入编辑模式...")
bpy.context.view_layer.objects.active = cube
cube.select_set(True)
bpy.ops.object.mode_set(mode='EDIT')
bpy.ops.mesh.select_all(action='SELECT')
print("正在执行垂直边的高度切割操作...")
# 使用bmesh库获取网格数据
bm = bmesh.from_edit_mesh(cube.data)
# 只在竖着的四条边上进行高度切割
# 竖着的边是指沿着Z轴方向的边(X和Y坐标固定,Z坐标变化)
vertical_edges = []
for edge in bm.edges:
# 获取边的两个顶点坐标
v1 = edge.verts[0].co
v2 = edge.verts[1].co
# 检查边是否是垂直边(沿着Z轴方向)
# 如果X和Y坐标几乎相同,只有Z坐标不同,则是垂直边
if abs(v1.x - v2.x) < 0.001 and abs(v1.y - v2.y) < 0.001 and abs(v1.z - v2.z) > 0.001:
vertical_edges.append(edge)
print(f"找到垂直边数量: {len(vertical_edges)}")
# 对这些边进行细分,实现高度切割效果
if vertical_edges:
print("执行垂直边的高度切割...")
try:
bmesh.ops.subdivide_edges(bm, edges=vertical_edges, cuts=4, use_grid_fill=True)
print(" ✔️ 垂直边切割成功")
except Exception as e:
print(f" ❌ 垂直边切割失败: {e}")
else:
print(" ⚠️ 未找到垂直边,无法执行切割")
# 更新网格
bmesh.update_edit_mesh(cube.data)
# 切换回对象模式
print("切换回对象模式...")
bpy.ops.object.mode_set(mode='OBJECT')
- 本文来自 oeasy Python 系统教程。
- 想完整、扎实学 Python,
- 搜索 oeasy 即可。
