diff options
author | Willian Padovani Germano <wpgermano@gmail.com> | 2004-06-10 19:14:49 +0400 |
---|---|---|
committer | Willian Padovani Germano <wpgermano@gmail.com> | 2004-06-10 19:14:49 +0400 |
commit | a23c6a71da4feea2e036928d260630cb26854ab1 (patch) | |
tree | 21d3f9037043436de8b8d00d2d3ec561d69f4c7c | |
parent | a6d077bae243eef5f8826b2c7b27bd297428d7d4 (diff) |
- small updates to scripts and bpython docs, also fixed two warnings;
- 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.
-rw-r--r-- | release/scripts/bvh_export.py | 4 | ||||
-rw-r--r-- | release/scripts/obj_export.py | 4 | ||||
-rw-r--r-- | source/blender/python/api2_2x/Object.c | 8 | ||||
-rw-r--r-- | source/blender/python/api2_2x/Sys.c | 80 | ||||
-rw-r--r-- | source/blender/python/api2_2x/Sys.h | 50 | ||||
-rw-r--r-- | source/blender/python/api2_2x/doc/Blender.py | 12 | ||||
-rw-r--r-- | source/blender/python/api2_2x/doc/Metaball.py | 220 | ||||
-rw-r--r-- | source/blender/python/api2_2x/doc/Sys.py | 11 |
8 files changed, 213 insertions, 176 deletions
diff --git a/release/scripts/bvh_export.py b/release/scripts/bvh_export.py index 7f6ad856c04..9309b76c476 100644 --- a/release/scripts/bvh_export.py +++ b/release/scripts/bvh_export.py @@ -333,7 +333,9 @@ def motion2bvh(frame, chennelList, nodeObjectList): return motionData def saveBVH(filename): - + + if filename.find('.bvh', -4) <= 0: filename += '.bvh' # for safety + # Here we store a serialized list of blender objects as they appier # in the hierarchy, this is refred to when writing motiondata nodeObjectList = [] diff --git a/release/scripts/obj_export.py b/release/scripts/obj_export.py index ecf081cf55c..ccbed6feae3 100644 --- a/release/scripts/obj_export.py +++ b/release/scripts/obj_export.py @@ -65,7 +65,9 @@ from Blender import * NULL_MAT = '(null)' def save_obj(filename): - + + if filename.find('.obj', -4) <= 0: filename += '.obj' # for safety + file = open(filename, "w") # Write Header diff --git a/source/blender/python/api2_2x/Object.c b/source/blender/python/api2_2x/Object.c index f828980257c..346f8f24dd2 100644 --- a/source/blender/python/api2_2x/Object.c +++ b/source/blender/python/api2_2x/Object.c @@ -35,9 +35,11 @@ #include "Object.h" #include "NLA.h" -#include "blendef.h" -#include "DNA_scene_types.h" -#include "BSE_edit.h" +#include <blendef.h> +#include <DNA_scene_types.h> +#include <BSE_edit.h> +#include <BKE_mball.h> +#include <BIF_editview.h> /*****************************************************************************/ /* Python API function prototypes for the Blender module. */ diff --git a/source/blender/python/api2_2x/Sys.c b/source/blender/python/api2_2x/Sys.c index 56f3a64d489..81488c2c676 100644 --- a/source/blender/python/api2_2x/Sys.c +++ b/source/blender/python/api2_2x/Sys.c @@ -29,10 +29,67 @@ * ***** END GPL/BL DUAL LICENSE BLOCK ***** */ -#include "BKE_utildefines.h" -#include "PIL_time.h" - -#include "Sys.h" +#include <BKE_utildefines.h> +#include <BLI_blenlib.h> +#include <PIL_time.h> +#include <Python.h> +#include "gen_utils.h" +#include "modules.h" + +/*****************************************************************************/ +/* Python API function prototypes for the sys module. */ +/*****************************************************************************/ +static PyObject *M_sys_basename (PyObject *self, PyObject *args); +static PyObject *M_sys_dirname (PyObject *self, PyObject *args); +static PyObject *M_sys_splitext (PyObject *self, PyObject *args); +static PyObject *M_sys_exists (PyObject *self, PyObject *args); +static PyObject *M_sys_time (PyObject *self); + +/*****************************************************************************/ +/* The following string definitions are used for documentation strings. */ +/* In Python these will be written to the console when doing a */ +/* Blender.sys.__doc__ */ +/*****************************************************************************/ +static char M_sys_doc[] = +"The Blender.sys submodule\n\ +\n\ +This is a minimal system module to supply simple functionality available\n\ +in the default Python module os."; + +static char M_sys_basename_doc[] = +"(path) - Split 'path' in dir and filename.\n\ +Return the filename."; + +static char M_sys_dirname_doc[] = +"(path) - Split 'path' in dir and filename.\n\ +Return the dir."; + +static char M_sys_splitext_doc[] = +"(path) - Split 'path' in root and extension:\n\ +/this/that/file.ext -> ('/this/that/file','.ext').\n\ +Return the pair (root, extension)."; + +static char M_sys_time_doc[] = +"() - Return a float representing time elapsed in seconds.\n\ +Each successive call is garanteed to return values greater than or\n\ +equal to the previous call."; + +static char M_sys_exists_doc[] = +"(path) - Return 1 if given pathname (file or dir) exists, 0 otherwise."; + +/*****************************************************************************/ +/* Python method structure definition for Blender.sys module: */ +/*****************************************************************************/ +struct PyMethodDef M_sys_methods[] = { + {"basename", M_sys_basename, METH_VARARGS, M_sys_basename_doc}, + {"dirname", M_sys_dirname, METH_VARARGS, M_sys_dirname_doc}, + {"splitext", M_sys_splitext, METH_VARARGS, M_sys_splitext_doc}, + {"exists", M_sys_exists, METH_VARARGS, M_sys_exists_doc}, + {"time", (PyCFunction)M_sys_time, METH_NOARGS, M_sys_time_doc}, + {NULL, NULL, 0, NULL} +}; + +/* Module Functions */ static PyObject *g_sysmodule = NULL; /* pointer to Blender.sys module */ @@ -176,3 +233,18 @@ static PyObject *M_sys_time (PyObject *self) return Py_BuildValue("d", t); } +static PyObject *M_sys_exists (PyObject *self, PyObject *args) +{ + char *fname = NULL; + int i = 0; + + if (!PyArg_ParseTuple(args, "s", &fname)) + return EXPP_ReturnPyObjError (PyExc_TypeError, + "expected string (file path) argument"); + + i = BLI_exists(fname); + + if (i) return Py_BuildValue("i", 1); /* path was found */ + + return Py_BuildValue("i", 0); /* path doesn't exist */ +} diff --git a/source/blender/python/api2_2x/Sys.h b/source/blender/python/api2_2x/Sys.h index 446ac91490b..f50eba8135f 100644 --- a/source/blender/python/api2_2x/Sys.h +++ b/source/blender/python/api2_2x/Sys.h @@ -32,54 +32,4 @@ #ifndef EXPP_sys_H #define EXPP_sys_H -#include <Python.h> -#include <BLI_blenlib.h> /* for BLI_last_slash() */ -#include "gen_utils.h" -#include "modules.h" - -/*****************************************************************************/ -/* Python API function prototypes for the sys module. */ -/*****************************************************************************/ -static PyObject *M_sys_basename (PyObject *self, PyObject *args); -static PyObject *M_sys_dirname (PyObject *self, PyObject *args); -static PyObject *M_sys_splitext (PyObject *self, PyObject *args); -static PyObject *M_sys_time (PyObject *self); - -/*****************************************************************************/ -/* The following string definitions are used for documentation strings. */ -/* In Python these will be written to the console when doing a */ -/* Blender.sys.__doc__ */ -/*****************************************************************************/ -static char M_sys_doc[] = -"The Blender.sys submodule\n\ -\n\ -This is a minimal system module to supply simple functionality available\n\ -in the default Python module os."; - -static char M_sys_basename_doc[]="(path) - Split 'path' in dir and filename.\n\ -Return the filename."; - -static char M_sys_dirname_doc[]="(path) - Split 'path' in dir and filename.\n\ -Return the dir."; - -static char M_sys_splitext_doc[]="(path) - Split 'path' in root and \ -extension:\n/this/that/file.ext -> ('/this/that/file','.ext').\n\ -Return the pair (root, extension)."; - -static char M_sys_time_doc[]="() - Return a float representing time elapsed \ -in seconds.\n\ -Each successive call is garanteed to return values greater than or\n\ -equal to the previous call."; - -/*****************************************************************************/ -/* Python method structure definition for Blender.sys module: */ -/*****************************************************************************/ -struct PyMethodDef M_sys_methods[] = { - {"basename", M_sys_basename, METH_VARARGS, M_sys_basename_doc}, - {"dirname", M_sys_dirname, METH_VARARGS, M_sys_dirname_doc}, - {"splitext", M_sys_splitext, METH_VARARGS, M_sys_splitext_doc}, - {"time", (PyCFunction)M_sys_time, METH_NOARGS, M_sys_time_doc}, - {NULL, NULL, 0, NULL} -}; - #endif /* EXPP_sys_H */ diff --git a/source/blender/python/api2_2x/doc/Blender.py b/source/blender/python/api2_2x/doc/Blender.py index aebbdc3c77a..6ab831f9336 100644 --- a/source/blender/python/api2_2x/doc/Blender.py +++ b/source/blender/python/api2_2x/doc/Blender.py @@ -21,7 +21,7 @@ The Blender Python API Reference - L{Armature} - L{Bone} - - L{NLA} (new) + - L{NLA} - L{BGL} - L{Camera} - L{Curve} @@ -31,22 +31,22 @@ The Blender Python API Reference - L{Ipo} - L{Lamp} - L{Lattice} - - L{Library} (new) + - L{Library} - L{Material} - - L{Mathutils} (new) + - L{Mathutils} - L{Metaball} - L{NMesh} - - L{Noise} (new) + - L{Noise} - L{Object} - L{Registry} - L{Scene} - - L{Render} (new) + - L{Render} - L{Text} - L{Texture} - L{Types} - L{Window} - L{World} - - L{sys<Sys>} (added time function) + - L{sys<Sys>} Introduction: ------------- diff --git a/source/blender/python/api2_2x/doc/Metaball.py b/source/blender/python/api2_2x/doc/Metaball.py index bd772d7cd31..e4d87195134 100644 --- a/source/blender/python/api2_2x/doc/Metaball.py +++ b/source/blender/python/api2_2x/doc/Metaball.py @@ -5,16 +5,16 @@ The Blender.Metaball submodule This module provides access to the B{Metaball Data} in Blender. -Example: -import Blender - -ob = Blender.Object.New("Mball","mb") -mb = Blender.Metaball.New() -for i in range(20): - mb.addMetaelem([0, float(i),1.0,1.0, 2.0,1,2.0,1.0,1.0,1.0]) -ob.link(mb) -sc = Blender.Scene.getCurrent() -sc.link(ob) +Example:: + import Blender + + ob = Blender.Object.New("Mball","mb") + mb = Blender.Metaball.New() + for i in range(20): + mb.addMetaelem([0, float(i),1.0,1.0, 2.0,1,2.0,1.0,1.0,1.0]) + ob.link(mb) + sc = Blender.Scene.getCurrent() + sc.link(ob) """ @@ -38,7 +38,6 @@ def Get (name): - (): A list with all Metaballs in the current scene. """ - class Metaball: """ The Metaball object @@ -49,157 +48,158 @@ class Metaball: @cvar rot: The rotation of the metaball. @cvar size: The size of the metaball. """ - def addMetaelem(paramslist): - """ - Sets the name of a metaball object - @type name: list - @param name : the list of the parameters for creating a new metaelem - This list has ten elements : - param 1 : int : metaelem type - 0 for a sphere - 1 for a tubex - 2 for a tubey - 3 for a tubez - 4 for a regular tube - 5 for a plane - 6 for an ellipsoid - 7 for a cube - params 2,3,4 : floats, the x, y and z coordinates of the metaelem - param 5 : float, the rad value of the metaelem - param 6 : int, the lay value. - param 7 : float the s value of the metaelem - params 8,9,10 : the expx, expy and expz values of the metaelem. - - @rtype: PyNone - @return: PyNone - """ - + + def addMetaelem(paramslist): + """ + Add a new metaelem to this metaball. 'paramslist' must have the + following ten elements: + - param 1: int - metaelem type: + - 0 for a sphere + - 1 for a tubex + - 2 for a tubey + - 3 for a tubez + - 4 for a regular tube + - 5 for a plane + - 6 for an ellipsoid + - 7 for a cube + - params 2,3,4: floats - the x, y and z coordinates of the metaelem. + - param 5: float - the rad value of the metaelem. + - param 6: int - the lay value. + - param 7: float - the s value of the metaelem. + - params 8,9,10: floats - the expx, expy and expz values of the metaelem. + @type paramslist: list + @param paramslist: the list of the parameters for creating a new metaelem. + + @rtype: None + @return: None + """ + def getName(): """ - Retreives the name of a metaball object + Retrieves the name of a metaball object. @rtype: string - @return: the name of a metaball object + @return: the name of a metaball object. """ - + def setName(name): """ - Sets the name of a metaball object + Sets the name of a metaball object. @type name: string @param name : the new name - @rtype: PyNone - @return: PyNone + @rtype: None + @return: None """ - + def getBbox(): """ - Retreives the bounding box of a metaball object + Retrieves the bounding box of a metaball object. @rtype: a list of 24 floats(8 points, 3 coordinates) @return: the bounding box of a metaball object """ def getNMetaElems(): """ - Retreives the number of metaelems (elementary spheres or cylinders) of a metaball object + Retrieves the number of metaelems (elementary spheres or cylinders) of a metaball object. @rtype: int @return: number of metaelems of a metaball object """ def getLoc(): """ - Retreives the location of a metaball object + Retrieves the location of a metaball object. @rtype: a list of 3 floats - @return: locationof a metaball object + @return: location of a metaball object """ def setLoc(newloc): """ - Sets the location of a metaball object + Sets the location of a metaball object. @type newloc: list of 3 floats @param newloc: the new location - @rtype: PyNone - @return: PyNone + @rtype: None + @return: None """ def getRot(): """ - Retreives the rotation of a metaball object + Retrieves the rotation of a metaball object. @rtype: a list of 3 floats - @return: rotationof a metaball object + @return: rotation of a metaball object """ def setRot(newrot): """ - Sets the rotation of a metaball object + Sets the rotation of a metaball object. @type newrot: list of 3 floats @param newrot: the new rotation - @rtype: PyNone - @return: PyNone + @rtype: None + @return: None """ def getSize(): """ - Retreives the size of a metaball object + Retrieves the size of a metaball object. @rtype: a list of 3 floats @return: size a metaball object """ def setSize(newsize): """ - Sets the size of a metaball object + Sets the size of a metaball object. @type newsize: list of 3 floats @param newsize: the new size - @rtype: PyNone - @return: PyNone + @rtype: None + @return: None """ def getWiresize(): """ - Retreives the wiresize of a metaball object + Retrieves the wiresize of a metaball object. @rtype: float @return: wire size a metaball object """ def setWiresize(newsize): """ - Sets the wire size of a metaball object + Sets the wire size of a metaball object. @type newsize: float @param newsize: the new size - @rtype: PyNone - @return: PyNone + @rtype: None + @return: None """ def getRendersize(): """ - Retreives the rendersize of a metaball object + Retrieves the rendersize of a metaball object. @rtype: float @return: render size a metaball object """ def setRendersize(newsize): """ - Sets the render size of a metaball object + Sets the render size of a metaball object. @type newsize: float @param newsize: the new size - @rtype: PyNone - @return: PyNone + @rtype: None + @return: None """ def getThresh(): """ - Retreives the threshold of a metaball object + Retrieves the threshold of a metaball object. @rtype: float @return: threshold of the metaball object """ def setThresh(threshold): """ - Sets the threshold of a metaball object + Sets the threshold of a metaball object. @type threshold: float @param threshold: the new size - @rtype: PyNone - @return: PyNone + @rtype: None + @return: None """ def getMetadata(name,num): @@ -215,134 +215,134 @@ class Metaball: def setMetadata(name,num,val): """ - The setMetadata function has the same semantics as getMetadata, except that it needs the parameter value, and always returns PyNone. + The setMetadata function has the same semantics as getMetadata, except that it needs the parameter value, and always returns None. @type name: string @param name: the name of the property to be read. The accepted values are :"type", "x", "y", "z", "expx", "expy", "expz", "rad", "rad2", "s", "len". @type num: int @param num: the position of the metaelem to be accessed. @type val: float, except if name is "type". @param val: the new value of the parameter. - @rtype: PyNone - @return: PyNone + @rtype: None + @return: None """ def getMetatype(pos): """ - Retreives the type of a metaelem object + Retrieves the type of a metaelem object. @type pos: int - @param : the position of the metaelement + @param pos: the position of the metaelement @rtype: int @return: type of the metaelem object """ def setMetatype(pos,newtype): """ - Sets the type of a metaelem object + Sets the type of a metaelem object. @type pos: int - @param : the position of the metaelement + @param pos: the position of the metaelement @type newtype: int @param newtype: the new type - @rtype: PyNone - @return: PyNone + @rtype: None + @return: None """ def getMetax(pos): """ - Retreives the x parameter of a metaelem object + Retrieves the x parameter of a metaelem object. @type pos: int - @param : the position of the metaelement + @param pos: the position of the metaelement @rtype: float @return: x parameter of the metaelem object """ def setMetax(pos,newx): """ - Sets the x parameter of a metaelem object + Sets the x parameter of a metaelem object. @type pos: int - @param : the position of the metaelement + @param pos: the position of the metaelement @type newx: float @param newx: the new x parameter value - @rtype: PyNone - @return: PyNone + @rtype: None + @return: None """ def getMetay(pos): """ - Retreives the y parameter of a metaelem object + Retrieves the y parameter of a metaelem object. @type pos: int - @param : the position of the metaelement + @param pos: the position of the metaelement @rtype: float @return: y parameter of the metaelem object """ def setMetay(pos,newy): """ - Sets the y parameter of a metaelem object + Sets the y parameter of a metaelem object. @type pos: int - @param : the position of the metaelement + @param pos: the position of the metaelement @type newy: float @param newy: the new y parameter value - @rtype: PyNone - @return: PyNone + @rtype: None + @return: None """ def getMetaz(pos): """ - Retreives the z parameter of a metaelem object + Retrieves the z parameter of a metaelem object. @type pos: int - @param : the position of the metaelement + @param pos: the position of the metaelement @rtype: float @return: z parameter of the metaelem object """ def setMetaz(pos,newz): """ - Sets the z parameter of a metaelem object + Sets the z parameter of a metaelem object. @type pos: int - @param : the position of the metaelement + @param pos: the position of the metaelement @type newz: float @param newz: the new z parameter value - @rtype: PyNone - @return: PyNone + @rtype: None + @return: None """ def getMetas(pos): """ - Retreives the s parameter of a metaelem object + Retrieves the s parameter of a metaelem object. @type pos: int - @param : the position of the metaelement + @param pos: the position of the metaelement @rtype: float @return: s parameter of the metaelem object """ def setMetas(pos,news): """ - Sets the s parameter of a metaelem object + Sets the s parameter of a metaelem object. @type pos: int - @param : the position of the metaelement + @param pos: the position of the metaelement @type news: float @param news: the new x parameter value - @rtype: PyNone - @return: PyNone + @rtype: None + @return: None """ def getMetalen(pos): """ - Retreives the len parameter of a metaelem object + Retrieves the len parameter of a metaelem object. @type pos: int - @param : the position of the metaelement + @param pos: the position of the metaelement @rtype: float @return: len parameter of the metaelem object """ def setMetalen(pos,newlen): """ - Sets the len parameter of a metaelem object + Sets the len parameter of a metaelem object. @type pos: int - @param : the position of the metaelement + @param pos: the position of the metaelement @type newlen: float @param newlen: the new x parameter value - @rtype: PyNone - @return: PyNone + @rtype: None + @return: None """ diff --git a/source/blender/python/api2_2x/doc/Sys.py b/source/blender/python/api2_2x/doc/Sys.py index d488c8a1f65..515bc6e3fee 100644 --- a/source/blender/python/api2_2x/doc/Sys.py +++ b/source/blender/python/api2_2x/doc/Sys.py @@ -6,7 +6,7 @@ The Blender.sys submodule. sys === -B{New}: L{time} +B{New}: L{exists} This module provides a minimal set of helper functions and data. Its purpose is to avoid the need for the standard Python module 'os', in special 'os.path', @@ -28,6 +28,8 @@ Example:: print 'dirname:', Blender.sys.dirname(filename) print 'splitext:', Blender.sys.splitext(filename) + # what would basename(splitext(filename)[0]) print? + @type sep: char @var sep: the platform-specific dir separator for this Blender: '/' everywhere, except on Win systems, that use '\\'. @@ -66,6 +68,13 @@ def splitext (path): @return: (root, ext) """ +def exists(path): + """ + Tell if the given pathname (file or dir) exists. + @rtype: bool + @return: 1 if 'path' exists, 0 otherwise. + """ + def time (): """ Get the current time in seconds since a fixed value. Successive calls to |