Changeset 1958 for branches/blt4/gui
- Timestamp:
- Nov 17, 2010, 7:52:26 AM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/blt4/gui/scripts/molvisviewer.tcl
r1955 r1958 876 876 if { $vector != "" } { 877 877 set vertices [ComputeParallelepipedVertices $dataobj] 878 puts stderr "vertices=$vertices"879 878 SendCmd "raw -defer {verts = \[$vertices\]\n}" 880 879 SendCmd "raw -defer {run \$PYMOL_PATH/rappture/box.py\n}" … … 2042 2041 } 2043 2042 2043 # FIXME: Handle 2D vectors 2044 2044 itcl::body Rappture::MolvisViewer::ComputeParallelepipedVertices { dataobj } { 2045 2045 # Create a vector for every 3D point 2046 blt::vector p0(3) p1(3) p2(3) p3(3) p4(3) p5(3) p6(3) p7(3) 2046 blt::vector point0(3) point1(3) point2(3) point3(3) point4(3) point5(3) \ 2047 point6(3) point7(3) origin(3) scale(3) 2047 2048 2048 2049 set count 0 2049 2050 set parent [$dataobj element -as object "components.parallelepiped"] 2050 puts stderr "parent=$parent"2051 2051 foreach child [$parent children] { 2052 puts stderr "child=$child"2053 2052 if { ![string match "vector*" $child] } { 2054 2053 continue … … 2057 2056 set vector [$parent get $child] 2058 2057 regexp -all {,} $vector {} vector 2059 p$count set $vector 2060 } 2058 point$count set $vector 2059 } 2060 itcl::delete object $parent 2061 2061 if { $count < 1 || $count > 3 } { 2062 error "bad number of vectors supplied to paralledepiped" 2063 } 2064 2065 set scale [$dataobj get components.parallelepiped.scale] 2066 set n [llength $scale] 2067 set sx 1.0 2068 set sy 1.0 2069 set sz 1.0 2062 error "bad number of vectors supplied to parallelepiped" 2063 } 2064 set values [$dataobj get components.parallelepiped.scale] 2065 set n [llength $values] 2066 scale set { 1.0 1.0 1.0 } 2070 2067 if { $n == 1 } { 2071 set sx [lindex $scale 0] 2072 set sy [lindex $scale 0] 2073 set sz [lindex $scale 0] 2068 set scale(0:2) [lindex $values 0] 2074 2069 } elseif { $n == 2 } { 2075 set sx [lindex $scale 0] 2076 set sy [lindex $scale 1] 2070 set scale(0:1) [lindex $values 0] 2077 2071 } elseif { $n == 3 } { 2078 set sx [lindex $scale 0] 2079 set sy [lindex $scale 1] 2080 set sz [lindex $scale 2] 2081 } 2082 set origin [$dataobj get components.parallelepiped.origin] 2083 set n [llength $origin] 2084 p0 set { 0.0 0.0 0.0 } 2072 scale set $values 2073 } 2074 set values [$dataobj get components.parallelepiped.origin] 2075 set n [llength $values] 2076 origin set { 0.0 0.0 0.0 } 2085 2077 if { $n == 1 } { 2086 set p0(0) [lindex $origin0]2078 set origin(0) [lindex $values 0] 2087 2079 } elseif { $n == 2 } { 2088 set p0(0) [lindex $origin0]2089 set p0(1) [lindex $origin1]2080 set origin(0) [lindex $values 0] 2081 set origin(1) [lindex $values 1] 2090 2082 } elseif { $n == 3 } { 2091 set p0(0) [lindex $origin 0] 2092 set p0(1) [lindex $origin 1] 2093 set p0(2) [lindex $origin 2] 2094 } 2095 p1 expr {p1 + p0} 2096 p2 expr {p2 + p0} 2097 p3 expr {p3 + p0} 2098 p4 expr {p2 + p1} 2099 p5 expr {p4 + p3} 2100 p6 expr {p2 + p3} 2101 p7 expr {p1 + p3} 2083 origin set $values 2084 } 2085 point0 set { 0.0 0.0 0.0 } 2086 point4 expr {point2 + point1} 2087 point5 expr {point4 + point3} 2088 point6 expr {point2 + point3} 2089 point7 expr {point1 + point3} 2102 2090 2103 2091 # Generate vertices as a string for PyMOL 2104 set s ""2092 set vertices "" 2105 2093 blt::vector x 2106 foreach vertex{ 0 1 0 2 0 3 1 4 2 4 2 6 1 7 3 7 5 7 4 5 3 6 5 } {2107 x expr " p$vertex * $sx"2094 foreach n { 0 1 0 2 0 3 1 4 2 4 2 6 1 7 3 7 5 7 4 5 3 6 5 } { 2095 x expr "(point${n} * scale) + origin" 2108 2096 set values [x values] 2109 append s "\[ [join $values {, }] \], \\\n"2110 } 2111 x expr " p6 * $sx"2097 append vertices "\[ [join $values {, }] \], \\\n" 2098 } 2099 x expr "(point6 * scale) + origin" 2112 2100 set values [x values] 2113 append s "\[ [join $values {, }] \] \\\n" 2114 blt::vector destroy p0 p1 p2 p3 p4 p5 p6 p7 x 2115 return $s 2116 } 2101 append vertices "\[ [join $values {, }] \] \\\n" 2102 blt::vector destroy point0 point1 point2 point3 point4 point5 point6 \ 2103 point7 x origin scale 2104 return $vertices 2105 }
Note: See TracChangeset
for help on using the changeset viewer.