source: branches/sandbox/rbimport_cartesian.tcl @ 1133

Last change on this file since 1133 was 1133, checked in by lake, 10 years ago

Bug fixes:
1 - sorter in Edit Matrix works correctly.
2 - the last coordinate is no longer dropped when reading in coordinates imported from cartesian and zmatrix.

File size: 5.8 KB
Line 
1
2     set ::rb_loader(cartesian) RB_Cartesian_Load
3     set ::rb_descriptor(cartesian) "Cartesian coordinates from text file"
4
5
6   proc RB_Cartesian_Load {args} {
7
8     destroy .cartesian
9     toplevel .cartesian
10     set cart .cartesian
11
12
13     pack [frame $cart.con -bd 2 -relief groove] -side top
14     pack [frame $cart.display -bd 2 -relief groove] -side top -expand 1 -fill both
15     wm title $cart "Load rigid body information from cartesian coordinate file"
16     wm geometry $cart 600x600+10+10
17     set ::rb_file_load ""
18     set ::rb_cartfile ""
19     set filelist ""
20     set files [glob -nocomplain [file join $::expgui(scriptdir) *.cart]]
21     foreach file $files {
22            lappend ::rb_cartfile [lindex [string map {"/" " "} $file] end]
23     }
24 #    puts $::rb_cartfile
25     set ::rb_file_load [lindex $::rb_cartfile 0]
26 #    grid [label $cart.con.lbl -text "Choose Z-Matrix file to load"] -row 1 -column 0
27 #    eval tk_optionMenu $cart.con.file ::rb_file_load $::rb_cartfile
28 #    grid $cart.con.file -row 1 -column 1
29
30     grid [button $cart.con.but -text "Load Coordinates from File" -width 22 -command "RB_cart $cart.display"] -row 2 -column 1
31     grid [button $cart.con.but2 -text "Save Cartesian Coordinates" -width 22 -command "RB_cart_Build"] -row 3 -column 1
32
33     grid [button $cart.con.but3 -text "Quit" -width 22 -command "destroy .cartesian"] -row 4 -column 1
34}
35
36proc RB_cart {location args} {
37     catch {unset array ::tline}
38     set ::rb_file_load [tk_getOpenFile -parent .cartesian -filetypes {
39            {"Cratesian input" .cart} {"All files" *}}]
40     if {[string trim $::rb_file_load] == ""} return
41     set fh [open $::rb_file_load r]
42     set ::rb_linenum 0
43     while {[gets $fh line] >= 0} {
44           set line [string trim $line]
45           if {$line == ""} continue
46#           puts "blankcheck = $blankcheck\ntemp = $temp"
47#           set temp [string trim $line " "]
48#           if {$blankcheck != "0" && $blankcheck != "-1"}
49#           if {$blankcheck != ""} {
50              incr ::rb_linenum
51              set ::tline($::rb_linenum) [string map {, " "} $line]
52              puts "::tline($::rb_linenum) = $::tline($::rb_linenum) "
53#           }
54
55
56     }
57     RB_cart_Display $location
58
59 }
60
61 proc RB_cart_Display {location args} {
62
63     eval destroy [winfo children $location]
64     foreach {top main side lbl} [MakeScrollTable $location] {}
65     set col [llength $::tline(1)]
66     grid [label $top.col -justify center -text "Ignore \n line"] -row 0 -column 0
67     set ::rb_cart_col(1) "label"
68     set ::rb_cart_col(2) "X"
69     set ::rb_cart_col(3) "Y"
70     set ::rb_cart_col(4) "Z"
71
72
73
74     set ::rb_colnum 0
75     for {set linenum 1} {$linenum <= $::rb_linenum} {incr linenum} {
76         for {set colnum 0} {$colnum <= [expr [llength $::tline($linenum)] -1]} {incr colnum} {
77             grid [label $main.cart$::rb_colnum -text [lindex $::tline($linenum) $colnum] -width 8] -padx 5 -row $linenum -column [expr $colnum + 1]
78             set ::rb_dummy_atom($linenum) 0
79             grid [checkbutton $main.d$::rb_colnum -variable ::rb_dummy_atom($linenum)]  -row $linenum -column 0
80             incr ::rb_colnum
81         }
82     }
83
84       for {set z 1} {$z <= $::rb_colnum} {incr z} {
85         if {$z > 4} {set ::rb_cart_col($z) "Ignore"}
86
87
88         set menu [tk_optionMenu $top.$z ::rb_cart_col($z) atom X Y Z Ignore]
89             $menu entryconfig 1 -command "RB_cart_restraint $z"
90             $menu entryconfig 2 -command "RB_cart_restraint $z"
91             $menu entryconfig 3 -command "RB_cart_restraint $z"
92         grid $top.$z -row 0 -column $z
93         $top.$z config -width 8
94
95     }
96
97     ResizeScrollTable $location
98}
99
100proc RB_cart_restraint {col args} {
101
102     set fixcoord $::rb_cart_col($col)
103          puts "column $col coordinate changed to $fixcoord"
104     for {set z 1} {$z <= $::rb_colnum} {incr z} {
105         if {$z != $col} {
106            if {$::rb_cart_col($z) == $fixcoord} {puts "col $z needs to be changed"}
107            if {$::rb_cart_col($z) == $fixcoord} {set ::rb_cart_col($z) "Ignore"}
108         }
109     }
110}
111
112
113proc RB_cart_Build {} {
114
115     set bodytyp [expr [llength [RigidBodyList]] + 1]
116     set ::rb_num 1
117     set ::rb_matrix_num($bodytyp) 1
118     set sitenum $::rb_linenum
119     set temp $::rb_linenum
120     set colnum [llength $::tline(1)]
121
122     for {set z 1} {$z <= $::rb_colnum} {incr z} {
123        if {$::rb_cart_col($z) == "x" || $::rb_cart_col($z) == "X"} {set ::rb_x_coord [expr $z - 1]}
124        if {$::rb_cart_col($z) == "y" || $::rb_cart_col($z) == "Y"} {set ::rb_y_coord [expr $z - 1]}
125        if {$::rb_cart_col($z) == "z" || $::rb_cart_col($z) == "Z"} {set ::rb_z_coord [expr $z - 1]}
126     }
127   #  puts "x = $::rb_x_coord"
128   #  puts "y = $::rb_y_coord"
129   #  puts "z = $::rb_z_coord"
130
131     set x 1
132     for {set coordnum 1} {$coordnum <= $sitenum} {incr coordnum} {
133         if {$::rb_dummy_atom($coordnum) != 1} {
134  #                puts $::tline($coordnum)
135                  set ::rb_x($bodytyp,1,$x) [lindex $::tline($coordnum) $::rb_x_coord]
136                  set ::rb_y($bodytyp,1,$x) [lindex $::tline($coordnum) $::rb_y_coord]
137                  set ::rb_z($bodytyp,1,$x) [lindex $::tline($coordnum) $::rb_z_coord]
138  #                puts "line = $::tline($coordnum)"
139  #                puts "coors = $::rb_x($bodytyp,1,$coordnum) $::rb_y($bodytyp,1,$coordnum) $::rb_z($bodytyp,1,$coordnum)"
140                  incr x
141         } else {
142         set temp [expr $temp -1]
143         }
144
145     }
146
147     set ::rb_coord_num($bodytyp,1) $temp
148
149
150    #$::rb_notebook raise [$::rb_notebook page 0]
151    # set pane [$::rb_notebook getframe rb_body0]
152    # set con2 $pane.con2
153
154     #RB_Create_Cart $bodytyp $con2
155     destroy .cartesian
156     NewBodyTypeWindow
157}
158
Note: See TracBrowser for help on using the repository browser.