<html><body><div style="color:#000; background-color:#fff; font-family:arial, helvetica, sans-serif;font-size:12pt"><div><span>Hi,</span></div>
<div><br>
  <span></span></div>
<div><span>So, no one use selection with vtk ?</span></div><div><br></div><div style="font-family: arial, helvetica, sans-serif; font-size: 12pt;"><div style="font-family: times new roman, new york, times, serif; font-size: 12pt;"><font face="Arial" size="2"><hr size="1"><b><span style="font-weight:bold;">De&nbsp;:</span></b> R M &lt;mlokida@yahoo.fr&gt;<br><b><span style="font-weight: bold;">À&nbsp;:</span></b> "vtkusers@vtk.org" &lt;vtkusers@vtk.org&gt;<br><b><span style="font-weight: bold;">Envoyé le :</span></b> Lundi 17 Octobre 2011 15h52<br><b><span style="font-weight: bold;">Objet&nbsp;:</span></b> [vtkusers] Re :  vtkHarswareSelector and vtkMultiBlockDataSet<br></font><br><meta http-equiv="x-dns-prefetch-control" content="off"><div id="yiv133207883"><div><div style="color:#000;background-color:#fff;font-family:arial, helvetica, sans-serif;font-size:12pt;"><div><span>Here's a sample code a</span><span>dapted from
 http://www.vtk.org/Wiki/VTK/Examples/Cxx/Broken/Filtering/ExtractVisibleCells<br></span></div><div><br></div><div>Except my reader that make a vtkMultiBlockDataSet of vtkUnstructuredGrid the code is the same.</div><div><br></div><div>May be someone could tell me what's wrong with the selections I want to do.<br></div><div><br><span></span></div><div><span>#include &lt;vtkSphereSource.h&gt;<br>#include &lt;vtkPolyData.h&gt;<br>#include &lt;vtkSmartPointer.h&gt;<br>#include &lt;vtkPolyDataMapper.h&gt;<br>#include &lt;vtkActor.h&gt;<br>#include &lt;vtkRenderWindow.h&gt;<br>#include &lt;vtkRenderer.h&gt;<br>#include &lt;vtkRenderWindowInteractor.h&gt;<br>#include &lt;vtkHardwareSelector.h&gt;<br>#include &lt;vtkInteractorStyleTrackballCamera.h&gt;<br>#include
 &lt;vtkObjectFactory.h&gt;<br>#include &lt;vtkRendererCollection.h&gt;<br>#include &lt;vtkDataSetMapper.h&gt;<br>#include &lt;vtkExtractSelection.h&gt;<br>#include &lt;vtkSelection.h&gt;<br>#include &lt;vtkProperty.h&gt;<br>#include &lt;vtkMultiBlockDataSet.h&gt;<br>#include &lt;vtkUnstructuredGrid.h&gt;<br>#include &lt;vtkGeometryFilter.h&gt;<br>#include &lt;vtkFieldData.h&gt;<br>#include &lt;vtkSelectionNode.h&gt;<br>#include &lt;vtkIdTypeArray.h&gt;<br>#include &lt;vtkDataSetAttributes.h&gt;<br>#include &lt;vtkInformation.h&gt;<br><br>// Define interaction style<br>class KeyPressInteractorStyle : public vtkInteractorStyleTrackballCamera<br>{<br>public:<br>&nbsp;&nbsp;&nbsp; static KeyPressInteractorStyle* New();<br>&nbsp;&nbsp;&nbsp; vtkTypeMacro(KeyPressInteractorStyle, vtkInteractorStyleTrackballCamera);<br><br>&nbsp;&nbsp;&nbsp; virtual void OnKeyPress()<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // Get the
 keypress<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; std::string key = this-&gt;Interactor-&gt;GetKeySym();<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // "s" for "s"elect<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(key.compare("s") == 0)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkHardwareSelector&gt; selector = vtkSmartPointer&lt;vtkHardwareSelector&gt;::New();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; selector-&gt;SetRenderer(this-&gt;Interactor-&gt;GetRenderWindow()-&gt;GetRenderers()-&gt;GetFirstRenderer());<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; int* temp = this-&gt;Interactor-&gt;GetRenderWindow()-&gt;GetSize();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; unsigned int windowSize[4];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; windowSize[0] = temp[2];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
 &nbsp;&nbsp;&nbsp; windowSize[1] = temp[3];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; windowSize[2] = temp[0];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; windowSize[3] = temp[1];<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; /*<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; for(unsigned int i = 0; i &lt; 4; i++)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; windowSize[i] = temp[i];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; */<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; selector-&gt;SetArea(windowSize);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; selector-&gt;SetFieldAssociation(vtkDataObject::FIELD_ASSOCIATION_CELLS);<br>&nbsp;&nbsp;&nbsp;
 &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; vtkSelection* selection = selector-&gt;Select();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkExtractSelection&gt; extractSelection = vtkSmartPointer&lt;vtkExtractSelection&gt;::New();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; extractSelection-&gt;DebugOn();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; extractSelection-&gt;SetInput(0, mbds);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; extractSelection-&gt;SetInput(1, selection);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; extractSelection-&gt;Update();<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; vtkMultiBlockDataSet *output = vtkMultiBlockDataSet::SafeDownCast( extractSelection-&gt;GetOutput() );<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; for(int i = 0; i &lt;
 output-&gt;GetNumberOfBlocks(); ++i)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; vtkUnstructuredGrid * usg = vtkUnstructuredGrid::SafeDownCast( output-&gt;GetBlock(i) );<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // Add the selection to the renderer<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if(usg)<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkDataSetMapper&gt; mapper = vtkSmartPointer&lt;vtkDataSetMapper&gt;::New();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
 mapper-&gt;SetInput(usg);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkActor&gt; actor = vtkSmartPointer&lt;vtkActor&gt;::New();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; actor-&gt;SetMapper(mapper);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; actor-&gt;GetProperty()-&gt;SetColor(1,0,0);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; this-&gt;Renderer-&gt;AddActor(actor);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
 <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // Forward events<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; vtkInteractorStyleTrackballCamera::OnKeyPress();<br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; vtkMultiBlockDataSet * mbds;<br>&nbsp;&nbsp;&nbsp; vtkRenderer* Renderer;<br><br>};<br>vtkStandardNewMacro(KeyPressInteractorStyle);<br><br>int main(int , char *[])<br>{<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; MyMultiBlockReader mbReader;<br>&nbsp;&nbsp;&nbsp; mbReader-&gt;Update();<br><br>&nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkMultiBlockDataSet&gt; mbds = mbReader-&gt;GetOutput();<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; // Actors array<br>&nbsp;&nbsp;&nbsp; std::vector&lt; vtkSmartPointer&lt;vtkActor&gt; &gt; tabActor;<br><br>&nbsp;&nbsp;&nbsp; // For all blocks<br>&nbsp;&nbsp;&nbsp; for(unsigned int i = 0; i &lt; mbds-&gt;GetNumberOfBlocks(); ++i)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // Block i<br>&nbsp;&nbsp;&nbsp;
 &nbsp;&nbsp;&nbsp; vtkUnstructuredGrid *ptr_usg = vtkUnstructuredGrid::SafeDownCast( mbds-&gt;GetBlock(i) );<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // vtkUnstructuredGrid to vtkPolyData<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkGeometryFilter&gt; geom = vtkSmartPointer&lt;vtkGeometryFilter&gt;::New();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; geom-&gt;SetInput(mbds-&gt;GetBlock(i));<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; geom-&gt;Update();<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // polyData<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkPolyData&gt; polyData =&nbsp; vtkSmartPointer&lt;vtkPolyData&gt;::New();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; polyData-&gt;ShallowCopy( geom-&gt;GetOutput() );<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // Mapper<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkPolyDataMapper&gt; mapper =
 vtkSmartPointer&lt;vtkPolyDataMapper&gt;::New();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; mapper-&gt;SetInput(polyData);<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // Does not work with vtkHardwareSelector. Normal ?<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //vtkSmartPointer&lt;vtkDataSetMapper&gt; mapper = vtkSmartPointer&lt;vtkDataSetMapper&gt;::New();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; //mapper-&gt;SetInput(ptr_usg);<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; // Actor<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkActor&gt; actor = vtkSmartPointer&lt;vtkActor&gt;::New();<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; actor-&gt;SetMapper(mapper);<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; actor-&gt;GetProperty()-&gt;EdgeVisibilityOn();<br><br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; tabActor.push_back(actor);<br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; // Create a renderer, render window,
 and interactor<br>&nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkRenderer&gt; renderer = vtkSmartPointer&lt;vtkRenderer&gt;::New();<br>&nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkRenderWindow&gt; renderWindow = vtkSmartPointer&lt;vtkRenderWindow&gt;::New();<br>&nbsp;&nbsp;&nbsp; renderWindow-&gt;AddRenderer(renderer);<br>&nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;vtkRenderWindowInteractor&gt; renderWindowInteractor = vtkSmartPointer&lt;vtkRenderWindowInteractor&gt;::New();<br>&nbsp;&nbsp;&nbsp; renderWindowInteractor-&gt;SetRenderWindow(renderWindow);<br><br>&nbsp;&nbsp;&nbsp; vtkSmartPointer&lt;KeyPressInteractorStyle&gt; style = vtkSmartPointer&lt;KeyPressInteractorStyle&gt;::New();<br>&nbsp;&nbsp;&nbsp; style-&gt;Renderer = renderer;<br>&nbsp;&nbsp;&nbsp; renderWindowInteractor-&gt;SetInteractorStyle(style);<br>&nbsp;&nbsp;&nbsp; style-&gt;SetCurrentRenderer(renderer);<br>&nbsp;&nbsp;&nbsp; style-&gt;mbds = mbds;<br><br>&nbsp;&nbsp;&nbsp; // Add the actors to the
 scene<br>&nbsp;&nbsp;&nbsp; for(unsigned int i = 0; i &lt; tabActor.size();i++)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; renderer-&gt;AddActor(tabActor[i]);<br>&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; renderer-&gt;SetBackground(.3, .6, .3); // Background color green<br><br>&nbsp;&nbsp;&nbsp; // Render and interact<br>&nbsp;&nbsp;&nbsp; renderWindow-&gt;Render();<br>&nbsp;&nbsp;&nbsp; renderWindowInteractor-&gt;Start();<br><br>&nbsp;&nbsp;&nbsp; return EXIT_SUCCESS;<br>}<br></span></div><div><br></div><div style="font-family:arial, helvetica, sans-serif;font-size:12pt;"><div style="font-family:times new roman, new york, times, serif;font-size:12pt;"><font face="Arial" size="2"><hr size="1"><b><span style="font-weight:bold;">De&nbsp;:</span></b> R M &lt;mlokida@yahoo.fr&gt;<br><b><span style="font-weight:bold;">À&nbsp;:</span></b> "vtkusers@vtk.org" &lt;vtkusers@vtk.org&gt;<br><b><span style="
