* Moved public declarations in camera and lamp to a new file: bpy_types.h. * Fixed minor bugs in material, rgbTuple and Lamp + other minor changes. * Made part of the changes to conform to decided naming conventions.
		
			
				
	
	
		
			138 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # Blender.Camera module and Camera PyType test file
 | |
| # This also works with Lamp and Material, simply uncomment the right
 | |
| # line below
 | |
| 
 | |
| MODULE = "Camera"
 | |
| #MODULE = "Lamp"
 | |
| #MODULE = "Material"
 | |
| BPY_OBJECT = MODULE
 | |
| 
 | |
| LONG_STRING = "Supercalifragilisticspialidous"
 | |
| 
 | |
| import types, sys
 | |
| import Blender
 | |
| exec ("from Blender import %s" % MODULE)
 | |
| 
 | |
| def PRINT_HEADER(header, sep):
 | |
|   print "\n", sep * 79 
 | |
|   print header
 | |
|   print sep * 79
 | |
| 
 | |
| def PRINT_UNDERLINED(str):
 | |
|   print "\n", str
 | |
|   print "-" * len(str)
 | |
| 
 | |
| def PRINT_AND_RM(arg, branch, d):
 | |
|   for a in arg:
 | |
|     if a in d:
 | |
|       d.remove(a)
 | |
|       print "\n%s.%s:" % (branch, a),
 | |
|       exec("print %s.%s" % (branch, a))
 | |
| 
 | |
| PRINT_HEADER("Testing the Blender.%s module" % MODULE, '=')
 | |
| 
 | |
| exec ("Module_dir = dir (%s)" % MODULE)
 | |
| print "\ndir (%s):" % MODULE
 | |
| print Module_dir
 | |
| 
 | |
| PRINT_AND_RM (["__name__", "__doc__"], MODULE, Module_dir)
 | |
| 
 | |
| for item in Module_dir:
 | |
|   hooked = 0
 | |
|   branch = "%s.%s" % (MODULE, item)
 | |
|   PRINT_HEADER(branch, "-")
 | |
|   exec ("item_type = type (%s)" % branch)
 | |
|   print item_type
 | |
|   exec ("sub_dir = dir(%s)" % branch)
 | |
|   PRINT_AND_RM (["__name__", "__doc__"], branch, sub_dir)
 | |
|   if item_type == types.BuiltinFunctionType:
 | |
|     PRINT_UNDERLINED ("Executing %s:" % branch)
 | |
|     exec ("result = %s()" % branch)
 | |
|     print "Returned value is: ", result
 | |
|     if item in ["Get", "get"] and not hooked:
 | |
|       if len(result):
 | |
|         obj = result[0]
 | |
|         hooked = 1
 | |
| 
 | |
| if hooked:
 | |
|   PRINT_HEADER(obj, "=")
 | |
|   exec ("obj_dir = dir(obj)")
 | |
|   print "\ndir():"
 | |
|   print obj_dir
 | |
| 
 | |
|   methods = []
 | |
|   member_vars = []
 | |
| 
 | |
|   for item in obj_dir:
 | |
|     exec ("item_type = type (obj.%s)" % item)
 | |
|     if item_type == types.BuiltinMethodType:
 | |
|       methods.append(item)
 | |
|     else:
 | |
|       member_vars.append(item)
 | |
| 
 | |
|   PRINT_HEADER("%s Methods" % BPY_OBJECT, '-')
 | |
|   if methods: print methods
 | |
|   else: print "XXX No methods found in %s" % BPY_OBJECT
 | |
| 
 | |
|   PRINT_HEADER("%s Member Variables" % BPY_OBJECT, '-')
 | |
|   if member_vars:
 | |
|     for m in member_vars:
 | |
|       PRINT_UNDERLINED(m)
 | |
|       exec ("mvalue = obj.%s" % m)
 | |
|       exec ("mtype = type (obj.%s)" % m)
 | |
|       mtype = str(mtype).split("'")[1]
 | |
|       print "%s: %s" % (mtype, mvalue)
 | |
| 
 | |
|       M = m[0].upper() + m[1:]
 | |
|       setM = "set%s" % M
 | |
|       getM = "get%s" % M
 | |
|       if setM in methods:
 | |
|         print "There is a .%s() method." % setM
 | |
|         methods.remove(setM)
 | |
|         if mtype == 'str':
 | |
|           try:
 | |
|             print "Trying to set string to %s" % LONG_STRING
 | |
|             exec("obj.%s('%s')" % (setM, LONG_STRING))
 | |
|             exec("get_str = obj.%s()" % getM)
 | |
|             print "It returned:", get_str
 | |
|             len_str = len(get_str)
 | |
|             if len_str < 100:
 | |
|               print "It correctly clamped the string to %s chars." % len_str
 | |
|           except:
 | |
|             PRINT_HEADER("FAILED in .%s()" % setM, "X")
 | |
|             print sys.exc_info()[0]
 | |
|         elif mtype == 'float':
 | |
|           try:
 | |
|             exec("obj.%s(%d)" % (setM, -999999))
 | |
|             exec("result = obj.%s()" % getM)
 | |
|             print "%s's minimum value is %f" % (m, result)
 | |
|             exec("obj.%s(%d)" % (setM, 999999))
 | |
|             exec("result = obj.%s()" % getM)
 | |
|             print "%s's maximum value is %f" % (m, result)
 | |
|           except:
 | |
|             PRINT_HEADER("FAILED in %s or %s" % (setM, getM), "X")
 | |
|             print sys.exc_info()[0]
 | |
|         elif mtype == 'int':
 | |
|           try:
 | |
|             dict = M+"s"
 | |
|             if dict in member_vars:
 | |
|               exec("key = obj.%s.keys()[1]" % dict)
 | |
|               exec("obj.%s('%s')" % (setM, key))
 | |
|             exec("result = obj.%s()" % getM)
 | |
|           except:
 | |
|             PRINT_HEADER("FAILED in %s or %s" % (setM, getM), "X")
 | |
|             print sys.exc_info()[0]
 | |
| 
 | |
|       if getM in methods:
 | |
|         print "There is a .%s() method." % getM,
 | |
|         methods.remove(getM)
 | |
|         exec("result = obj.%s()" % getM)
 | |
|         print "It returned:", result
 | |
| 
 | |
|   else: print "XXX No member variables found in %s" % BPY_OBJECT
 | |
| 
 | |
| else: # the module .Get() function found nothing
 | |
|   PRINT_HEADER("Failed trying to %s.Get() a %s object"
 | |
|                 % (MODULE, BPY_OBJECT), 'X')
 | |
| 
 |