import Blender

co = Blender.Object.GetSelected()


def writefile(filename):
	out=file(filename,'w')
	out.write("""<threed>\n""")
	for i in co:
		if i.getType() != 'Mesh':
			continue
		out.write("""<object name="%s">\n""" % i.getName())
		vertlist = i.getData().verts
		out.write("""<vertexgroup>\n""")
		for vertindex in xrange(len(vertlist)):
			out.write("""<vertex index="%i" location="%s" normal="%s"/>\n""" % (vertindex, str(vertlist[vertindex].co), str(vertlist[vertindex].no))) 
		out.write("""</vertexgroup>\n""")
		out.write("""<facegroup>\n""")
		for face in i.getData().faces:
			out.write("""<face uv="%s">\n""" % str(face.uv))
			for vert in face.v:			
				out.write("""<facevert index="%i"/>\n""" % vert.index)  
			out.write("""</face>\n""")
		out.write("""</facegroup>\n""")
		out.write("""</object>\n""")
	out.write("""</threed>\n""")
	out.close()

def fs_callback(filename):
	if filename.find('.xml', -4) <= 0: filename += '.xml'
	writefile(filename)

Blender.Window.FileSelector(fs_callback,'ThreeD Export')
