<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=EN-US link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>The cells in vtkPolyData is stored as an array of int. Once you
call RemoveDeleteCells(), the array will be rearranged and compacted to release
unused memory. If you want to keep the original indices, the easiest way is &nbsp;not
to call RemoveDeleteCells() and just mark those cells as deleted.<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>-Jinzhong<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p>&nbsp;</o:p></span></p>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'>

<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>
vtkusers-bounces@vtk.org [mailto:vtkusers-bounces@vtk.org] <b>On Behalf Of </b>da
xu<br>
<b>Sent:</b> Wednesday, August 12, 2009 8:04 PM<br>
<b>To:</b> vtkusers@vtk.org<br>
<b>Subject:</b> [vtkusers] vtkPolyData RemoveDeletedCells() reorders vtkIdType
cellid, so my indexes to them are no longer correct.<o:p></o:p></span></p>

</div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal style='margin-bottom:12.0pt'>Hi all,<br>
I have some cells in a vtkPolyData where I also have a std::list of their index
in my program. Sometimes, I want to delete some of these cells, but when I call
RemoveDeletedCells the cells in my vtkPolyData get re-ordered, so my std::list
index to them are no longer correct. <br>
<br>
My question is there another way to keep track of which cell is which cell if I
do call RemoveDeletedCells and get rid of some of them? Such as a pointer to
each cell within my vtkPolyData...<br>
<br>
Relevant code below:<br>
<br>
pointArray is of vtkPoints<br>
cellArray is of vtkCellArray<br>
<br>
I keep a list of actorIndex to refer to each cell. (each cell is basically just
the point i want to display on the render window). So when I delete actorIndex
10, the old actorIndex 11 becomes 10, and when I try to delete 11 I get an
error....<br>
<br>
AddPoint(double pt[3]) {<br>
<br>
&nbsp;&nbsp;&nbsp; int actorIndex = pointArray-&gt;InsertNextPoint(pt);<br>
&nbsp;&nbsp;&nbsp; polyData-&gt;SetPoints(pointArray);<br>
<br>
&nbsp;&nbsp;&nbsp; int n = pointArray-&gt;GetNumberOfPoints() - 1; // Subtract
one for the correct array index<br>
&nbsp;&nbsp;&nbsp; cellArray-&gt;InsertNextCell(1, &amp;n);<br>
<br>
&nbsp;&nbsp;&nbsp; polyData-&gt;SetVerts(cellArray);<br>
&nbsp;&nbsp;&nbsp; if (n==0) {<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; polyMapper-&gt;SetInput(polyData);<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; actor-&gt;SetMapper(polyMapper);<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
actor-&gt;GetProperty()-&gt;SetRepresentationToPoints();<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; renderer-&gt;AddActor(actor);<br>
&nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp; polyData-&gt;Modified();<br>
...<br>
<br>
Any help/clue/pointer is appreciated! <br>
<br>
-Will<o:p></o:p></p>

</div>

</body>

</html>