<div class="gmail_quote">On Mon, Mar 1, 2010 at 11:37 PM, Rakesh Patil <span dir="ltr">&lt;<a href="mailto:rakeshthp@in.com">rakeshthp@in.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
 Hi,<br><br>What a stupidity.. I should have done it last time itself.. Please excuse me for that.. So here it goes..<br><br>vtkSmartPointer&lt;vtkMeshQuality&gt; qualityMesh = vtkSmartPointer&lt;vtkMeshQuality&gt;::New();<br>
qualityMesh-&gt;SetInput(uGrid);<br><br>if(_maxAngleQualityFlag)<br>{<br>     qualityMesh-&gt;SetTriangleQualityMeasureToMaxAngle();<br>     qualityMesh-&gt;Update();<br><br>     vtkSmartPointer&lt;vtkDoubleArray&gt; qualityArray = vtkDoubleArray::SafeDownCast( <br>
            qualityMesh-&gt;GetOutput()-&gt;GetCellData()-&gt;GetArray(&quot;Quality&quot;));<br>    qualityArray-&gt;SetName(&quot;qualityArr&quot;);<br><br>    vtkSmartPointer&lt;vtkThreshold&gt; badcells = vtkSmartPointer&lt;vtkThreshold&gt;::New();<br>
    badcells-&gt;SetInput( qualityMesh-&gt;getOutput());<br>    badcells-&gt;ThresholdByUpper(120);<br>    badcells-&gt;SetInputArrayToProcess(0,0,0, vtkDataObject::FIELD_ASSOCIATION_CELLS, &quot;qualityArr&quot;);<br>    badcells-&gt;Update();<br>
<br>    vtkSmartPointer&amp;
 lt;vtkDataSetMapper&gt; mapp = vtkSmartPointer&lt;vtkDataSetMapper&gt;::New();<br>    mapp-&gt;SetInput(badcells-&gt;GetOutput());<br>    mapp-&gt;ScalarVisibilityOff();<br><br>    pRenderer-&gt;RemoveActor(maxAngleActor);<br>
    maxAngleActor = vtkSmartPointer&lt;vtkActor&gt;::New();<br>    maxAngleActor-&gt;SetMapper(mapp);<br>    maxAngleActor-&gt;GetProperty()-&gt;SetColor(0, 0, 1);    <br>    maxAngleActor-&gt;GetProperty()-&gt;SetLineWidth(3);<br>
    maxAngleActor-&gt;GetProperty()-&gt;SetRepresentationToWireframe();<br><br>    pRenderer-&gt;AddActor(maxAngleActor);<br>}<br><br>if(_minAngleQualityFlag)<br>
{<br>
     qualityMesh-&gt;SetTriangleQualityMeasureToMinAngle();<br>
     qualityMesh-&gt;Update();<br>
<br>
     vtkSmartPointer&lt;vtkDoubleArray&gt; qualityArray = 
vtkDoubleArray::SafeDownCast( <br>
            
qualityMesh-&gt;GetOutput()-&gt;GetCellData()-&gt;GetArray(&quot;Quality&quot;));<br>
    qualityArray-&gt;SetName(&quot;qualityArr&quot;);<br>
<br>
    vtkSmartPointer&lt;vtkThreshold&gt; badcells = 
vtkSmartPointer&lt;vtkThreshold&gt;::New();<br>
    badcells-&gt;SetInput( qualityMesh-&gt;getOutput());<br>
    badcells-&gt;ThresholdByLower(20);<br>
    badcells-&gt;SetInputArrayToProcess(0,0,0, 
vtkDataObject::FIELD_ASSOCIATION_CELLS, &quot;qualityArr&quot;);<br>
    badcells-&gt;Update();<br>
<br>
    vtkSmartPointer&lt;vtkDataSetMapper&gt; mapp = 
vtkSmartPointer&lt;vtkDataSetMapper&gt;::New();<br>
    mapp-&gt;SetInput(badcells-&gt;GetOutput());<br>
    mapp-&gt;ScalarVisibilityOff();<br>
<br>
    pRenderer-&gt;RemoveActor(minAngleActor);<br>
    minAngleActor = vtkSmartPointer&lt;vtkActor&gt;::New();<br>
    minAngleActor-&gt;SetMapper(mapp);<br>
    minAngleActor-&gt;GetProperty()-&gt;SetColor(1, 0, 0);    <br>
    minAngleActor-&gt;GetProperty()-&gt;SetLineWidth(3);<br>
    minAngleActor-&gt;GetProperty()-&gt;SetRepresentationToWireframe();<br>
<br>
    pRenderer-&gt;AddActor(minAngleActor);<br>
}<br><br>So in this case, the cells disqualifying min angle criteria will be visible, even if both flags are true. If i change the order of rendering..<br>i.e. minAngle block first and then maxAngle block, then only cells disqualifying max angle criteria are only displayed. <br>
<br>Can you figure out any mistake there??<br><br>Thanks<br><br>Regards<br><font color="#888888">Rakesh Patil</font><div><div></div><div class="h5"></div></div></blockquote></div><br><div>I&#39;m not sure if you can do it with only one vtkMeshQuality filter. Maybe someone can comment if that is possible. I would just go ahead and make a new vtkMeshQuality filter inside each condition:</div>
<div><br></div><div><div>if(_maxAngleQualityFlag)</div><div>{</div><div>vtkSmartPointer&lt;vtkMeshQuality&gt; qualityMesh = vtkSmartPointer&lt;vtkMeshQuality&gt;::New();</div><div>qualityMesh-&gt;SetInput(uGrid);</div><div>
...</div><div><br></div><div><div>if(_minAngleQualityFlag)</div><div>{</div><div>vtkSmartPointer&lt;vtkMeshQuality&gt; qualityMesh2 = vtkSmartPointer&lt;vtkMeshQuality&gt;::New();</div><div>qualityMesh2-&gt;SetInput(uGrid);</div>
<div><br></div><div>qualityMesh2-&gt;SetTriangleQualityMeasureToMinAngle();</div><div>qualityMesh2-&gt;Update();</div><div>....</div></div></div><div><br></div><div>That should definitely work.</div><div><br clear="all">Thanks,<br>
<br>David</div>