[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