I know how to get the position of a vertex but only its the original position, not the position after it be changed by armature deformation.
what about a vertex parented empty? dirty work around, but should work…
It not looks the most clean or easy way but must work. As I don’t found other way I will try it. Tanks!
I think you have to use getFromObject()
Create a container mesh
container_mesh = bpy.data.meshes.new()
Then everytime you need to get the deformed data, use getFromObject() and read it from container_mesh:
container_mesh.getFromObject(your_object)
To free the memory from the copy:
container_mesh.verts = None
Hi!
I have the same Question. Could anybody give a longer example on this? I dont get the Vertex Data 
I made something like this:
myMesh = Mesh.Get();
myMeshTemp = myMesh[0].getFromObject( “Armature” );
Its not working 
Thanks Tolobán! tanks ideasman42. I made the following code to test and apparently it’s working nice. I hope it can help Zweistein too:
from Blender import *
import bpy
# Get an existent mesh object named Cube
malha = Mesh.Get('Cube')
# Creates a mesh conteiner
container_mesh = bpy.data.meshes.new()
# Assign mesh object to mesh conteiner
container_mesh.getFromObject('Cube')
# Get vertex data from the mesh conteiner
vertices = container_mesh.verts
# Get the quantity of vertexes from mesh conteiner
tamanho = len(vertices)
# Shows the data of each vertex
for i in range (tamanho):
print vertices[i]
# Free the memory from the copy
container_mesh.verts = None
When I use the code above appears the following in the console:
Code added to script:
print container_mesh
print container_mesh.verts
Console window:
[Mesh "Mesh"]
<Blender MVertSeq object at 0x01C4A368>
[Mesh "Mesh.001"]
<Blender MVertSeq object at 0x01C4A368>
[Mesh "Mesh.002"]
<Blender MVertSeq object at 0x01C4A368>
[Mesh "Mesh.003"]
<Blender MVertSeq object at 0x01C4A368>
[Mesh "Mesh.004"]
<Blender MVertSeq object at 0x01C4A368>
[Mesh "Mesh.005"]
<Blender MVertSeq object at 0x01C4A368>
[Mesh "Mesh.006"]
<Blender MVertSeq object at 0x01C4A368>
[Mesh "Mesh.007"]
<Blender MVertSeq object at 0x01C4A368>
[Mesh "Mesh.008"]
<Blender MVertSeq object at 0x01C4A368>
[Mesh "Mesh.009"]
<Blender MVertSeq object at 0x01C4A368>
[Mesh "Mesh.010"]
<Blender MVertSeq object at 0x01C4A368>
[Mesh "Mesh.011"]
<Blender MVertSeq object at 0x01C4A368>
[Mesh "Mesh.012"]
<Blender MVertSeq object at 0x01C4A368>
[Mesh "Mesh.013"]
<Blender MVertSeq object at 0x01C4A368>
[Mesh "Mesh.014"]
<Blender MVertSeq object at 0x01C4A368>
[Mesh "Mesh.015"]
<Blender MVertSeq object at 0x01C4A368>
[Mesh "Mesh.016"]
<Blender MVertSeq object at 0x01C4A368>
[Mesh "Mesh.017"]
<Blender MVertSeq object at 0x01C4A368>
Compiled with Python version 2.5.
Checking for installed Python... got it!
It’s my impression or it’s creating new meshes and not deleting the olds ones?
I’m asking because the name “Mesh.001” changes everytime the script is called. If the old mesh was deleted the new one would not maintain the same name when it is created?
getFromObject(object, 1) doesn’t give the full transformation for a mesh with both an armature and shape keys. I get only the shape key deformation and not the armature deformation. I guess the susbsurf modifier should be disabled from the script and then use only getFromObject(object).
Zweistein: You want a copy of a deformed object, which is a mesh object, not an armature.
myObject = [o for o in Object.Get() if o.type = "Mesh"]
myMeshTemp = Mesh.New()
myMeshTemp.getFromObject(myObject[0])
Aristocrata, I didn’t think of the case of repeatedly running the script.
I found an inconsistency of behavior between bpy.data.meshes.new() and Blender.Mesh.New(). When using Mesh.New() the mesh datablock is cleared when the script ends, but when using the bpy function it is not.
So maybe it is better to use Blender.Mesh.New(). I took the code using the “experimental” bpy module from BPyMesh.py used in turn by the apply deformation script.
Anyway, to avoid ending up with lots of meshes using bpy, you could do this:
import bpy
import Blender
try:
container_mesh = Blender.Mesh.Get('container')
except:
container_mesh = bpy.data.mesh.new('container')
Note the explicit mesh name “container”.
I don’t understood how it works. “container” is the name of original mesh object?
Someone here?
Just use Blender.Mesh.New() instead of bpy.data.mesh.new() and you will not get all those empty mesh blocks.