font-weight:bold;">Envoyé le :</span></b> Lundi 17 Octobre 2011 13h35<br><b><span style="font-weight:bold;">Objet&nbsp;:</span></b> [vtkusers] vtkHarswareSelector and vtkMultiBlockDataSet<br></font><br><div id="yiv133207883"><div><div style="color:#000;background-color:#fff;font-family:arial, helvetica, sans-serif;font-size:12pt;"><div>Hello,</div><div><br></div><div>I want to select cells&nbsp; or points in my application. The geometry is a vtkMultiBlockDataset&nbsp; of vtkUnstructuredGrid.</div><div>I try to use the vtkHardwareSelector but I have a no good selection (no cells selection whereas visible, selection of unvisible cells)<br></div><div>So I must do something wrong but don't know what.</div><div><br></div><div>How should I manage the selection of visible cells and points on a vtkMultiBlockDataset&nbsp; of vtkUnstructuredGrid ? <br></div><div><br></div><div>I really don't know anymore how to
 manage this.</div><div><br></div><div>Any ideas wil be very very welcome.</div><div><br></div><div>Thank you.<br></div><div><br></div><div><br></div></div></div></div><br>_______________________________________________<br>Powered by www.kitware.com<br><br>Visit other Kitware open-source projects at <a rel="nofollow" target="_blank" href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a><br><br>Please keep messages on-topic and check the VTK FAQ at: <a rel="nofollow" target="_blank" href="http://www.vtk.org/Wiki/VTK_FAQ">http://www.vtk.org/Wiki/VTK_FAQ</a><br><br>Follow this link to subscribe/unsubscribe:<br><a rel="nofollow" target="_blank" href="http://www.vtk.org/mailman/listinfo/vtkusers">http://www.vtk.org/mailman/listinfo/vtkusers</a><br><br><br></div></div></div></div></div><meta http-equiv="x-dns-prefetch-control" content="on"><br>_______________________________________________<br>Powered by
 www.kitware.com<br><br>Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br><br>Please keep messages on-topic and check the VTK FAQ at: <a href="http://www.vtk.org/Wiki/VTK_FAQ" target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a><br><br>Follow this link to subscribe/unsubscribe:<br><a href="http://www.vtk.org/mailman/listinfo/vtkusers" target="_blank">http://www.vtk.org/mailman/listinfo/vtkusers</a><br><br><br></div></div></div></body></html>