points to a Curve.
New supporting module CurNurb to provide access to the curves in a Curve
and their associated points.
Curve module now supports Python iterator and sequence protocols.
This allows typical python programming idioms using 'for' statement
and the [] operator.
# example 1
for curve in a_curve:
for point in curve:
print point
#example 2
curnurb = a_curve[0]
curnurb.append( [1,1,1,1] )
Still under construction. Epydoc will follow.
- BPython: finishing object and nmesh .setMaterials commit, fixing two bugs. Also fixed a crash with object.track (pointer wasn't checked for validity). All based on reports and patch by Yann Vernier, thanks again.
-- splash screen disappeared (duh, I did that!) and Blender quits upon exiting from some 225 games:
It was troublesome to find how to run demos in general with the screen correctly redrawn before they started, etc. Ended up making the above error in screenmain(). About the games, I don't have them and will need some time to get the files for testing, but I'll do it, though only on linux.
BPython:
-- Window: added GetScreens, SetScreen and improved GetScreenInfo.
-- Object, NMesh: updated (added in NMesh) method getMaterials to return either only valid materials as before or also empty slots (as None). This previous omission can be considered a bug, since it made info about materials incomplete / incompatible with face mat indices. Thanks Yann Vernier for bringing this up and sending/proposing a patch that also fixed a bug related to assigning lists of materials with different lengths to obj and its mesh. setMaterials also accepts Py_None entries now, which become empty slots in Blender.
-- doc updates.
- added image.getBindCode() docstring to Image's epydoc file (thanks Satish Goda).
Scripts:
- Adding Apply_def.py to "Mesh" scripts menu (thanks author: Theeth);
- Updating JMS's disp_paint.py (also changed its name to remove version info);
- minor updates in docs and scripts.
- added mainqenter to stubs.c so it can be used in blender/blenkernel/intern/blender.c's setup_app_data.
We can't run the onload scriptlink in setup_app_data because the visible areas won't have been updated and redrawn for the loaded .blend file until control returns to screenmain() in blender/src/editscreen.c. So an ONLOAD_SCRIPT event is entered in setup_app_data and caught in screenmain, where the onload script is then executed. All for a good looking demo mode ...
BPython:
- Added image.getBindCode() method, contributed by Andrew Corrigan (thanks!).
- small additions and fixes to enable the demo mode;
- Added sleep() to Blender.sys and 17 new functions to Blender.Window module:
things to help demo script writing and as a bonus read / write access to Blender's input event queue;
- updates in docs, those interested please check Window.py in python/api2_2x/doc/ to read about the new Blender.Window functions.
----
Demo mode should be working well now for (I) playing rt animation -- aka ALT+A -- and (II) rendering pics and anims and playing anims. I'll still add access to radiosity data and functions.
PS: Joseph Gilbert made (II) possible with the Scene.Render module he added for 2.32. He's been coding great things for bpython, so I'd like to take the chance to point that and thank him here.
- added submenu "Scripts" in both View3D->Object and Mesh menus.
Put them on top (it's better to follow some guideline, so users don't have to search for "Scripts" submenu in a different position in each menu), feel free to change.
- added button 'previous win' to SpaceScript, makes accessing buttons win, for example, much faster. Maybe all spaces could have this button.
BPython:
- added Window.EditMode(), to check, enter and leave edit mode. Scripts that change mesh data need this to leave edit mode before making changes to the active (G.obedit) mesh, of course.
- updated script bevel_center to use the above function and also popup an error msg if the active obj is not a mesh.
- doc updates, minor fixes.
Forgot to mention in my previous commit that I also updated the "-P" command-line option (for running script files) to be able to run already loaded Blender Texts, too. So, if you have a script called 'Text' in foo.blend, you can run it with blender foo.blend -P Text .
- hotkeys, obdatacopier and renameobjectbyblock, all from Jean-Michel Soler (jms);
- bevel_center by Loic Berthe, suggested for inclusion by jms;
- doc_browser, by Daniel Dunbar (Zr)
Thanks to them for the new contributions!
(I included doc_browser at 'Misc' because only users interested in script writing would actually use it, but it could also be under 'Help'. Opinions?)
BPython related:
- Added scriptlink methods to object, lamp, camera and world.
- Object: added object.makeTrack and object.clearTrack (old track method).
- sys: made sys.exists(path) return 0 for not found; 1 for file, 2 for dir and -1 for neither.
- doc updates and fixes.
- made ONLOAD event work. G.f's SCENESCRIPT bit was being zeroed in set_app_data.
- Blender: updated functions Load and Save to support the builtin importers and exporters besides .blend (dxf, videoscape, vrml 1.0, stl, ...)
- Draw: added mouse wheel events.
- Scene: added scene.play to play back animations (like ALT+A and SHIFT+ALT+A). Makes a good counter, too, when the 'win' attribute is set to a space that doesn't "animate".
The scene.play() addition and the fix to ONLOAD scriptlinks is part of the work for a Blender demo mode. It already works, but I'll still add support for Radiosity calculations and fix a thing in main(): it executes onload scripts too early (BIF_Init), giving funny results in alt+a animations and renderings when firing up Blender. Loading after the program is up has no such problems. When I finish I'll post examples of demo mode scripts.
- Added KlopUtils by Carlos Lopez and Batch Object Name Edit by Campbell Barton (thanks both!)
BPython:
- Fixed things I recently broke in Blender.sys, added Blender.sys.join(dir, file)
- doc and other minor updates
- Added function Blender.Save(filename) to save .blend files.
- Added scriptlink-related methods (get, clear, add) to Scene and Materials. Will still add method remove and add these methods to World, Object, Camera and Lamp.
- Updates and small fixes in docs.
Campbell Barton updated his Wavefront OBJ scripts and Ben Omari updated his DirectX 7 and 8 ones (thanks both). The other listed scripts had minor updates to accomodate the menu changes.
- Scripts in menus:
renamed Tools to Object, Generators to Add, and Modifiers to Mesh (Metaball, Curve, Surface can be added later), to integrate better in the interface.
- Fixed a bug in Blender.sys.makename: last letter of file extension was being cut out.
PupStrInput, a wrapper for the Blender String popup (thanks!)
- Fixed bug #1374 reported by Gabriel Beloin (gabio, thanks too):
http://projects.blender.org/tracker/?func=detail&atid=125&aid=1374&group_id=9
There was a minor mistake in the import menu: vrml called dxf and vice-versa and shortcuts were wrong (removed them).
- Doc updates, minor updates elsewhere.
Wim Van Hoydonck contributed the famous Knife script (put under Modifiers group) developed by Stefano Selleri and himself (thank to both!)
- Added helper function Blender.sys.makename, updated docs and script ac3d_export to use it (shall update other exporters too):
this function is just a simple helper to format a filename as needed (change extension, strip dirname, it defaults to use G.sce as path).
- Added a test method: Blender.Scene.getScriptlinks(eventName):
just testing, if this path proves useful other functions will be added and made general, for objects, etc.
-- new try so that scripts place their guis and file selectors in proper places:
should be ok now for any but the really weirdest screen layouts, will be updated when scripts are added to other menus in the interface.
- added function Blender.sys.exists(path) to check if a given file exists;
- forgot to mention: in my previous commit the blender.html file was also updated slightly.
- tiny updates for better behavior, unix line endings, cvs Id tags;
- Updated DX7 exporter (thanks to author Ben Omari who's also working on a DX8 one);
- added sysinfo script;
Interface (scripts):
- changed behavior for which win is chosen for script guis:
Now there's a smarter order, guis will use either:
- Scripts win
- Buttons win (if not a script from groups Wizards or Utils)
- Text win
- Closest bigger area
- Added a button to the scripts header so that it's faster to return to the buttons win (this can be made general), if that was the previous win used.
-starting updates and new additions for Blender 2.34:
Some of the new scripts require Python modules not builtin with Blender, so you either need a full Python install or the needed extra modules. This is an ongoing work, there should be more scripts, better testing and also proper ways to tell users they don't have all expected modules. It's expected that Win users won't need full Python installs, since we can provide a minimal zip with the needed modules from 2.34 on.
Thanks to Anthony D'Agostino (scorpius), Jean-Michel Soler (jms) and Campbell Barton (Cam / ideasman) for donating the scripts now added / updated.
BPython:
-added two new script menu groups: Tools and Utils. We still need to find places elsewhere in the gui where the groups can be put.
Blender.Draw.Button() was not showing up. Seems to be an epydoc
issue with Button() being both a module method and the name of a class.
I changed Button to Button_ and added a usage note.
Yes, this is lame.
- Campbell Barton contributed another function (thanks again), the Image.reload method:
with this a script can keep an image that is being edited and saved by an external program updated in Blender.
in the UV/Image editor 'UVs' menu
Script authors can use:
Group: 'UV'
in the headers of their scripts to let them appear in
this menu.
* Updated the UV Face Layout script to reside in the UVs
menu, rather than the (incorrect) File->Export menu.
- updated docs with recently added functions
- dynamic menu entries now are sorted (alphabetically, of course)
- added new menu categories for scripts: Wizards, Modifiers, Generators, Materials, Animation:
only added to list of options, didn't mess with any Blender header. They are already available from the "Scripts" menu in the scripts win, but not elsewhere.
- added option 'datadir' to Blender.Get(option):
so scripts can use .blender/bpydata for reading / writing their data files.
-- Added two new functions to the Draw module, to display int and float popup buttons:
Both contributed by Campbell Barton, thanks!
-- Fixed a couple warnings.
- Finally added Blender.Load function for loading .blend files, useful for demos, for example.
- Moved data from Blender.h to Blender.c. We'll keep doing this where it applies and someday remove all unused files at once.