# SelectPolyData

VTKExamples/CSharp/PolyData/SelectPolyData

### Description

A tutorial on how to setup a Windows Forms Application utilizing ActiViz.NET can be found here: Setup a Windows Forms Application to use ActiViz.NET

### Code

SelectPolyData.cs

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Diagnostics;

    using Kitware.VTK;

    namespace ActiViz.Examples {
       public partial class Form1 : Form {
          public Form1() {
             InitializeComponent();
          }

          private void renderWindowControl1_Load(object sender, EventArgs e) {
             try {
                SelectPolyData();
             }
             catch(Exception ex) {
                MessageBox.Show(ex.Message, "Exception", MessageBoxButtons.OK);
             }
          }

          private void SelectPolyData() {
             vtkSphereSource sphereSource = vtkSphereSource.New();
             sphereSource.Update();

             vtkPoints selectionPoints = vtkPoints.New();

             selectionPoints.InsertPoint(0, -0.16553, 0.135971, 0.451972);
             selectionPoints.InsertPoint(1, -0.0880123, -0.134952, 0.4747);
             selectionPoints.InsertPoint(2, 0.00292618, -0.134604, 0.482459);
             selectionPoints.InsertPoint(3, 0.0641941, 0.067112, 0.490947);
             selectionPoints.InsertPoint(4, 0.15577, 0.0734765, 0.469245);
             selectionPoints.InsertPoint(5, 0.166667, -0.129217, 0.454622);
             selectionPoints.InsertPoint(6, 0.241259, -0.123363, 0.420581);
             selectionPoints.InsertPoint(7, 0.240334, 0.0727106, 0.432555);
             selectionPoints.InsertPoint(8, 0.308529, 0.0844311, 0.384357);
             selectionPoints.InsertPoint(9, 0.32672, -0.121674, 0.359187);
             selectionPoints.InsertPoint(10, 0.380721, -0.117342, 0.302527);
             selectionPoints.InsertPoint(11, 0.387804, 0.0455074, 0.312375);
             selectionPoints.InsertPoint(12, 0.43943, -0.111673, 0.211707);
             selectionPoints.InsertPoint(13, 0.470984, -0.0801913, 0.147919);
             selectionPoints.InsertPoint(14, 0.436777, 0.0688872, 0.233021);
             selectionPoints.InsertPoint(15, 0.44874, 0.188852, 0.109882);
             selectionPoints.InsertPoint(16, 0.391352, 0.254285, 0.176943);
             selectionPoints.InsertPoint(17, 0.373274, 0.154162, 0.294296);
             selectionPoints.InsertPoint(18, 0.274659, 0.311654, 0.276609);
             selectionPoints.InsertPoint(19, 0.206068, 0.31396, 0.329702);
             selectionPoints.InsertPoint(20, 0.263789, 0.174982, 0.387308);
             selectionPoints.InsertPoint(21, 0.213034, 0.175485, 0.417142);
             selectionPoints.InsertPoint(22, 0.169113, 0.261974, 0.390286);
             selectionPoints.InsertPoint(23, 0.102552, 0.25997, 0.414814);
             selectionPoints.InsertPoint(24, 0.131512, 0.161254, 0.454705);
             selectionPoints.InsertPoint(25, 0.000192443, 0.156264, 0.475307);
             selectionPoints.InsertPoint(26, -0.0392091, 0.000251724, 0.499943);
             selectionPoints.InsertPoint(27, -0.096161, 0.159646, 0.46438);

             vtkSelectPolyData loop = vtkSelectPolyData.New();
             loop.SetInputConnection(sphereSource.GetOutputPort());
             loop.SetLoop(selectionPoints);
             loop.GenerateSelectionScalarsOn();
             loop.SetSelectionModeToSmallestRegion(); //negative scalars inside

             vtkClipPolyData clip = //clips out positive region
             vtkClipPolyData.New();
             clip.SetInputConnection(loop.GetOutputPort());

             vtkPolyDataMapper clipMapper = vtkPolyDataMapper.New();
             clipMapper.SetInputConnection(clip.GetOutputPort());

             vtkLODActor clipActor = vtkLODActor.New();
             clipActor.SetMapper(clipMapper);

             // get a reference to the renderwindow of our renderWindowControl1
             vtkRenderWindow renderWindow = renderWindowControl1.RenderWindow;
             // renderer
             vtkRenderer renderer = renderWindow.GetRenderers().GetFirstRenderer();
             // set background color
             renderer.SetBackground(.1, .2, .4);
             renderWindow.SetSize(500, 250);
             // add our actor to the renderer
             renderer.AddActor(clipActor);
          }
       }
    }