[vtkusers] vtkpoly data cannot be updated

Ali Habib ali.mahmoud.habib at gmail.com
Sun Aug 29 10:05:58 EDT 2010


dear All,

I have vtk poly data  , that I use vtkbox widget to select part to cut and
re display it ,

I use the follwoing code but the vtkpolydata cannot be updated

 vtk.vtkDICOMImageReader VDR = new vtk.vtkDICOMImageReader();
                VDR.SetDirectoryName(@"G:\Master
Degree\DataSet\case2\DICOM\PA1\ST1\SE2");
                VDR.SetDataOrigin(0, 0, 0);
                VDR.Update();

                // decrease the dataset data for large data preprocessing

                vtkImageShrink3D VIS = new vtkImageShrink3D();
                VIS.SetShrinkFactors(2, 2, 2);
                VIS.SetInputConnection(VDR.GetOutputPort());
                VIS.Update();

                vtkImageThreshold VIT = new vtkImageThreshold();
                VIT.ThresholdBetween(200, 2000);
                VIT.SetInputConnection(VIS.GetOutputPort());
                VIT.Update();

                double isovalue = 500;

                vtkContourFilter skinExtractor = new vtkContourFilter();
                skinExtractor.SetInputConnection(VIT.GetOutputPort());
                skinExtractor.SetValue(0, isovalue);
                skinExtractor.ComputeGradientsOn();
                skinExtractor.Update();
                gpd = skinExtractor.GetOutput();


            vtk.vtkPolyDataMapper coneMapper = new vtk.vtkPolyDataMapper();
            coneMapper.ScalarVisibilityOff();
            coneMapper.SetInput(gpd);
            maceActor = new vtkLODActor();
            maceActor.SetMapper(coneMapper);
            //////////////////////// Selection Part
/////////////////////////
            planes = new vtkPlanes();

            clipper = new vtkClipPolyData();
            clipper.SetInput(gpd);
            clipper.SetClipFunction(planes);
            clipper.InsideOutOn();


            ///////////////////////////////////////// Cutting part
///////////////////
            clipper_Cut = new vtkClipPolyData();
            clipper_Cut.SetInput(gpd);
            clipper_Cut.SetClipFunction(planes);
            clipper_Cut.InsideOutOff();

            //////////////////////////////////////////////////

            vtkPolyDataMapper selectMapper = new vtkPolyDataMapper();
            selectMapper.SetInput(clipper.GetOutput());
            selectMapper.ScalarVisibilityOff();
            selectActor = new vtkLODActor();
            selectActor.SetMapper(selectMapper);
            selectActor.GetProperty().SetColor(0, 1, 0);
            selectActor.VisibilityOff();
            selectActor.SetScale(1.01, 1.01, 1.01);



            /////////////////////// End of selection
part////////////////////
            ren1 = new vtk.vtkRenderer();

            renWin.AddRenderer(ren1);
            //ren1.SetBackground(0.0f, 0.0f, 0.0f);

            vtkRenderWindowInteractor iren = new
vtkRenderWindowInteractor();
            iren.SetRenderWindow(renWin);

            //The SetInteractor method is how 3D widgets are associated with
the
            //render window interactor.  Internally, SetInteractor sets up a
bunch
            //of callbacks using the Command/Observer mechanism
(AddObserver()).
            vtkBoxWidget boxWidget = new vtkBoxWidget();
            boxWidget.SetInteractor(iren);
            boxWidget.SetPlaceFactor(1.25);
            boxWidget.TranslationEnabledOn();

            ren1.AddActor(maceActor);
            ren1.AddActor(selectActor);

            boxWidget.SetInput(gpd);
            boxWidget.PlaceWidget();

            boxWidget.AddObserver((uint)vtk.EventIds.StartInteractionEvent,
new vtk.vtkDotNetCallback(StartInteractionEvent));
            boxWidget.AddObserver((uint)vtk.EventIds.InteractionEvent, new
vtk.vtkDotNetCallback(InteractionEvent));
            boxWidget.AddObserver((uint)vtk.EventIds.EndInteractionEvent,
new vtk.vtkDotNetCallback(EndInteractionEvent));


            boxWidget.On();


            renWin.AddRenderer(ren1);

             GC.Collect();
//////////////////////////////////////////////////////////////////////////
the event of interaaction
/////////////////////////////////////////////////////////////////

       public void InteractionEvent(vtk.vtkObject obj, uint eventId, Object
data, IntPtr clientdata)
        {
            vtkBoxWidget widget = vtkBoxWidget.SafeDownCast(obj);
            widget.GetPlanes(planes);
            selectActor.VisibilityOn();



        }

///////////////////////////////////////// the button callback  which is the
problem source ////////////////////////////////////////////////////////////

       private void button1_Click(object sender, EventArgs e)
        {
            clipper_Cut.Modified();
            gpd = clipper_Cut.GetOutput();
            clipper_Cut.Modified();

            gpd.Modified();
            maceActor.Modified();

        }
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20100829/d70bca11/attachment.htm>


More information about the vtkusers mailing list