<font color="#000000"><font size="2"><font face="arial,helvetica,sans-serif">Hello Peter,</font></font></font><div><font color="#000000"><font size="2"><font face="arial,helvetica,sans-serif">You can do it as the following code:</font></font></font></div>

<div><font color="#000000"><font size="2"><font face="arial,helvetica,sans-serif"><br></font></font></font></div><div><font class="Apple-style-span" face="arial, helvetica, sans-serif"><div>  // Set up a transformation for the first cylinder (for intersection testing purpose)</div>

<div>  vtkSmartPointer&lt;vtkTransform&gt; pTrans = vtkSmartPointer&lt;vtkTransform&gt;::New();</div><div>  pTrans-&gt;RotateZ(90);</div><div><br></div><div>  vtkSmartPointer&lt;vtkCylinder&gt; pCylinder1 = vtkSmartPointer&lt;vtkCylinder&gt;::New();</div>

<div>  pCylinder1-&gt;SetCenter(0, 0, 0);</div><div>  pCylinder1-&gt;SetRadius(30);</div><div>  pCylinder1-&gt;SetTransform(pTrans);</div><div><br></div><div>  // Sampling for the purpose to get the surface of cylinder1 later</div>

<div>  vtkSmartPointer&lt;vtkSampleFunction&gt; cylinder1Sample = vtkSmartPointer&lt;vtkSampleFunction&gt;::New();</div><div>  cylinder1Sample-&gt;SetImplicitFunction(pCylinder1);</div><div>  cylinder1Sample-&gt;SetModelBounds(-200, 200, -200, 200, -200, 200);  </div>

<div>  cylinder1Sample-&gt;SetSampleDimensions(100, 100, 100);</div><div>  cylinder1Sample-&gt;ComputeNormalsOff();</div><div>  cylinder1Sample-&gt;Update();</div><div><br></div><div>  vtkSmartPointer&lt;vtkContourFilter&gt; pContourFilter = vtkSmartPointer&lt;vtkContourFilter&gt;::New();</div>

<div>  pContourFilter-&gt;SetInput(cylinder1Sample-&gt;GetOutput());</div><div>  pContourFilter-&gt;SetValue(0, 0.0);  </div><div>  pContourFilter-&gt;Update();</div><div><br></div><div>  vtkSmartPointer&lt;vtkPolyData&gt; pCylinderSurf = vtkSmartPointer&lt;vtkPolyData&gt;::New();</div>

<div>  pCylinderSurf = pContourFilter-&gt;GetOutput(); //  surface of cylinder1</div><div><br></div><div>  // Cylinder2 working with the role as an implicit function</div><div>  vtkSmartPointer&lt;vtkCylinder&gt; pCylinder2 = vtkSmartPointer&lt;vtkCylinder&gt;::New();</div>

<div>  double aCenter[3];  </div><div>  pCylinder2-&gt;SetRadius(30);</div><div>  </div><div>  // Clip cylinder1 here...</div><div>  vtkSmartPointer&lt;vtkClipPolyData&gt; clipper = vtkSmartPointer&lt;vtkClipPolyData&gt;::New();</div>

<div>  clipper-&gt;SetInput(pCylinderSurf);</div><div>  clipper-&gt;SetClipFunction(pCylinder2);</div><div>  clipper-&gt;GenerateClipScalarsOn();  </div><div>  clipper-&gt;GenerateClippedOutputOn();</div><div>  clipper-&gt;SetValue(0.0);</div>

<div><br></div><div>  vtkSmartPointer&lt;vtkPolyData&gt; intersectSurf = vtkSmartPointer&lt;vtkPolyData&gt;::New();</div><div>  intersectSurf = clipper-&gt;GetClippedOutput(); // ==&gt; this result is what you need</div>
<div>
<br></div><div>--</div><div>/Quang</div></font></div><div><font color="#000000"><font size="2"><font face="arial,helvetica,sans-serif"><div><br></div></font></font></font><br><div class="gmail_quote">2011/11/6 Peter <span dir="ltr">&lt;<a href="mailto:peter-dpl@pre-dev.de">peter-dpl@pre-dev.de</a>&gt;</span><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Hi Quang,<br>
<br>
thanks for your answer and sorry for my delayed response. I have to admit that I&#39;m new to vtk so please apologize, that I don&#39;t understand everything.<br>
<br>
Do you mean, that I have to model both cylinders as vtkCylinder and also as vtkCylinderSource? And by using the vtkClipPolyData I will get the &quot;correct&quot; data I need as input for vtkImplicitBoolean?<br>
<br>
Greetings,<br>
Peter<br>
<br>
Am 01.11.2011 um 03:03 schrieb Quang Tran:<br>
<div class="im"><br>
&gt; Hi,<br>
&gt; You should use vtkImplicitBoolean and vtkClipPolyData to do this task. One of cylinder must be modeling to implicit function (you should use vtkCylinder and make any transform if necessary), set this implicit function as an input of the clipper (vtkClipPolydata), see SetClipFunction; the other cylinder is input parameter of SetInput function of clipper. After that you will have a result of this clipper as vtkPolyData. I think this result is what you need.<br>


&gt;<br>
&gt; You should use vtkCylinder rather than vtkCylinderSource because vtkCylinder is an implicit function and can use for clipping.<br>
&gt;<br>
&gt; /Quang<br>
&gt;<br>
<br>
</div><div><div></div><div class="h5">_______________________________________________<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><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>
</div></div></blockquote></div><br></div>