我在Blender做了一个Cube.使用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它的位置没有更新.
为什么它不突出也不动?
在编辑模式下,编辑器处理网格的镜像,然后在离开编辑模式后将其保存为对象的数据.同时,您的脚本会更改未显示的基础原始网格.离开editmode存储编辑网格,因此脚本更改根本不会显示.
解决此问题的一种方法是在编辑模式之外执行脚本化更改:
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脚本界面的文档记录.