예제 #1
0
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()
예제 #2
0
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()