[vtkusers] Problem with creating a UI using KWWidgets

Sharwari Mavalankar sharwari at gmail.com
Mon Oct 16 19:38:58 EDT 2006


hi all,
I am working on creating a UI using KWWidgets.
I want to display a 3D volume in this UI from 2D BMP slices.
The volume rendering is working fine without the UI.But I seem to have some
problem with the UI.
It displays the UI window, but I cannot see the 3D volume inside it.
Addionally on running the program I get the following error on the vtkoutput
window.

ERROR: In C:\Program
Files\KWWidgets\KWWidgets-HEAD-cvs\vtkKWTkUtilities.cxx, line 221
vtkKWApplication (0x03414370):
    Script:
vtkTkRenderWidget .1.10.18.21.22.25.100.102.104.107.108 -rw Addr=03428710
    Returned Error on line 1:
invalid command name "vtkTkRenderWidget"
Stack trace:
invalid command name "vtkTkRenderWidget"
    while executing
"vtkTkRenderWidget .1.10.18.21.22.25.100.102.104.107.108 -rw Addr=03428710"


ERROR: In C:\Program Files\KWWidgets\KWWidgets-HEAD-cvs\vtkKWWidget.cxx,
line 301
vtkKWCoreWidget (0x03428990): Error creating the widget
.1.10.18.21.22.25.100.102.104.107.108 of type vtkTkRenderWidget: invalid
command name "vtkTkRenderWidget"

ERROR: In C:\Program
Files\KWWidgets\KWWidgets-HEAD-cvs\vtkKWTkUtilities.cxx, line 221
vtkKWApplication (0x03414370):
    Script:
grid .1.10.18.21.22.25.100.102.104.107.108 -row 0 -column 0 -sticky nsew
    Returned Error on line 1:
bad window path name ".1.10.18.21.22.25.100.102.104.107.108"
Stack trace:
bad window path name ".1.10.18.21.22.25.100.102.104.107.108"
    while executing
"grid .1.10.18.21.22.25.100.102.104.107.108 -row 0 -column 0 -sticky nsew"


ERROR: In C:\Program
Files\KWWidgets\KWWidgets-HEAD-cvs\vtkKWApplication.cxx, line 999
vtkKWApplication (0x03414370): TclTk error: Object named: vtkTemp44, could
not find requested method: ConfigureCallback
or the method was called with incorrect arguments.

Object named: vtkTemp44, could not find requested method: ConfigureCallback
or the method was called with incorrect arguments.

    while executing
"vtkTemp44 ConfigureCallback 900 668"
    (command bound to event)

 Here is my code

//The following code includes the vtk code and the KWWidgets code for the
user interface.
#include "vtkRenderer.h"
#include "vtkRenderWindow.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkBMPReader.h"
#include "vtkPolyDataMapper.h"
#include "vtkActor.h"
#include "vtkActor2D.h"
#include "vtkImageActor.h"
#include "vtkOutlineFilter.h"
#include "vtkCamera.h"
#include "vtkProperty.h"
#include "vtkPolyDataNormals.h"
#include "vtkContourFilter.h"
#include "vtkDataSetMapper.h"
#include "vtkImageMapper.h"
#include "vtkVolumeMapper.h"
#include "vtkVolumeRayCastMapper.h"
#include "vtkVolumeRayCastCompositeFunction.h"
#include "vtkPiecewiseFunction.h"
#include "vtkVolumeProperty.h"
#include "vtkColorTransferFunction.h"
#include "vtkLight.h"
#include "vtkFixedPointVolumeRayCastMapper.h"
#include "vtkKWApplication.h"
#include "vtkKWWindowBase.h"
#include "vtkKWRenderWidget.h"
#include "vtkKWWindow.h"
#include "vtkKWFrame.h"

int main(int argc, char *argv[])
{

 // Initialize Tcl.This is required otherwise the program crashes.

 Tcl_Interp *interp = vtkKWApplication::InitializeTcl(argc, argv, &cerr);
  if (!interp)
  {
  cerr << "Error: InitializeTcl failed" << endl ;
  return 1;
  }


//using bmp to read gray image
 vtkBMPReader *reader = vtkBMPReader::New();
 reader->SetFilePattern("%s%d.bmp");

  reader->SetFilePrefix("C:\\Images\\PositionCReal\\Depth5mm\\slice");


 reader->SetDataExtent(0, 310, 0, 310, 1, 8);
 reader->SetDataSpacing(1.0,1.0,20.0);
 reader->SetDataOrigin(0.0, 0.0, 0.0);
 reader->Update();


 //vtkImageData *finalImg = reader->GetOutput();


 vtkPiecewiseFunction *tfun = vtkPiecewiseFunction::New();

//The following lines of code displays the copper target for position A and
C
 tfun->AddPoint(128,0.009);
 tfun->AddPoint(180,1.0);
 tfun->AddPoint(200,1.0);
 tfun->AddPoint(255,0.0009);

  vtkFixedPointVolumeRayCastMapper *volumeMapper =
vtkFixedPointVolumeRayCastMapper::New();

 //volumeMapper->SetSampleDistance(1.0);

 //volumeMapper->SetInput(finalImg);
 volumeMapper->SetInput(reader->GetOutput());

 vtkVolumeProperty *volumeProperty = vtkVolumeProperty::New();

  //show gray volume
 volumeProperty->IndependentComponentsOff();
 volumeProperty->SetScalarOpacity(tfun);



 vtkVolume *newvol = vtkVolume::New();
 newvol->SetMapper(volumeMapper);
 newvol->SetProperty(volumeProperty);

 vtkOutlineFilter *outline = vtkOutlineFilter::New();
 outline->SetInput((vtkDataSet *) reader->GetOutput());

 vtkPolyDataMapper *outlineMapper = vtkPolyDataMapper::New();
 outlineMapper->SetInput(outline->GetOutput());

 vtkActor *outlineActor = vtkActor::New();
 outlineActor->SetMapper(outlineMapper);
 outlineActor->GetProperty()->SetColor(1,1,1);



 //Create a KWWidgets Application
 vtkKWApplication *app = vtkKWApplication::New();
 app->SetRegistryLevel(0);
 app->PromptBeforeExitOff();


 vtkKWTopLevel *top = vtkKWTopLevel::New();
 top->SetApplication(app);
 top->Create();


 //Add a window for the application
 vtkKWWindow *win = vtkKWWindow::New();
 app->AddWindow(win);
 win->SecondaryPanelVisibilityOff();
 win->MainPanelVisibilityOff();
 win->Create();


 vtkKWRenderWidget *renderwidget = vtkKWRenderWidget::New();
 renderwidget->SetParent(win->GetViewFrame());
 renderwidget->Create();
 renderwidget->AddViewProp(newvol);
 renderwidget->CornerAnnotationVisibilityOn();
 app->Script("pack %s -expand y -fill both -anchor c -expand
y",renderwidget->GetWidgetName());

 win->Display();
 app->Start();



 win->Display();
 app->Start();


 return(0);

}

Can someone please help me out.

Thanks

Sharwari
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20061016/c827152b/attachment.htm>


More information about the vtkusers mailing list