In the following code, the portion I'm having a problem with is outlined in 
stars, but since the overall code was short, I included it, just in case 
something else might be hindering the process.

When I execute the script, it shows my main window, then if I press the CKEY 
it's *supposed* to call the cleanSlate() function, which grabs and deletes 
objects in the contents of another window.

My problem is, it doesn't execute cleanSlate() until I hit the ESCKEY, or the 
QKEY. In the original example code I'm using as a template(I put in the ev() 
portion of the main template below my current code, so maybe someone could see 
where I deviated from the original, and why the differences in implementing 
redraw) , it's setup in the same manner. 

Why would it not execute immediately(during the main loop) in mine, but in the 
original it does?

import Blender
from Blender.BGL import *
from Blender import Draw, Scene, Object, Mesh
R = G = 0
B = A = 1
title = "Basic Object Manipulation"
instructions = "Select an object to manipulate"
len1 = Draw.GetStringWidth(title)
len2 = Draw.GetStringWidth(instructions)

# Removes default objects in scene

def cleanSlate(scn):
                for ob in scn.objects:
                                if ob.getType == 'Mesh' or 'Camera':
                                                scn.objects.unlink(ob)

#defining the window
def show_win():
                glClearColor(R,G,B,A)                # define color used to 
clear buffers 
                glClear(GL_COLOR_BUFFER_BIT)         # use it to clear the 
color buffer
                glColor3f(0.35,0.18,0.92)            # define default color
                glColor3f(.0,0.0,0.0)                # change default color for 
next item
                glRecti(10, 450, 20+len2, 113)       # sets a box border
                glColor3f(0.2,0.2,0.2)               # change default color for 
next item
                glRasterPos2i(14,435)                # move cursor
                Draw.Text(title)                     # draw this text there
                glRasterPos2i(14,410)                # move cursor again
                Draw.Text(instructions)   # draw another msg
******************************************************************              
# defining the event handling list
def ev(evt, val):
                scn = Scene.getCurrent()
                if evt == Draw.ESCKEY or evt == Draw.QKEY:
                                Draw.Exit()
                elif not val:
                                return
                elif evt == Draw.CKEY: 
                                cleanSlate(scn) 
                else:
                                return
                Draw.Redraw(1)
******************************************************************

# build the window
Draw.Register(show_win, ev, None)      # start the main loop


#End code


This is the original ev()
**********************************************************

def ev(evt, val):                      # event callback for Draw.Register()
   global R,G,B,A                       # ... it handles input events
   if evt == Draw.ESCKEY or evt == Draw.QKEY:
     Draw.Exit()                        # this quits the script
   elif not val: return
   elif evt == Draw.LEFTMOUSE: R = 1 - R
   elif evt == Draw.MIDDLEMOUSE: G = 1 - G
   elif evt == Draw.RIGHTMOUSE: B = 1 - B
   elif evt == Draw.WHEELUPMOUSE:
     R += 0.1
     if R > 1: R = 1
   elif evt == Draw.WHEELDOWNMOUSE:
     R -= 0.1
     if R < 0: R = 0
   else:
     return                             # don't redraw if nothing changed
   Draw.Redraw(1)


TIA,
David


      
_______________________________________________
Tutor maillist  -  [email protected]
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to