<div dir="ltr">Hi Matt and everyone,<div><br></div><div>So it seems the best thing to do is to convert the triangle strips to another representation (supported by ITK) and then use MeshFileReader/Writer normally, right?</div>
<div><br></div><div>I used VTK to do that, changing everything to polygons, and so MeshFileReader/Writer were finally able to read and write the models without data losses. Thank you very much for your help with that!</div>
<div><br></div><div>But there are still a problem: when I try to convert the resulting mesh to a simplex mesh (using TriangleMeshToSimplexMeshFilter), my program seems to enter an infinite loop. Trying to perform the same conversion in another mesh (that one from the ITK example I mentioned earlier, which already uses the polygon representation), everything works fine and my program executes in just a few seconds. So perhaps there's something wrong in my triangle strips -> polygons conversion.</div>
<div><br></div><div>Below is the source code for such conversion. I used VTK, so maybe this is not the right place to ask, but any help would be greatly appreciated.</div><div><br></div><div>===========================================================================================================================</div>
<div><div><font face="courier new, monospace">  // Read the input VTK polydata.</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">  vtkSmartPointer<vtkPolyDataReader> reader = vtkSmartPointer<vtkPolyDataReader>::New();</font></div>
<div><font face="courier new, monospace">  reader->SetFileName(inputFileName.c_str());</font></div><div><font face="courier new, monospace">  reader->Update();</font></div><div><font face="courier new, monospace"><br>
</font></div><div><font face="courier new, monospace">  std::cout << "PolyData read ok\n";</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">  // Convert the triangle strips to polygons.</font></div>
<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">  vtkSmartPointer<vtkPolyData> originalPoly = reader->GetOutput();</font></div><div><font face="courier new, monospace"><br>
</font></div><div><font face="courier new, monospace">  vtkIdType    npts = 0;</font></div><div><font face="courier new, monospace">  vtkIdType    *pts = NULL;</font></div><div><font face="courier new, monospace">  vtkCellArray *strips = originalPoly->GetStrips();</font></div>
<div><font face="courier new, monospace">  vtkCellArray *triangles = vtkCellArray::New();</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">  for (strips->InitTraversal(); strips->GetNextCell(npts, pts); )</font></div>
<div><font face="courier new, monospace">    vtkTriangleStrip::DecomposeStrip(npts, pts, triangles);</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">  vtkSmartPointer<vtkPolyData> newPoly = vtkPolyData::New();</font></div>
<div><font face="courier new, monospace">  newPoly->SetPoints(originalPoly->GetPoints());</font></div><div><font face="courier new, monospace">  newPoly->SetPolys(triangles);</font></div><div><font face="courier new, monospace">  newPoly->BuildLinks();</font></div>
<div><font face="courier new, monospace">  triangles->Delete();</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">  std::cout << "TRIANGLE_STRIPS to POLYGONS conversion ok\n";</font></div>
<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">  // Write the output polydata.</font></div><div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">  vtkSmartPointer<vtkPolyDataWriter> writer = vtkSmartPointer<vtkPolyDataWriter>::New();</font></div>
<div><font face="courier new, monospace">  writer->SetFileName(outputFileName.c_str());</font></div><div><font face="courier new, monospace">  writer->SetInputData(newPoly);</font></div><div><font face="courier new, monospace">  writer->Update();</font></div>
<div><font face="courier new, monospace"><br></font></div><div><font face="courier new, monospace">  std::cout << "PolyData write ok\n";</font></div></div><div>===========================================================================================================================<br>
</div><div><br></div><div>Thanks,</div><div>[]s</div><div><br></div>​</div>