From: Bruce S. <Bru...@nc...> - 2009-07-29 18:15:34
|
You merely need to make the object invisible before deleting it: def clearSurface(self): self.surface.visible = False del self.surface ..... The issue is this: The human viewer counts as a reference for a VPython object. For example, if you create ball = sphere() and then later say ball = 3, there is no longer any way to reference the sphere and in a non-VPython program Python would be free to delete the sphere. But because the sphere is still visible on the screen, the reference count does not go to zero and the human viewer can still view the sphere. Hence the documented rule that you need to make an object invisible to get rid of it (though the documentation could be a bit clearer on this). Bruce Sherwood Jamie Riotto wrote: > Sure, here is a scaled down version of the surface demo. I expect > to see only one triangle after the "clearSurface" but I still see two. > > Thanks - jamie > > > > from __future__ import division > from PyQt4.QtCore import * > from PyQt4.QtGui import * > from visual import * > > newframe = frame > > class Object(object): > > def __init__(self, parent=None, frame=None, pos=(0,0,0), axis=(1,0,0), > color=color.green): > self.frame = newframe(frame=frame, pos=pos, axis=axis) > self.surface = faces(frame=self.frame) > self.color = color > self.vertexList = [] > self.normalList = [] > self.colorList = [] > > def clearSurface(self): > del self.surface > self.surface = faces(frame=self.frame) > self.vertexList = [] > self.normalList = [] > > def addTri(self, p1, p2, p3): > """Add a triangle to the model""" > v1 = vector(p1) > v2 = vector(p2) > v3 = vector(p3) > > try: > normal = norm( cross(v2-v1, v3-v1) ) > except: > normal = vector(0,0,0) > > self.vertexList = self.vertexList + [v1,v2,v3] > self.normalList = self.normalList + [normal,normal,normal] > self.colorList = self.colorList + [self.color,self.color,self.color] > > > def computeSurface(self): > """ Create faces out of vertex, normal and color info""" > self.surface = faces(frame=self.frame, pos=self.vertexList, > normal=self.normalList, > color=self.colorList) > > > > if __name__ == '__main__': > # origin sphere for reference > sphere(radius=0.1) > > p1 = (-2, -1, 0) > p2 = (-1, 1, 0) > p3 = (-2, 1, 0) > > > p4 = (3, -1, 0) > p5 = (5, -1, 0) > p6 = (4, 2, 0) > > x=Object() > x.addTri(p1, p2, p3) > x.computeSurface() > > print "new surface" > x.clearSurface() > x.addTri(p4, p5, p6) > x.computeSurface() > print x.vertexList > > > On Wed, Jul 29, 2009 at 8:52 AM, Bruce Sherwood<Bru...@nc...> wrote: >> Could you please post a short test routine that illustrates the problem? >> Thanks. >> >> Bruce Sherwood >> >> Jamie Riotto wrote: >>> I have a VPython faces based object. I would like the user to be able to change >>> fundamental parameters that affect its shape (like setting numSides on >>> a Polygon), >>> but I can't seem to get VPython to re-render the new shape. I've tried >>> to "Del" the >>> existing face list, then create a new one, but the old object is still >>> shown. Any suggestions? >>> >>> Thank - Jamie Riotto >>> >>> ------------------------------------------------------------------------------ >>> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day >>> trial. Simplify your report design, integration and deployment - and focus on >>> what you do best, core application coding. Discover what's new with >>> Crystal Reports now. http://p.sf.net/sfu/bobj-july >>> _______________________________________________ >>> Visualpython-users mailing list >>> Vis...@li... >>> https://lists.sourceforge.net/lists/listinfo/visualpython-users >> ------------------------------------------------------------------------------ >> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day >> trial. Simplify your report design, integration and deployment - and focus on >> what you do best, core application coding. Discover what's new with >> Crystal Reports now. http://p.sf.net/sfu/bobj-july >> _______________________________________________ >> Visualpython-users mailing list >> Vis...@li... >> https://lists.sourceforge.net/lists/listinfo/visualpython-users >> > > ------------------------------------------------------------------------------ > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day > trial. Simplify your report design, integration and deployment - and focus on > what you do best, core application coding. Discover what's new with > Crystal Reports now. http://p.sf.net/sfu/bobj-july > _______________________________________________ > Visualpython-users mailing list > Vis...@li... > https://lists.sourceforge.net/lists/listinfo/visualpython-users |