我在Blender中制作了一个立方体。使用Python,我确实进入了编辑模式,并选择了一个顶点:
import bpy
bpy.ops.mesh.primitive_cube_add()
bpy.ops.object.mode_set(mode="EDIT")
bpy.ops.mesh.select_all(action="DESELECT")
bpy.context.tool_settings.mesh_select_mode = (True , False , False)
bpy.context.object.data.vertices[0].select = True
bpy.context.object.data.vertices[0].co = (-3,-2,-3)
但是顶点没有用橙色突出显示,虽然我告诉顶点去-3,-2-,-3它的位置没有更新。
为什么它既没有突出显示也没有移动?
在编辑模式下,编辑器处理网格的镜像,然后在离开编辑模式后将其保存为对象的数据。同时,脚本会更改未显示的底层原始网格。离开编辑模式将存储编辑网格,因此脚本化的更改根本不会显示。
解决此问题的一种方法是在编辑模式之外执行脚本更改:
import bpy
bpy.ops.mesh.primitive_cube_add()
bpy.ops.object.mode_set(mode="EDIT")
bpy.ops.mesh.select_all(action="DESELECT")
bpy.context.tool_settings.mesh_select_mode = (True , False , False)
bpy.ops.object.mode_set(mode="OBJECT")
bpy.context.object.data.vertices[0].select = True
bpy.context.object.data.vertices[0].co = (-3,-2,-3)
bpy.ops.object.mode_set(mode="EDIT")
另一个是请求编辑BMesh:
import bpy, bmesh
bpy.ops.mesh.primitive_cube_add()
bpy.ops.object.mode_set(mode="EDIT")
bpy.ops.mesh.select_all(action="DESELECT")
bpy.context.tool_settings.mesh_select_mode = (True , False , False)
mesh=bmesh.from_edit_mesh(bpy.context.object.data)
mesh.verts[0].select = True
mesh.verts[0].co = (-3,-2,-3)
这是Blender脚本界面的一个文档。