<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal>Hello VTK users,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I’m a student in desperate need of some assistance. I’m volume rendering DICOM images and writing an extensive report for a project that I need to finish in one day. First of all, does anybody know where to find resources on the use of VTK in clinical practice and any kind of helpful sources which I can put in my report?<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Secondly, how do I use the KWWidgets File Browser Dialog widget? <o:p></o:p></p><p class=MsoNormal>It is described here:<o:p></o:p></p><p class=MsoNormal><a href="http://www.kwwidgets.org/doc/nightly/html/classvtkKWFileBrowserDialog.html">http://www.kwwidgets.org/doc/nightly/html/classvtkKWFileBrowserDialog.html</a><o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>The below code creates the widget, but, how do I make the file browser dialog functional so that it selects a DICOM image to read.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span style='color:red'>set dir_browser [vtkKWFileBrowserDialog New]<o:p></o:p></span></p><p class=MsoNormal><span style='color:red'>$dir_browser SetParent [$win GetMainPanelFrame]<o:p></o:p></span></p><p class=MsoNormal><span style='color:red'>$dir_browser Create<o:p></o:p></span></p><p class=MsoNormal><span style='color:red'>pack [$dir_browser GetWidgetName] -side top -anchor nw -expand n -fill x<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I’m asking: which events and commands do I use to link the selection of a file directory to the DICOM image reader? Any and all help is greatly appreciated. <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I’m using Tcl. The following is my complete pipeline:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal># Load the KWWidgets package<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>package require kwwidgets<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal># Create the application<o:p></o:p></p><p class=MsoNormal># If --test was provided, ignore all registry settings, and exit silently<o:p></o:p></p><p class=MsoNormal># Restore the settings that have been saved to the registry, like<o:p></o:p></p><p class=MsoNormal># the geometry of the user interface so far.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>set app [vtkKWApplication New]<o:p></o:p></p><p class=MsoNormal>$app SetName "3d dicom viewer"<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal># Set a help link. Can be a remote link (URL), or a local file<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>$app SetHelpDialogStartingPage "http://www.kwwidgets.org"<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal># Add a window<o:p></o:p></p><p class=MsoNormal># Set 'SupportHelp' to automatically add a menu entry for the help link<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>set win [vtkKWWindow New]<o:p></o:p></p><p class=MsoNormal>$win SupportHelpOn<o:p></o:p></p><p class=MsoNormal>$app AddWindow $win<o:p></o:p></p><p class=MsoNormal>$win Create<o:p></o:p></p><p class=MsoNormal>$win SecondaryPanelVisibilityOff<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal># Add a render widget, attach it to the view frame, and pack<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal># Create a render widget, <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>set rw [vtkKWRenderWidget New]<o:p></o:p></p><p class=MsoNormal>$rw SetParent [$win GetViewFrame]<o:p></o:p></p><p class=MsoNormal>$rw Create<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>pack [$rw GetWidgetName] -side top -expand y -fill both -padx 0 -pady 0<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>#Create a directory browser, attach it to the main panel frame<o:p></o:p></p><p class=MsoNormal><b><o:p> </o:p></b></p><p class=MsoNormal><span style='color:red'>set dir_browser [vtkKWFileBrowserDialog New]<o:p></o:p></span></p><p class=MsoNormal><span style='color:red'>$dir_browser SetParent [$win GetMainPanelFrame]<o:p></o:p></span></p><p class=MsoNormal><span style='color:red'>$dir_browser Create<o:p></o:p></span></p><p class=MsoNormal><span style='color:red'>pack [$dir_browser GetWidgetName] -side top -anchor nw -expand n -fill x<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal># Create a volume reader<o:p></o:p></p><p class=MsoNormal>vtkDICOMImageReader v16<o:p></o:p></p><p class=MsoNormal>v16 SetDirectoryName <span style='color:#00B050'>INSERT FILE DIRECTORY NAME HERE</span><o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>vtkVolumeRayCastCompositeFunction rayCastFunction<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>vtkVolumeRayCastMapper volumeMapper<o:p></o:p></p><p class=MsoNormal> volumeMapper SetInput [v16 GetOutput]<o:p></o:p></p><p class=MsoNormal> volumeMapper SetVolumeRayCastFunction rayCastFunction<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal># Use the render window and renderer of the renderwidget<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> set vpw_frame [vtkKWFrameWithScrollbar New]<o:p></o:p></p><p class=MsoNormal> $vpw_frame SetParent [$win GetMainPanelFrame]<o:p></o:p></p><p class=MsoNormal> $vpw_frame Create<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> pack [$vpw_frame GetWidgetName] -side top -fill both -expand y<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal> # -----------------------------------------------------------------------<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> # Create a volume property widget<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> set vpw [vtkKWVolumePropertyWidget New]<o:p></o:p></p><p class=MsoNormal> $vpw SetParent [$vpw_frame GetFrame] <o:p></o:p></p><p class=MsoNormal> $vpw Create<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal> pack [$vpw GetWidgetName] -side top -anchor nw -expand y -padx 2 -pady 2<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> # Create a volume property and assign it<o:p></o:p></p><p class=MsoNormal> # We need color tfuncs opacity and gradient<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> set vpw_vp [vtkVolumeProperty New]<o:p></o:p></p><p class=MsoNormal> $vpw_vp SetIndependentComponents 1<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> set vpw_cfun [vtkColorTransferFunction New]<o:p></o:p></p><p class=MsoNormal> $vpw_cfun SetColorSpaceToRGB<o:p></o:p></p><p class=MsoNormal> $vpw_cfun AddRGBPoint 0 0.0 0.0 0.0<o:p></o:p></p><p class=MsoNormal> $vpw_cfun AddRGBPoint 500 1.0 0.5 0.3<o:p></o:p></p><p class=MsoNormal> $vpw_cfun AddRGBPoint 1000 1.0 0.5 0.3<o:p></o:p></p><p class=MsoNormal> $vpw_cfun AddRGBPoint 1150 1.0 1.0 0.9<o:p></o:p></p><p class=MsoNormal> $vpw_cfun AddRGBPoint 3150 1.0 1.0 0.9<o:p></o:p></p><p class=MsoNormal> #$vpw_cfun AddHSVSegment 0.0 0.2 1.0 1.0 255.0 0.8 1.0 1.0<o:p></o:p></p><p class=MsoNormal> #$vpw_cfun AddHSVSegment 80 0.8 1.0 1.0 130.0 0.1 1.0 1.0<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> set vpw_ofun [vtkPiecewiseFunction New]<o:p></o:p></p><p class=MsoNormal> $vpw_ofun AddSegment 0.0 0.2 255.0 0.8<o:p></o:p></p><p class=MsoNormal> $vpw_ofun AddSegment 40 0.9 120.0 0.1<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal> set vpw_gfun [vtkPiecewiseFunction New]<o:p></o:p></p><p class=MsoNormal> $vpw_gfun AddSegment 0.0 0.2 60.0 0.4<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal> $vpw_vp SetColor 0 $vpw_cfun<o:p></o:p></p><p class=MsoNormal> $vpw_vp SetScalarOpacity 0 $vpw_ofun<o:p></o:p></p><p class=MsoNormal> $vpw_vp SetGradientOpacity 0 $vpw_gfun<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal> #$vpw SetVolumeProperty volumeProperty<o:p></o:p></p><p class=MsoNormal> $vpw SetVolumeProperty $vpw_vp<o:p></o:p></p><p class=MsoNormal> $vpw SetWindowLevel 565 565<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>#Create volume<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>vtkVolume volume<o:p></o:p></p><p class=MsoNormal> volume SetMapper volumeMapper<o:p></o:p></p><p class=MsoNormal> volume SetProperty $vpw_vp<o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal>#Render volume<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>set ren [$rw GetRenderer]<o:p></o:p></p><p class=MsoNormal>$ren AddViewProp volume<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>$rw ResetCamera<o:p></o:p></p><p class=MsoNormal>set camera [$ren GetActiveCamera]<o:p></o:p></p><p class=MsoNormal>set c [volume GetCenter]<o:p></o:p></p><p class=MsoNormal>$camera SetFocalPoint [lindex $c 0] [lindex $c 1] [lindex $c 2]<o:p></o:p></p><p class=MsoNormal>$camera SetPosition [expr [lindex $c 0] + 400] [lindex $c 1] [lindex $c 2]<o:p></o:p></p><p class=MsoNormal>$camera SetViewUp 0 0 -1<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>#Command linked to volume property widget used in order to update volume property in real-time<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>$vpw SetVolumePropertyChangedCommand $rw "Render"<o:p></o:p></p><p class=MsoNormal>$vpw SetVolumePropertyChangingCommand $rw "Render"<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal># Start the application<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>set ret 0<o:p></o:p></p><p class=MsoNormal>$win Display<o:p></o:p></p><p class=MsoNormal>$app Start<o:p></o:p></p><p class=MsoNormal>set ret [$app GetExitStatus]<o:p></o:p></p><p class=MsoNormal>$win Close<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal># Deallocate and exit<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>$rw Delete<o:p></o:p></p><p class=MsoNormal>$win Delete<o:p></o:p></p><p class=MsoNormal>$app Delete<o:p></o:p></p><p class=MsoNormal>exit $ret<o:p></o:p></p></div></body></html>