ofey
ofey

Reputation: 3347

Blender Python api vertices, edges and faces selection

Using the following code which I got from https://blender.stackexchange.com/questions/43127/how-do-i-select-specific-vertices-in-blender-using-python-script. I can get vertices to select but when I uncomment for edged or faces and comment for vertices it doesn't work. I just guessed at the spelling for edges and facees but is it correct?

import bpy

#clear scene, make mesh
bpy.ops.object.mode_set(mode = 'OBJECT')
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete(use_global=False)
bpy.ops.mesh.primitive_cube_add(size=2, enter_editmode=False, align='WORLD', location=(0, 0, 0), rotation=(1.5708, 1.5708, 0))
obj = bpy.data.objects["Cube"]

#select vertex
obj = bpy.context.active_object
bpy.ops.object.mode_set(mode = 'EDIT') 
bpy.ops.mesh.select_mode(type="VERT")
#bpy.ops.mesh.select_mode(type="EDGE")
#bpy.ops.mesh.select_mode(type="FACE")
bpy.ops.mesh.select_all(action = 'DESELECT')
bpy.ops.object.mode_set(mode = 'OBJECT')
obj.data.vertices[5].select = True
#obj.data.edges[1].select = True
#obj.data.faces[1].select = True
bpy.ops.object.mode_set(mode = 'EDIT') 

Upvotes: 4

Views: 8027

Answers (2)

coIA
coIA

Reputation: 1

In edit mode Blender works with a 'copy' of the mesh that is not saved until you exit this mode. In object mode the changes are immediate.

bpy.ops.object.mode_set(mode = 'OBJECT')
act_obj = bpy.context.active_object.name
#No need to select to apply transformation
bpy.data.meshes[act_obj].vertices[2].co[2] +=0.1

Upvotes: 0

ofey
ofey

Reputation: 3347

I eventually replaced the word 'face' with the word 'polygons' and it worked. enter image description here

import bpy

#clear scene, make mesh
bpy.ops.object.mode_set(mode = 'OBJECT')
bpy.ops.object.select_all(action='SELECT')
bpy.ops.object.delete(use_global=False)
bpy.ops.mesh.primitive_cube_add(size=2, enter_editmode=False, align='WORLD', location=(0, 0, 0), rotation=(1.5708, 1.5708, 0))
obj = bpy.data.objects["Cube"]

#select vertex
obj = bpy.context.active_object
bpy.ops.object.mode_set(mode = 'EDIT') 
#bpy.ops.mesh.select_mode(type="VERT")
#bpy.ops.mesh.select_mode(type="EDGE")
bpy.ops.mesh.select_mode(type="FACE")
bpy.ops.mesh.select_all(action = 'DESELECT')
bpy.ops.object.mode_set(mode = 'OBJECT')
#obj.data.vertices[2].select = True
#obj.data.edges[7].select = True
obj.data.polygons[2].select = True
bpy.ops.object.mode_set(mode = 'EDIT') 

Upvotes: 4

Related Questions