Выбранная вершина не подсвечивается в Blender 3D

Я сделал куб в Blender. Используя Python, я вошел в режим EDIT и выбрал одну вершину:

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, ее позиция не обновилась.

Почему он не выделил и не сдвинулся с места?

1 ответ

Находясь в режиме редактирования, редактор обрабатывает зеркало сетки, которое затем сохраняется как данные объекта после выхода из режима редактирования. Тем временем ваш скрипт изменяет исходную сетку, которая не отображается. В режиме редактирования сохраняется сетка редактирования, поэтому изменения в сценарии вообще не отображаются.

Один из способов обойти это - внести изменения в сценарии вне режима редактирования:

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")

Еще есть запрос на редактирование БМеш:

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.

Другие вопросы по тегам