<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    The boolean operations are not robust for parallel surfaces.<br>
    <br>
    One way to try to resolve the problem is to move the objects by some
    small delta before applying the boolean operation.<br>
    <br>
    <br>
    On 5/22/2012 11:15 AM, Malsoaz James wrote:
    <blockquote
      cite="mid:1337678103.61899.YahooMailNeo@web171101.mail.ukl.yahoo.com"
      type="cite">
      <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
            moz-do-not-send="true"
            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>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Powered by <a class="moz-txt-link-abbreviated" href="http://www.kitware.com">www.kitware.com</a>

Visit other Kitware open-source projects at <a class="moz-txt-link-freetext" href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a>

Please keep messages on-topic and check the VTK FAQ at: <a class="moz-txt-link-freetext" href="http://www.vtk.org/Wiki/VTK_FAQ">http://www.vtk.org/Wiki/VTK_FAQ</a>

Follow this link to subscribe/unsubscribe:
<a class="moz-txt-link-freetext" href="http://www.vtk.org/mailman/listinfo/vtkusers">http://www.vtk.org/mailman/listinfo/vtkusers</a>
</pre>
    </blockquote>
  </body>
</html>