Guest User

Untitled

a guest
Dec 4th, 2017
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
TCL 2.11 KB | None | 0 0
  1.  
  2. text .t -width 50
  3. frame .f1
  4. label .f1.l1 -text "Delta" -width 15
  5. entry .f1.t1 -width 20 -textvariable delta
  6. pack .f1.l1 .f1.t1 -side left
  7. pack configure .t .f1 -pady 5
  8.  
  9. set array x1
  10. set array y1
  11. set array z1
  12.  
  13. set array x2
  14. set array y2
  15. set array z2
  16.  
  17. proc parse_coord { sz px py pz } {
  18.     upvar $px x $py y $pz z
  19.        
  20.     set sz_length [string length $sz]
  21.     set comma1 [string first "," $sz]
  22.     set x [string range $sz 0 [expr $comma1 - 1] ]
  23.     set x [string trimleft $x]
  24.    
  25.     #set print $x
  26.     #append print "\n"
  27.     # .t insert insert $print
  28.    
  29.     set comma2 [string last "," $sz]
  30.     set y [string range $sz  [expr $comma1 + 1] [expr $comma2 - 1] ]
  31.     set y [string trimleft $y]
  32.    
  33.     #set print $y
  34.     #append print "\n"
  35.     # .t insert insert $print
  36.    
  37.     set z [string range $sz [expr $comma2 + 1] $sz_length ]
  38.     set z [string trimleft $z]
  39.    
  40.     #append z "\n"
  41.     #set print $z
  42.     #append print "\n"
  43.     # .t insert insert $print
  44. }
  45.  
  46. proc distance { p1 p2 } {
  47.     global x1 y1 z1
  48.     global x2 y2 z2
  49.    
  50.     set dx [expr $x1($p1) - $x2($p2)]
  51.     set dy [expr $y1($p1) - $y2($p2)]
  52.     set dz [expr $z1($p1) - $z2($p2)]
  53.    
  54.     return [expr sqrt($dx * $dx + $dy * $dy + $dz * $dz)]
  55. }
  56.  
  57. button .b -text "Select Atoms" -command {
  58.     global x1 y1 z1
  59.     global x2 y2 z2
  60.    
  61.     hcExec "query-response-has-tag false"
  62.  
  63.     set natoms1 [hcQuery "atom-count 1"]
  64.     set print $natoms1
  65.     append print "\n"
  66.      .t insert insert $print
  67.    
  68.     set i 0
  69.     while { $i < $natoms1 } {
  70.         incr i 1
  71.  
  72.         set sz [hcQuery "coordinates($i,1)"]
  73.         parse_coord $sz x1($i) y1($i) z1($i)
  74.     }
  75.    
  76.     set natoms2 [hcQuery "atom-count 2"]
  77.     set print $natoms2
  78.     append print "\n"
  79.      .t insert insert $print
  80.    
  81.     set i 0
  82.     while { $i < $natoms2 } {
  83.         incr i 1
  84.  
  85.         set sz [hcQuery "coordinates($i,2)"]
  86.         parse_coord $sz x2($i) y2($i) z2($i)
  87.  
  88.         hcExec "select-atom $i 2"
  89.     }
  90.  
  91.     #set delta 2
  92.    
  93.     set i 0
  94.     while { $i < $natoms1 } {
  95.         incr i 1
  96.        
  97.         set j 0
  98.         while { $j < $natoms2 } {
  99.             incr j 1
  100.            
  101.             set d [distance $i $j]
  102.             if { $d < $delta } {
  103.                 set print "distance    1($i)\t  2($j)\t =   $d\n"
  104.                  .t insert insert $print
  105.                 hcExec "select-atom $i 1"
  106.             }
  107.         }
  108.        
  109.     }
  110. }
  111.  
  112. pack .b
Add Comment
Please, Sign In to add comment