def tkdrawer(filename): geos = read(filename,do_center=1) geo = geos[-1] nat = len(geo) objects = [] for i in range(nat): atnoi,xyzi = geo[i] xi,yi,zi = xyzi for j in range(i): atnoj,xyzj = geo[j] xj,yj,zj = xyzj rij = distance(xyzi,xyzj) rij0 = 0.6*(radius[atnoi]+radius[atnoj]) if 0.3 < rij < rij0: xm,ym,zm = (xi+xj)/2.,(yi+yj)/2.,(zi+zj)/2. objects.append(PolyLine3D(array([[xi,yi,zi],[xm,ym,zm]]), color='blue')) objects.append(PolyLine3D(array([[xj,yj,zj],[xm,ym,zm]]), color='red')) graphics = VisualizationGraphics(objects) window = Frame() window.pack(fill=BOTH, expand=YES) c = VisualizationCanvas(window, "100m", "100m", relief=SUNKEN, border=2) c.pack(side=TOP, fill=BOTH, expand=YES) c.draw(graphics) Button(window, text='Draw', command=lambda o=graphics: c.draw(o)).pack(side=LEFT) Button(window, text='Clear', command=c.clear).pack(side=LEFT) Button(window, text='Redraw', command=c.redraw).pack(side=LEFT) Button(window, text='Quit', command=window.quit).pack(side=RIGHT) window.mainloop()
from Pistol.Util import distance from Pistol.XYZ import read for filename in sys.argv[1:]: geos = read(filename,do_center=1) geo = geos[-1] spheres = [] for atno,(x,y,z) in geo: r,g,b = color[atno] rad = radius[atno] rad *= 0.25 r /= 255. g /= 255. b /= 255. spheres.append(((x,y,z),rad,(r,g,b),20,20)) cyls = [] nat = len(geo) for i in range(nat): atno1,(x1,y1,z1) = geo[i] for j in range(i): atno2,(x2,y2,z2) = geo[j] r12 = distance((x1,y1,z1),(x2,y2,z2)) r12o = 0.6*(radius[atno1]+radius[atno2]) if 0.3 < r12 < r12o: cyls.append(((x1,y1,z1),(x2,y2,z2),0.15,20,(0.5,0.5,0.5))) bs = BSWindow(spheres,cyls) bs.run()