- small updates to scripts and bpython docs, also fixed two warnings;
authorWillian Padovani Germano <wpgermano@gmail.com>
Thu, 10 Jun 2004 15:14:49 +0000 (15:14 +0000)
committerWillian Padovani Germano <wpgermano@gmail.com>
Thu, 10 Jun 2004 15:14:49 +0000 (15:14 +0000)
- 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.

release/scripts/bvh_export.py
release/scripts/obj_export.py
source/blender/python/api2_2x/Object.c
source/blender/python/api2_2x/Sys.c
source/blender/python/api2_2x/Sys.h
source/blender/python/api2_2x/doc/Blender.py
source/blender/python/api2_2x/doc/Metaball.py
source/blender/python/api2_2x/doc/Sys.py

index 7f6ad856c046eac795aa9d3b8ffe1a63ccc9e784..9309b76c47695a704829237028a2479c0e00a2a6 100644 (file)
@@ -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 = []
index ecf081cf55cc9bc0d8e33d469f9d99b98ba31d44..ccbed6feae3f411262e664c9bfb039cc6a264c27 100644 (file)
@@ -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 
index f828980257c8ef73c6d4ec50d6ca525e9fe1bd4b..346f8f24dd2535425d28b80b7f412e820d5a11b2 100644 (file)
 
 #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.                                       */
index 56f3a64d4897f69b2ada184e783e5cf8749a7b58..81488c2c67656da619c68b7c5e7a282deb8417dc 100644 (file)
  * ***** 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 */
+}
index 446ac91490b2a7c646c383152eab415ceb5fc1f0..f50eba8135f2e463adba5afaddca1b3392a2cbff 100644 (file)
 #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 */
index aebbdc3c77a8ca8779219498ad00d470fce52d5f..6ab831f93362d0e761d4536eeb7dbce91dc9fe5c 100644 (file)
@@ -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:
  -------------
index bd772d7cd31f6c11ee01628622e407ce6cd561b9..e4d8719513481cc1a8a939f63853c448593d89e6 100644 (file)
@@ -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
     """
index d488c8a1f65899e356c8dd1f865f6e8a01197389..515bc6e3feef3aaac0c0f3c2839604a96b723929 100644 (file)
@@ -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