Has a number of advantages over the existing method, described here.
http://wiki.blender.org/index.php/User:Ideasman42#Post_2.43_Update_to_the_Python_API
Only missing functionality is the ability to add new data through Base.scenes.new('name'), where scenes could be meshes, texts etc.
Other changes are minor,
Scene.h, bad var name in definition.
Text.c/h - moved the Python Struct into the header file, added BPy_Text_Check()
adding menu slot ScriptTemplate
new script scripttemplate_mesh_edit is a template for an editmesh script.
The function Text makeCurrent() is a dummy until I can get it working when the script runs from a menu.
Mesh - removing UV or Color layers didnt check if the active object was in vpaint of uv mode, removing the last layer could crash blender - now switch to object mode if its the last layer like the UI.
Setup for Armature weak ref list was missing from some places where
we execute py code. This confused the interpreter and gave random
attribute/tuple parse errors.
Changed name of weak ref list to "__arm_weakrefs" to avoid name
collision with user variables.
3ds_import - added option to disable recursive image searching (could be slow somtimes)
export_obj - when making group/object names only use both object and mesh name when they differ.
weightpaint_clean, weightpaint_grow_shrink - minor updates.
Render.py - own error in epydocs.
It looks like the changes for bug
#5000 Changin EditMode in Script wrecks memory
break the python interpreter.
Since this is critical, I have #ifdef'ed those out of
BPY_interface.c and Window.c. Did not touch Armature.c.
The ifdefs are tagged with /* bug 5000 */
This means bug #5000 is back in play. Interesting to note
that according to #5846, only scripts run from the script menu
and not via Alt-P were broken.
* moved from NMesh to Mesh
* made newstyle classes (use less memory)
* optimized mesh creation
* Animation now imports and plays (Bugfix for 5834)
+ other small tweaks
Added mesh.key - was missing from docs
[ #5000 ] Changin EditMode in Script wrecks memory
Armatures create weakreferences in __main__.__dict__. When Window.Editmode is called, the weaklist it iterated over and armatures are updated.
----------
Bugfix #3233: throw an IOError exception in Library.Open() if the specified
library file cannot be opened.
This had been changed to a "feature request" but should have been a bug, even
though it worked as documented (or rather, the documentation described what
the function did).
Before this, calling scene.currentFrame(val) would not work to update object displists where Blender.Set('curframe', val) did work.
Also used less python BuildValue calls.
commited temporary fix: executable name is quoted for all platforms except Windows now,
nicely wrapped in #ifdefs. Will be doing nice wrapper function BLI_system for system calls in blenlib
after release.
Please test on all platforms!
Differentiated properties and "game properties" in Object docs.
Also the new NLA/Pose key docs were added in the property class instead of Object, tsk tsk.
Python scripts: when setting a layer for an object, the function assumed
the object had to be in the current scene, thus ignoring layers for other
objects.
Now the object->lay value is set always.
Since 2.40 (and a few pre-releases around then), armature joining has not
worked correctly. Constraints and other attributes of bones in posemode
(IK DOF limits, transform locks, custom shapes, etc.) were not preserved
on the armature(s) that were joined onto the last selected armature. This
was a serious production problem, as it meant that you could not easily
add pre-made rig segments and merge them with the rest of your rigs without
having to redo all the constraints. After a few attempts, I've finally
managed to fix this.
All constraints and parenting relationships get name corrections for the post-
merge armatures. Action channels in actions don't really get any corrections
yet unless the action is being used by an Action Constraint.
Python-API people: beware, I may have broken something in this commit.
Two sensible methods left in: armatureobject.insertPoseKey and .insertCurrentPoseKey,
but still left unofficial i.e. not published in the api doc yet, because of additional
error checking is still needed and more testing too. But at least is now in better shape to
work on to be published in a later release.
Turned out somehow I managed to miss adding the proper
type refs in Blender.Types for IDGroupType and IDArrayType,
which made the script not work. So, I've got it all fixed now.
Or at least hopefully :)