I do not know how to combine sources in the way you are looking. I think that this is actually possibly impossible, since under the hood the BuiltinSurface object has certain vtk sources that are not what you want. However, it should be possible to simply use a different source that gives what you want. In this case, you can create a biconvex lens with mlab.mesh :
a,c,h=3,1,.2 phi,theta = np.mgrid[0:2*np.pi:np.pi/250, 0:2*np.pi:np.pi/250] x=a*np.cos(theta)*np.sin(phi) y=a*np.sin(theta)*np.sin(phi) z=c*np.cos(phi)+(h*(-1)**(np.cos(phi)<0)) mlab.mesh(x,y,z,color=(1,1,1) mlab.show()

One minor difference is that this surface is smooth. This is the nature of the selection of one surface - i.e. This result is a direct consequence of what your question requires. If this is an important function of your figure, I would suggest a completely different approach: wrap 3 sources in the class and the event handler will update the corresponding attributes for all three.
source share