[vtkusers] Using vtkPolyDataReader with vtkClipPolyData
    Bayliss, Chris (Chicago) 
    cbayliss at gnresound.com
       
    Thu Feb 16 17:59:23 EST 2012
    
    
  
Hi,
 
I am having trouble extracting the appropriate data from a .vtk polydata
file and using it with vtkClipPolyData.  My polydata file contains three
points representing a plane, the file contents are shown below.
 
(Sample1-plane.vtk)
 
# vtk DataFile Version 3.0
vtk output
ASCII
DATASET POLYDATA
POINTS 3 float
-2.31291 -0.472235 -26.3682 27.227 -13.8288 4.74193 -29.2774 -4.23973
-2.38224 
 
VERTICES 3 6
1 0 
1 1 
1 2
 
 
I am not sure how to read/extract this data and convert it into a usable
form for the vtkclipPolyData filter.  My code is below.  Does anyone
know how to compute the origin and normal vector form the polydata file
above?  
 
 
 
//import polydata file from above:
vtkPolyDataReader *trim =vtkPolyDataReader::New();
   trim->SetFileName("C:/Program
Files/VTK/TPS/Debug/Sample1-plane.vtk"); 
   trim->Update();
   
   //Convert vtkpolydatareader object to vtkpolydata
   vtkPolyData* trimpd = trim->GetOutput();
   trimpd->SetPoints(trim->GetOutput()->GetPoints());
   trimpd->SetVerts(trim->GetOutput()->GetVerts());
   trimpd->SetPolys(trim->GetOutput()->GetPolys());
   trimpd->Update();
 
// Write all of the coordinates of the points in the vtkPolyData to the
console.
    for(vtkIdType a = 0; a < trimpd->GetNumberOfPoints(); a++)
      {
      double p[3];
      trimpd->GetPoint(a,p);
      // This is identical to:
      // polydata->GetPoints()->GetPoint(i,p);
      std::cout << "Points in trim plane " << a << " : (" << p[0] << " "
<< p[1] << " " << p[2] << ")" << std::endl;
      }
 
 
//Compute plane normal
   vtkPolyDataNormals *trimnorm = vtkPolyDataNormals::New();
   trimnorm->SetInput(trimpd);
   trimnorm->ComputePointNormalsOn();
   trimnorm->ComputePointNormalsOn();
   trimnorm->ComputeCellNormalsOn();
   trimnorm->Update();
 
 
/*trimpd->GetCellData()->SetNormals(trimnorm->ComputeCellNormalsOn()->Ge
tOutput());*/
 
trimpd->GetCellData()->SetNormals(trimnorm->GetOutput()->GetCellData()->
GetNormals());
   trimpd->Update();
 
///////// Get cell normals ///////////
  vtkDoubleArray *cellNormalsRetrieved =
vtkDoubleArray::SafeDownCast(trimpd/*->GetOutput()*/->GetCellData()->Get
Normals());
  if(cellNormalsRetrieved)
    { 
    cout << "There are " << cellNormalsRetrieved->GetNumberOfTuples() <<
" cell normals." << endl;
    for(vtkIdType i = 0; i < cellNormalsRetrieved->GetNumberOfTuples();
i++)
      {
      double cN[3];
      cellNormalsRetrieved->GetTuple(i, cN);
      cout << "Cell normal " << i << ": " << cN[0] << " " << cN[1] << "
" << cN[2] << endl;
      }
    }
  else
    {
    cout << "No cell normals." << endl;
    }
 
//Create trim plane from polydata:
vtkPlane *trimplane = vtkPlane::New();
   trimplane->SetOrigin(trimpd->GetPoint(0));
   trimplane->SetNormal(0.0, 1.0, 0.0);//made up values, would like to
use output of vtkpolydatanormals somehow.
//clip polydata named "warp": 
   vtkClipPolyData *clipper = vtkClipPolyData::New();
   clipper->SetInputConnection(warp->GetOutputPort());
   clipper->SetClipFunction(trimplane);
   clipper->GenerateClippedOutputOn();
   clipper->SetValue(0.5);
 
Thanks,
 
Chris
**** GN GROUP NOTICE - AUTOMATICALLY INSERTED **** 
The information in this e-mail (including attachments, if any) is considered confidential and is intended only for the recipient(s) listed above. Any review, use, disclosure, distribution or copying of this e-mail is prohibited except by or on behalf of the intended recipient. If you have received this email in error, please notify me immediately by reply e-mail, delete this e-mail, and do not disclose its contents to anyone. Any opinions expressed in this e-mail are those of the individual and not necessarily the GN group. Thank you. 
******************** DISCLAIMER END ************************
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20120216/0b42cc13/attachment.htm>
    
    
More information about the vtkusers
mailing list