<p>看看vtkStructuredPointsWriter类,在文档中它说:</p>
<p><strong>警告</strong>
<em>在一个系统上写入的二进制文件在其他系统上可能无法读取。</em></p>
<p>这可能就是问题的原因(在文本编辑器中编辑文件,它是二进制的):</p>
<p><a href="https://vtk.org/doc/nightly/html/classvtkStructuredPointsWriter.html" rel="nofollow noreferrer">https://vtk.org/doc/nightly/html/classvtkStructuredPointsWriter.html</a></p>
<p>所以要解决这个问题:</p>
<ul>
<li><p>在Linux中读取该文件(它似乎可以工作)</p></li>
<li><p>使用vtkStructuredPointsWriter重新写入文件的新版本
但请记住将writer设置为ASCII模式(通过调用<a href="https://vtk.org/doc/nightly/html/classvtkDataWriter.html" rel="nofollow noreferrer">SetFileTypeToASCII()</a>)</p></li>
</ul>
<p>例如,可以使用以下python脚本将其转换为ASCII:</p>
<pre><code>#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from vtk import *
import sys
import os
if __name__ == "__main__":
pathFile1 = os.getcwd()+'/Output_253.vtk'
print(pathFile1)
if os.path.exists(pathFile1):
# Creation of variables with the right type to read STRUCTURES_POINTS VTK files
readerVTK1 = vtk.vtkStructuredPointsReader()
# We put the content of our files in our variables
readerVTK1.SetFileName(pathFile1)
readerVTK1.Update()
# We read our variables datas, hence we have our VTK files datas in these variables
dataVTK1 = readerVTK1.GetOutput()
pathFile2 = os.getcwd()+'/Output_253_ASCII.vtk'
writer = vtk.vtkStructuredPointsWriter()
writer.SetFileName(pathFile2)
writer.SetFileTypeToASCII()
writer.SetInputData(dataVTK1)
writer.Write()
else:
print(' [WARN] ','the file you are looking for do not exist')
print(' pathFile1: ', pathFile1 )
</code></pre>
<p>使用以下代码运行脚本时,可以检查正在使用的Python和VTK版本:</p>
^{pr2}$
<p>当它在我的设置中工作时,我建议您仔细检查路径(将所有f.ex.都放在c:\temp中,并测试它是否有效!)。在</p>