Changeset 1881 for branches/blt4/gui/scripts
- Timestamp:
- Aug 25, 2010 7:05:07 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/blt4/gui/scripts/vtkviewer.tcl
r1880 r1881 42 42 private variable _obj2raise ;# maps dataobj => raise flag 0/1 43 43 private variable _obj2vtk ;# maps dataobj => vtk objects 44 private variable _actors 44 private variable _actors "" ;# list of actors for each renderer 45 45 private variable _lights ;# list of lights for each renderer 46 46 private variable _click ;# info used for _move operations … … 86 86 protected method SetActorProperties { actor style } 87 87 88 private method ComputeLimits { args } 89 private method GetLimits {} 88 90 private method BuildCameraTab {} 89 91 private method BuildCutplanesTab {} … … 117 119 118 120 array set _limits { 119 x min 0120 x max 1121 y min 0122 y max 1123 z min 0124 z max 1125 v min 0126 v max 1121 xMin 0 122 xMax 1 123 yMin 0 124 yMax 1 125 zMin 0 126 zMax 1 127 vMin 0 128 vMax 1 127 129 } 128 130 … … 208 210 $_window PolygonSmoothingOn 209 211 212 210 213 set _interactor [vtkRenderWindowInteractor $this-Interactor] 211 214 set _style [vtkInteractorStyleTrackballCamera $this-InteractorStyle] … … 225 228 $_axesWidget SetEnabled 1 226 229 $_axesWidget SetInteractive 0 227 $_axesWidget SetViewport 0 0 0.30.3230 $_axesWidget SetViewport .7 0 1.0 0.3 228 231 229 232 $_cubeAxesActor SetXTitle "X Axis (units)" … … 270 273 271 274 $_renderer AddActor $actor 272 lappend _actors ($_renderer)$actor275 lappend _actors $actor 273 276 #lappend _obj2vtk($dataobj) $actor 274 277 } … … 290 293 291 294 $_renderer AddActor $actor 292 lappend _actors ($_renderer)$actor295 lappend _actors $actor 293 296 #lappend _obj2vtk($dataobj) $mapper $actor 294 297 … … 431 434 # ---------------------------------------------------------------------- 432 435 itcl::body Rappture::VtkViewer::scale {args} { 433 foreach val {xmin xmax ymin ymax zmin zmax vmin vmax} { 434 set _limits($val) "" 435 } 436 foreach obj $args { 437 foreach axis {x y z v} { 438 foreach {min max} [$obj limits $axis] break 439 if {"" != $min && "" != $max} { 440 if {"" == $_limits(${axis}min)} { 441 set _limits(${axis}min) $min 442 set _limits(${axis}max) $max 443 } else { 444 if {$min < $_limits(${axis}min)} { 445 set _limits(${axis}min) $min 446 } 447 if {$max > $_limits(${axis}max)} { 448 set _limits(${axis}max) $max 449 } 450 } 451 } 452 } 453 } 436 eval ComputeLimits $args 454 437 _fixLimits 455 438 } … … 479 462 } 480 463 now { 464 set writer [vtkJPEGWriter $this-vtkJPEGWriter] 465 set large [vtkRenderLargeImage $this-RenderLargeImage] 466 $_axesWidget SetEnabled 0 467 $large SetInput $_renderer 468 $large SetMagnification 4 469 $writer SetInputConnection [$large GetOutputPort] 470 471 $writer SetFileName junk.jpg 472 $writer Write 473 rename $writer "" 474 rename $large "" 475 $_axesWidget SetEnabled 1 476 481 477 $_download export jpg -quality 100 -data bytes 482 478 return [list .jpg $bytes] … … 496 492 itcl::body Rappture::VtkViewer::Clear {} { 497 493 # clear out any old constructs 498 foreach ren [array names _actors] { 499 foreach actor $_actors($ren) { 500 $ren RemoveActor $actor 501 } 502 set _actors($ren) "" 503 } 494 foreach actor $_actors { 495 $_renderer RemoveActor $actor 496 } 497 set _actors "" 504 498 foreach ren [array names _lights] { 505 499 foreach light $_lights($ren) { … … 583 577 set w [winfo width $itk_component(plot)] 584 578 set h [winfo height $itk_component(plot)] 585 set scalex [expr {$_limits(x max)-$_limits(xmin)}]586 set scaley [expr {$_limits(y max)-$_limits(ymin)}]579 set scalex [expr {$_limits(xMax)-$_limits(xMin)}] 580 set scaley [expr {$_limits(yMax)-$_limits(yMin)}] 587 581 set dx [expr {double($x-$_click(x))/$w*$scalex}] 588 582 set dy [expr {double($y-$_click(y))/$h*$scaley}] … … 592 586 # Shift the contour plot in 2D 593 587 # 594 foreach actor $_actors ($_renderer){588 foreach actor $_actors { 595 589 foreach {ax ay az} [$actor GetPosition] break 596 590 $actor SetPosition [expr {$ax+$dx}] [expr {$ay-$dy}] 0 … … 670 664 set newval [lindex $args 1] 671 665 672 set xm [expr {0.5*($_limits(x max)+$_limits(xmin))}]673 set ym [expr {0.5*($_limits(y max)+$_limits(ymin))}]674 set zm [expr {0.5*($_limits(z max)+$_limits(zmin))}]666 set xm [expr {0.5*($_limits(xMax)+$_limits(xMin))}] 667 set ym [expr {0.5*($_limits(yMax)+$_limits(yMin))}] 668 set zm [expr {0.5*($_limits(zMax)+$_limits(zMin))}] 675 669 676 670 set newval [expr {0.01*($newval-50) 677 *($_limits(${axis} max)-$_limits(${axis}min))678 + 0.5*($_limits(${axis} max)+$_limits(${axis}min))}]671 *($_limits(${axis}Max)-$_limits(${axis}Min)) 672 + 0.5*($_limits(${axis}Max)+$_limits(${axis}Min))}] 679 673 680 674 # show the current value in the readout … … 684 678 685 679 # keep a little inside the volume, or the slice will disappear! 686 if {$newval == $_limits(${axis} min)} {687 set range [expr {$_limits(${axis} max)-$_limits(${axis}min)}]680 if {$newval == $_limits(${axis}Min)} { 681 set range [expr {$_limits(${axis}Max)-$_limits(${axis}Min)}] 688 682 set newval [expr {$newval + 1e-6*$range}] 689 683 } … … 715 709 set zn [expr {cos($theta*$deg2rad)}] 716 710 717 set xm [expr {0.5*($_limits(x max)+$_limits(xmin))}]718 set ym [expr {0.5*($_limits(y max)+$_limits(ymin))}]719 set zm [expr {0.5*($_limits(z max)+$_limits(zmin))}]711 set xm [expr {0.5*($_limits(xMax)+$_limits(xMin))}] 712 set ym [expr {0.5*($_limits(yMax)+$_limits(yMin))}] 713 set zm [expr {0.5*($_limits(zMax)+$_limits(zMin))}] 720 714 721 715 set cam [$_renderer GetActiveCamera] … … 760 754 set val [$itk_component(${axis}slicer) get] 761 755 set val [expr {0.01*($val-50) 762 *($_limits(${axis} max)-$_limits(${axis}min))763 + 0.5*($_limits(${axis} max)+$_limits(${axis}min))}]756 *($_limits(${axis}Max)-$_limits(${axis}Min)) 757 + 0.5*($_limits(${axis}Max)+$_limits(${axis}Min))}] 764 758 return "Move the [string toupper $axis] cut plane.\nCurrently: $axis = $val" 765 759 } … … 805 799 -edgevisibility yes 806 800 -edgecolor black 807 -linewidth 3.0801 -linewidth 1.0 808 802 -opacity 1.0 809 803 } … … 843 837 set _dims "0D" 844 838 } 839 ComputeLimits 840 $_cubeAxesActor SetCamera [$_renderer GetActiveCamera] 841 puts stderr limits=[GetLimits] 842 eval $_cubeAxesActor SetBounds [GetLimits] 845 843 846 844 # … … 848 846 # 849 847 # use vmin/vmax if possible, otherwise get from data 850 if {$_limits(v min) == "" || $_limits(vmax) == ""} {848 if {$_limits(vMin) == "" || $_limits(vMax) == ""} { 851 849 set v0 0 852 850 set v1 1 … … 858 856 } 859 857 } else { 860 set v0 $_limits(v min)861 set v1 $_limits(v max)858 set v0 $_limits(vMin) 859 set v1 $_limits(vMax) 862 860 } 863 861 864 862 if 0 { 865 863 set lu $this-vtkLookup 866 864 vtkLookupTable $lu 867 $lu SetTableRange $v0 $v1 868 $lu SetHueRange 0.66667 0.0 869 $lu Build 870 871 lappend _obj2vtk($dataobj) $lu 872 873 if {$_dims == "3D"} { 865 $lu SetTableRange $v0 $v1 866 $lu SetHueRange 0.66667 0.0 867 $lu Build 868 869 lappend _obj2vtk($dataobj) $lu 870 874 871 # 875 872 # 3D LIGHTS (on both sides of all three axes) 876 873 # 877 set x0 $_limits(x min)878 set x1 $_limits(x max)874 set x0 $_limits(xMin) 875 set x1 $_limits(xMax) 879 876 set xm [expr {0.5*($x0+$x1)}] 880 set y0 $_limits(y min)881 set y1 $_limits(y max)877 set y0 $_limits(yMin) 878 set y1 $_limits(yMax) 882 879 set ym [expr {0.5*($y0+$y1)}] 883 set z0 $_limits(z min)884 set z1 $_limits(z max)880 set z0 $_limits(zMin) 881 set z1 $_limits(zMax) 885 882 set zm [expr {0.5*($z0+$z1)}] 886 883 set xr [expr {$x1-$x0}] … … 895 892 $_renderer AddLight $light 896 893 lappend _lights($_renderer) $light 897 } else {898 }899 894 } 900 895 # scan through all data objects and build the contours … … 907 902 $_renderer AddActor $actor 908 903 SetActorProperties $actor $style 909 $_cubeAxesActor SetCamera [$_renderer GetActiveCamera]910 eval $_cubeAxesActor SetBounds [$actor GetBounds]911 912 904 set mapper [$dataobj data $comp] 913 905 $this-xcutter SetInput [$mapper GetInput] 906 #$_cubeAxesActor SetCamera [$_renderer GetActiveCamera] 907 #eval $_cubeAxesActor SetBounds [$actor GetBounds] 908 914 909 915 910 if 0 { … … 1000 995 1001 996 lappend _obj2vtk($dataobj) $iso $mp $ac 1002 lappend _actors ($_renderer)$ac997 lappend _actors $ac 1003 998 1004 999 catch {unset style} … … 1055 1050 1056 1051 $_renderer AddActor $ac 1057 lappend _actors ($_renderer)$ac1052 lappend _actors $ac 1058 1053 lappend _obj2vtk($dataobj) $ac 1059 1054 } … … 1077 1072 1078 1073 $_renderer AddActor $txa 1079 lappend _actors ($_renderer)$txa1074 lappend _actors $txa 1080 1075 1081 1076 lappend _obj2vtk($dataobj) $tx $txa … … 1119 1114 [$ac GetProperty] SetColor 0 0 0 1120 1115 $_renderer AddActor $ac 1121 lappend _actors ($_renderer)$ac1116 lappend _actors $ac 1122 1117 1123 1118 lappend _obj2vtk($dataobj) $pd $tr $mp $ac … … 1144 1139 $ac SetPosition 0 0 0 1145 1140 $_renderer AddActor $ac 1146 lappend _actors ($_renderer)$ac1141 lappend _actors $ac 1147 1142 1148 1143 lappend _obj2vtk($dataobj) $cf $mp $ac … … 1166 1161 eval [$ola GetProperty] SetColor [_color2rgb $itk_option(-plotforeground)] 1167 1162 $_renderer AddActor $ola 1168 lappend _actors ($_renderer)$ola1163 lappend _actors $ola 1169 1164 1170 1165 lappend _obj2vtk($dataobj) $olf $olm $ola … … 1202 1197 1203 1198 lappend _obj2vtk($dataobj) $vtx $vmp $vac 1204 lappend _actors ($_renderer)$vac1199 lappend _actors $vac 1205 1200 1206 1201 $vmp Update … … 1250 1245 if 0 { 1251 1246 $this-vtkRenderer2 AddActor2D $lg 1252 lappend _actors ($this-vtkRenderer2)$lg1247 lappend _actors $lg 1253 1248 lappend _obj2vtk($dataobj) $lg 1254 1249 } … … 1781 1776 1782 1777 } 1778 1779 itcl::body Rappture::VtkViewer::GetLimits {} { 1780 return [list $_limits(xMin) $_limits(xMax) \ 1781 $_limits(yMin) $_limits(yMax) \ 1782 $_limits(zMin) $_limits(zMax)] 1783 } 1784 1785 itcl::body Rappture::VtkViewer::ComputeLimits { args } { 1786 array set _limits { 1787 xMin 0 1788 xMax 1 1789 yMin 0 1790 yMax 1 1791 zMin 0 1792 zMax 1 1793 vMin 0 1794 vMax 1 1795 } 1796 set actors {} 1797 if { [llength $args] > 0 } { 1798 foreach dataobj $args { 1799 foreach comp [$dataobj components] { 1800 lappend actors [$dataobj values $comp] 1801 } 1802 } 1803 } else { 1804 foreach dataobj [get] { 1805 foreach comp [$dataobj components] { 1806 lappend actors [$dataobj values $comp] 1807 } 1808 } 1809 } 1810 if { [llength $actors] == 0 } { 1811 return 1812 } 1813 set actor [lindex $actors 0] 1814 foreach key { xMin xMax yMin yMax zMin zMax} value [$actor GetBounds] { 1815 set _limits($key) $value 1816 } 1817 foreach actor [lrange $actors 1 end] { 1818 foreach { xMin xMax yMin yMax zMin zMax} [$actor GetBounds] break 1819 if { $xMin < $_limits(xMin) } { 1820 set _limits(xMin) $xMin 1821 } 1822 if { $xMax > $_limits(xMax) } { 1823 set _limits(xMax) $xMax 1824 } 1825 if { $yMin < $_limits(yMin) } { 1826 set _limits(yMin) $yMin 1827 } 1828 if { $yMax > $_limits(yMax) } { 1829 set _limits(yMax) $yMax 1830 } 1831 if { $zMin < $_limits(zMin) } { 1832 set _limits(zMin) $zMin 1833 } 1834 if { $zMax > $_limits(zMax) } { 1835 set _limits(zMax) $zMax 1836 } 1837 } 1838 set _limits(vMin) $_limits(zMin) 1839 set _limits(vMax) $_limits(zMax) 1840 }
Note: See TracChangeset
for help on using the changeset viewer.