<div dir="ltr">I use the following code to select a part and translate it , but as u can see in the image  the selected red part nt like the green one (which is the result of transformation)<div><br></div><div>My question is how to make the translated part be as the selected part </div>
<div><br></div><div>My code is :</div><div><br></div><div><div>static vtkLODActor SourceActor;</div><div>        //static vtkLODActor SourceActor_2;</div><div>        static vtkLODActor SelectActor;</div><div>        static vtkTransform t = new vtkTransform();</div>
<div>        static vtkClipPolyData clipper;</div><div>       static vtkPlanes planes;</div><div>       static bool transfer  = false ;</div><div><br></div><div>        public Form1()</div><div>        {</div><div>            InitializeComponent();</div>
<div><br></div><div>            this.AddInputToWindow(this.vtkFormsWindowControl1.GetRenderWindow() );</div><div><br></div><div><br></div><div>        }</div><div>            void AddInputToWindow(vtk.vtkRenderWindow renWin )</div>
<div>        {</div><div>            vtk.vtkDICOMImageReader VDR = new vtk.vtkDICOMImageReader();</div><div>            VDR.SetDirectoryName(@&quot;G:\Master Degree\DataSet\case2\DICOM\PA1\ST1\SE2&quot;);</div><div>            VDR.SetDataOrigin(0, 0, 0);</div>
<div>            VDR.Update();</div><div><br></div><div>            // decrease the dataset data for large data preprocessing </div><div><br></div><div>            vtkImageShrink3D VIS = new vtkImageShrink3D();</div><div>
            VIS.SetShrinkFactors(2, 2, 2);</div><div>            VIS.SetInputConnection(VDR.GetOutputPort());</div><div>            VIS.Update();</div><div><br></div><div>            vtkImageThreshold VIT = new vtkImageThreshold();</div>
<div>            VIT.ThresholdBetween(200, 2000);</div><div>            VIT.SetInputConnection(VIS.GetOutputPort());</div><div>            VIT.Update();</div><div><br></div><div>            ///// Start the creation of volume rendering </div>
<div><br></div><div>            //1. Gget the range of data </div><div>            vtk.vtkImageChangeInformation VIC = new vtk.vtkImageChangeInformation();</div><div>            VIC.SetInput(VDR.GetOutput());</div><div>            VIC.CenterImageOn();</div>
<div>            VIC.Update();</div><div><br></div><div>            vtk.vtkImageData VoxelData = new vtk.vtkImageData();</div><div>            VoxelData = VIC.GetOutput();</div><div><br></div><div>            double[] metaScalarRange = VoxelData.GetScalarRange();</div>
<div><br></div><div><br></div><div>            // Render the skin - Soft tissue </div><div>            double isovalue = 500;</div><div><br></div><div><br></div><div>            vtkContourFilter skinExtractor = new vtkContourFilter();</div>
<div>            skinExtractor.SetInputConnection(VIT.GetOutputPort());</div><div>            skinExtractor.SetValue(0, isovalue);</div><div>            skinExtractor.ComputeGradientsOn();</div><div>            skinExtractor.Update();</div>
<div><br></div><div><br></div><div>            planes = new vtkPlanes();</div><div>            </div><div>            clipper = new vtkClipPolyData();</div><div>            clipper.SetInput(skinExtractor.GetOutput());</div>
<div>            //clipper.SetClipFunction(planes);</div><div>            clipper.InsideOutOn();</div><div>          //  clipper.Update();</div><div><br></div><div>            // Select only the region of interest </div><div>
            vtk.vtkPolyDataMapper SourceMapper = new vtk.vtkPolyDataMapper();</div><div>            SourceMapper.SetInput(skinExtractor.GetOutput());</div><div>            SourceMapper.ScalarVisibilityOff();</div><div>           </div>
<div>            vtk.vtkPolyDataMapper SelectionMapper = new vtk.vtkPolyDataMapper();</div><div>            SelectionMapper.SetInput(clipper.GetOutput());</div><div>            SelectionMapper.ScalarVisibilityOff();</div>
<div>            SourceActor = new vtk.vtkLODActor();</div><div>            SelectActor = new vtkLODActor();</div><div><br></div><div><br></div><div>            //SourceActor.GetProperty().SetRepresentationToWireframe();</div>
<div><br></div><div>            SourceActor.GetProperty().SetColor(1, 0, 0);</div><div>            SourceActor.SetMapper(SourceMapper);</div><div>            </div><div>            SelectActor.GetProperty().SetColor(0, 1, 0);</div>
<div>            SelectActor.SetMapper(SelectionMapper);</div><div>            SelectActor.VisibilityOff();</div><div><br></div><div>            vtk.vtkRenderer ren1 = new vtk.vtkRenderer();</div><div>            renWin.AddRenderer(ren1);</div>
<div>            </div><div>            vtkRenderWindowInteractor iren = new vtk.vtkRenderWindowInteractor();</div><div>            iren.SetRenderWindow(renWin);</div><div><br></div><div>            // The box widget observes the events invoked by the render window</div>
<div>            // interactor.  These events come from user interaction in the render</div><div>            //window.</div><div>            vtkBoxWidget boxWidget = new vtk.vtkBoxWidget();</div><div>            boxWidget.SetInteractor(iren);</div>
<div>            boxWidget.SetPlaceFactor(1.25);</div><div>           // boxWidget.ScalingEnabledOff();</div><div>            ren1.AddActor(SourceActor);</div><div>            ren1.AddActor(SelectActor);</div><div><br></div>
<div>            ren1.SetBackground(0.0f, 0.0f, 0.0f);</div><div>            renWin.AddRenderer(ren1);</div><div>            boxWidget.SetProp3D(SourceActor);</div><div>            boxWidget.PlaceWidget();</div><div>            boxWidget.AddObserver((uint)vtk.EventIds.InteractionEvent, new vtk.vtkDotNetCallback(Cut_Object));</div>
<div>            boxWidget.AddObserver((uint)vtk.EventIds.EndInteractionEvent, new vtk.vtkDotNetCallback(transfer_Object));</div><div>            boxWidget.On();</div><div>            GC.Collect();</div><div><br></div><div>
        }</div><div>        static void Cut_Object(vtk.vtkObject obj, uint eventId, Object data, IntPtr clientdata)</div><div>        {</div><div>            vtkBoxWidget widget = vtkBoxWidget.SafeDownCast(obj);</div><div>
            if(! transfer)</div><div>                            {</div><div>                widget.GetPlanes(planes);</div><div>                clipper.SetClipFunction(planes);</div><div>                clipper.Update();</div>
<div>                SelectActor.SetUserTransform(t); SelectActor.VisibilityOn();</div><div>            </div><div>            </div><div>            }</div><div><br></div><div>        }</div><div>       static void transfer_Object(vtk.vtkObject obj, uint eventId, Object data, IntPtr clientdata)</div>
<div>        {</div><div>            vtkBoxWidget widget = vtkBoxWidget.SafeDownCast(obj);</div><div><br></div><div>            if (transfer)</div><div>            {</div><div>                  widget.ScalingEnabledOff();</div>
<div>                widget.GetTransform(t);</div><div>                SelectActor.SetUserTransform(t); SelectActor.VisibilityOn();</div><div>               widget.ScalingEnabledOn(); </div><div>               </div><div>
            }</div><div>             </div><div><br></div><div>        }</div></div><div><br></div><div>Any suggestion please </div><div><br></div><div>thanks in advance </div></div>