<html><body><div style="color:#000; background-color:#fff; font-family:Courier New, courier, monaco, monospace, sans-serif;font-size:10pt"><div style="font-family: 'Courier New', courier, monaco, monospace, sans-serif; font-size: 10pt; ">Hi VTK users,</div><div style="font-family: 'Courier New', courier, monaco, monospace, sans-serif; font-size: 10pt; "><br></div><div style="font-family: 'Courier New', courier, monaco, monospace, sans-serif; font-size: 10pt; ">I'm using the vtkBooleanOperationPolyDataFilter to apply boolean operations to polydata. Unfortunately, I got unexpected results (holes in the mesh).</div><div style="font-family: 'Courier New', courier, monaco, monospace, sans-serif; font-size: 10pt; "><br></div><div style="font-family: 'Courier New', courier, monaco, monospace, sans-serif; font-size: 10pt; ">You can see here&nbsp;<a href="http://www.hostingpics.net/viewer.php?id=210273error.png" style="font-size: 10pt;
 ">http://www.hostingpics.net/viewer.php?id=210273error.png</a>&nbsp;an example.</div><div style="font-family: 'Courier New', courier, monaco, monospace, sans-serif; font-size: 10pt; ">I'm creating a cylinder, then I'm adding a cube and finally I'm adding another cylinder. The holes appear with the last operation.</div><div style="font-family: 'Courier New', courier, monaco, monospace, sans-serif; font-size: 10pt; "><br></div><div style="font-family: 'Courier New', courier, monaco, monospace, sans-serif; font-size: 10pt; "><br></div><div style="font-family: 'Courier New', courier, monaco, monospace, sans-serif; font-size: 10pt; ">Can someone explain me the reason(s) of these results ?</div><div style="font-family: 'Courier New', courier, monaco, monospace, sans-serif; font-size: 10pt; "><br></div><div style="font-family: 'Courier New', courier, monaco, monospace, sans-serif; font-size: 10pt; ">Here are my source code :</div><div><div><font face="Courier
 New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>vtkCylinderSource * cylinder1 = vtkCylinderSource::New();</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>cylinder1-&gt;SetCenter(0, 10, 0);</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>cylinder1-&gt;SetHeight(50);</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>cylinder1-&gt;SetRadius(5);</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>cylinder1-&gt;SetResolution(100);</font></div><div><font face="Courier New, courier, monaco,
 monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>cylinder1-&gt;Update();</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><br></font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>vtkTriangleFilter * cylinder1Triangle = vtkTriangleFilter::New();</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>cylinder1Triangle-&gt;SetInput(cylinder1-&gt;GetOutput());</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>cylinder1Triangle-&gt;Update();</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><br></font></div><div><font face="Courier New,
 courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>cylinder1-&gt;Delete();</font></div><div><span style="font-family: 'Courier New', courier, monaco, monospace, sans-serif; font-size: 13px;"><br></span></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>vtkCubeSource * cube = vtkCubeSource::New();</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>cube-&gt;SetCenter(0, 10, 0);</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>cube-&gt;SetXLength(50);</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">
        </span>cube-&gt;SetYLength(20);</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>cube-&gt;SetZLength(10);</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>cube-&gt;Update();</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><br></font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>vtkTriangleFilter *cubeTriangle = vtkTriangleFilter::New();</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>cubeTriangle-&gt;SetInput(cube-&gt;GetOutput());</font></div><div><font face="Courier New, courier, monaco, monospace,
 sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>cubeTriangle-&gt;Update();</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><br></font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>cube-&gt;Delete();</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><br></font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>vtkCylinderSource * cylinder2 = vtkCylinderSource::New();</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>cylinder2-&gt;SetCenter(-25, 15, 0);</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span
 class="Apple-tab-span" style="white-space:pre">        </span>cylinder2-&gt;SetHeight(30);</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>cylinder2-&gt;SetRadius(3);</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>cylinder2-&gt;SetResolution(100);</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>cylinder2-&gt;Update();</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><br></font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>vtkTriangleFilter * cylinder2Triangle = vtkTriangleFilter::New();</font></div><div><font
 face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>cylinder2Triangle-&gt;SetInput(cylinder2-&gt;GetOutput());</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>cylinder2Triangle-&gt;Update();</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><br></font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>cylinder2-&gt;Delete();</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><br></font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>vtkBooleanOperationPolyDataFilter * add1 =
 vtkBooleanOperationPolyDataFilter::New();</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>add1-&gt;SetOperationToUnion();</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>add1-&gt;SetInput(0, cylinder1Triangle-&gt;GetOutput());</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>add1-&gt;SetInput(1, cubeTriangle-&gt;GetOutput());</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>add1-&gt;Update();</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><br></font></div><div><font face="Courier New, courier, monaco,
 monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>cubeTriangle-&gt;Delete();</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>cylinder1Triangle-&gt;Delete();</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><br></font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>vtkBooleanOperationPolyDataFilter * add = vtkBooleanOperationPolyDataFilter::New();</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>add-&gt;SetOperationToUnion();</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">
        </span>add-&gt;SetInput(0, add1-&gt;GetOutput());</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>add-&gt;SetInput(1, cylinder2Triangle-&gt;GetOutput());</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>add-&gt;Update();</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><br></font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space:pre">        </span>add1-&gt;Delete();</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2"><span class="Apple-tab-span" style="white-space: pre; ">        </span>cylinder2Triangle-&gt;Delete();</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif"
 size="2"><br></font></div><div><span style="font-family: 'Courier New', courier, monaco, monospace, sans-serif; font-size: 13px; ">Am I doing something wrong in the use of vtkBooleanOperationPolyDataFilter ?</span></div><div><span style="font-family: 'Courier New', courier, monaco, monospace, sans-serif; font-size: 13px; "><br></span></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2">Thank you.</font></div><div><font face="Courier New, courier, monaco, monospace, sans-serif" size="2">Best</font></div></div></div></body></html>