<div dir="ltr">Hi Sebastian,<div><br></div><div>Probably the easiest way to do this is to use VTK readers to read in the VTK and STL files to load the surface data, then write out the DIF file with standard Python ASCII file writing.</div><div><br></div><div>Here's a sketch you can use to get started:</div><div><br></div><div><div>import vtk</div><div><br></div><div>reader = vtk.vtkPolyDataReader()</div><div>reader.SetFileName('/path/to/file.vtk')</div><div>reader.Update()</div><div><br></div><div>pd = reader.GetOutput()</div><div><br></div><div>print 'Vertices'</div><div>for i in xrange(pd.GetNumberOfPoints()):</div><div>    print pd.GetPoint(i)</div><div><br></div><div>print 'Normals'</div><div>normals = pd.GetPointData().GetArray("Normals")</div><div><br></div><div>print '---', pd.GetNumberOfPoints(), normals.GetNumberOfTuples()</div><div><br></div><div>for i in xrange(normals.GetNumberOfTuples()):</div><div>    print normals.GetValue(3*i), normals.GetValue(3*i + 1), normals.GetValue(3*i + 2)</div><div><br></div><div>print 'Polygons'</div><div>for i in xrange(pd.GetNumberOfPolys()):</div><div>    cell = pd.GetCell(i)</div><div>    pointIds = cell.GetPointIds()</div><div><br></div><div>    for j in xrange(pointIds.GetNumberOfIds()):</div><div>        print pointIds.GetId(j)</div></div><div><br></div><div>HTH,</div><div>Cory</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Oct 4, 2015 at 8:13 PM, Sebastian Hilbert <span dir="ltr"><<a href="mailto:sebastian.hilbert@gmx.net" target="_blank">sebastian.hilbert@gmx.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
I am trying to convert a model of the heart which is available as either stl<br>
or vtk polydata to a new file format called diffusion image format (dif)<br>
<br>
All files are provided below. The main question is. How do I construct the dif<br>
file when I have only vtk and stl file available ?<br>
<br>
dif is a format used by the medical software Ensite from St. Jude and looking<br>
at the spec for the dif format it seems related to what vtk can provide.<br>
<br>
It seems to work with vertices , normals and polygons.<br>
<br>
I wonder if anyone has some advice on how to map data obtained from an stl<br>
file or vtk polydata file to data used in the dif format. How do I extract<br>
vertices, normals and polygons from either stl and/or vtk ?<br>
<br>
The target format is like this:<br>
<br>
 <DIFBody><br>
    <Volumes number="1"><br>
      <Volume name="Left Atrium" color="eae0b2"><br>
        <Vertices number="3984"><br>
           32.4603  6.0825  -40.3249<br>
           13.9858  7.9016  -41.0501<br>
           16.6287  7.6514  -40.4356<br>
           30.7806  7.9503  -41.1414<br>
        </Vertices><br>
        <Normals number="3984"><br>
           0.220882  -0.586701  -0.779098<br>
           -0.082953  -0.169572  -0.982021<br>
           0.393210  -0.647443  -0.652842<br>
           -0.106461  -0.248735  -0.962703<br>
        </Normals><br>
        <Polygons number="7968"><br>
          3 40 8<br>
          17 10 13<br>
          41 13 42<br>
          4 36 43<br>
          </Polygons><br>
      </Volume><br>
    </Volumes><br>
    <Labels number="0"><br>
    </Labels><br>
   </DIFBody><br>
</DIF><br>
<br>
Looking at the vtk file the polygons are different from the ones in the xml<br>
(dif) file. Looking at the stl file (ascii) I can see some vertex lines that<br>
match a line in the vertices section of the xml (dif) file but there are a lot<br>
more vertex lines in the stl file then there are in the xml (dif file).<br>
<br>
I would prefer to use python if that is an option.<br>
<br>
If anyone wants to have a look here are the correspondig files<br>
<br>
vtk: <a href="https://146.0.105.21/owncloud/index.php/s/NZqGwdQQSramk1w" rel="noreferrer" target="_blank">https://146.0.105.21/owncloud/index.php/s/NZqGwdQQSramk1w</a><br>
stl: <a href="https://146.0.105.21/owncloud/index.php/s/tWv7yKttA15hdoL" rel="noreferrer" target="_blank">https://146.0.105.21/owncloud/index.php/s/tWv7yKttA15hdoL</a><br>
dif: <a href="https://146.0.105.21/owncloud/index.php/s/3R8oKRxXK2oR5DD" rel="noreferrer" target="_blank">https://146.0.105.21/owncloud/index.php/s/3R8oKRxXK2oR5DD</a><br>
<br>
Any help is appreciated.<br>
<br>
Sebastian<br>
_______________________________________________<br>
Powered by <a href="http://www.kitware.com" rel="noreferrer" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer" 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" rel="noreferrer" target="_blank">http://www.vtk.org/Wiki/VTK_FAQ</a><br>
<br>
Search the list archives at: <a href="http://markmail.org/search/?q=vtkusers" rel="noreferrer" target="_blank">http://markmail.org/search/?q=vtkusers</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://public.kitware.com/mailman/listinfo/vtkusers" rel="noreferrer" target="_blank">http://public.kitware.com/mailman/listinfo/vtkusers</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">Cory Quammen<br>R&D Engineer<br>Kitware, Inc.</div>
</div>