Help geting all the selected vertex


(damotor) #1

Hi.
I’m new at programming with blender and I had tried to create a function that prints the position of the selected vertex of a the selected meshes but it doesn’t seem to work. Can you help me? pls

import Blender
from Blender import NMesh, Window
from Blender.BGL import *
from Blender.Draw import *

import math
from math import *

## Pensar las variables que vamos a necesitar
# Para el contenedor
V_seleccionado = Create("Ninguno")

## Pensar los eventos que vamos a necesitar
# Eventos
EVENTO_NOEVENTO   = 1
EVENTO_DEFORMAR   = 2
EVENTO_SALIR      = 3

######################################################
# dibujado de la IGU
######################################################
def draw():
	global V_seleccionado
	global EVENTO_NOEVENTO,EVENTO_DEFORMAR,EVENTO_SALIR

	# Titles
	glClear(GL_COLOR_BUFFER_BIT)
	glRasterPos2d(8, 103)
	Text("Bienvenido a MIR")

	# Parameters GUI Buttons
	glRasterPos2d(8, 83)
	Text("Seleccione la deformacion a aplicar")
	
	# La seleccion del plugin se hara mediante un menu o con un deplegable?
	V_seleccionado = Menu ("Seleccion", 2, 16, 53, 133, 20, 3, "Probando")

	# Botones de deformar y salir
	Button("Deformar",EVENTO_DEFORMAR , 10, 10, 80, 18)
	Button("Salir",EVENTO_SALIR , 140, 10, 80, 18)
	
def event(evt, val):	
	if (evt == QKEY and not val): 
		Exit()

def bevent(evt):
	global V_seleccionado
	global EVENTO_NOEVENTO,EVENTO_DEFORMAR,EVENTO_SALIR

	# Gestiona los eventos de la IGU
	if (evt == EVENTO_SALIR): 
		Exit()
	elif (evt== EVENTO_DEFORMAR):
		Deformar(V_seleccionado.val)
 		Blender.Redraw()

Register(draw, event, bevent)
		
######################################################
# Main Body
######################################################
def Deformar(deformacion):
	# Aplica la deformacion a los vertices seleccionados
	print "-------------------------------------------"
	#m de Mesh
	m=[]
	for m in Blender.Object.GetSelected():
		if(m.getData()==""):
			print "Debe seleccionar los vertices de algun objeto"
		else:
			if (m.getType()!="Mesh"):
				print "Debe seleccionar los vertices de una malla"
			else:
				if(Blender.Window.EditMode()==0):
					print "Para seleccionar los vertices debe estar en modo edicion"
					Blender.Window.EditMode(1)
				else:
					for v in m.getData().verts:
						if v.sel:
							print v.co[0],", ",v.co[1],", ",v.co[2],", ",v.index
	Blender.Redraw()

thx


(z3r0 d) #2

your subject and question conflict. Are you trying to print the location of selected objects [exclusive] or verticies?


(damotor) #3

That’s true, sorry.