Let’s say I have a bpy.types.Object containing a bpy.types.Mesh data field; how can I apply one of the modifiers associated with the object, in order to obtain a NEW bpy.types.Mesh, possibly contained within a NEW bpy.types.Object, thus leaving the original scene unchaged?
I’m interested in applying the EdgeSplit modifier right before exporting vertex data to my custom format; the reason why I want to do this is to have Blender automatically and transparently duplicate the vertices shared by two faces with very different orientations.
I suppose you’re using the 2.6 API.
…applies to the currently active object its Edge Split modifier. Note that it’s object.modifier_apply (…)
You can use
to set the active object. Note that it’s objects.active.
Also, check the modifier_apply docs. Lot’s of stuff you can only do with bpy.ops.*.
EDIT: Just saw you need a new (presumably temporary) mesh object. Just do
after you set the active object and the new active object then becomes the duplicate (it retains any added modifier; if it was an object named ‘Cube’, it duplicates it, makes it active and names it ‘Cube.001’) to which you can then apply the modifier. Hope this was clear enough 🙂
EDIT: Note, that bpy.ops.object.duplicate() uses not active object, but selected. To ensure the correct object is selected and duplicated do this