Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在ParaView中为一系列传统VTK文件设置自定义时间步长值?_Python_Time Series_Vtk_Paraview - Fatal编程技术网

Python 如何在ParaView中为一系列传统VTK文件设置自定义时间步长值?

Python 如何在ParaView中为一系列传统VTK文件设置自定义时间步长值?,python,time-series,vtk,paraview,Python,Time Series,Vtk,Paraview,我有一个序列,例如:file_0.vtk,file_1.vtk,file_2.vtk,我可以在ParaView中以时间序列()的形式打开,作为file_..vtk,并且可以使用时间控件查看文件序列并设置动画。我目前正在使用ParaView 4.4.0 旧式VTK文件如下所示,其中timestep值存储在头文件中(第二行): 然而,在ParaView中,时间步长值假设与索引相同,即索引0为时间0.0,索引1为时间1.0,索引2为时间2.0。添加带注释的时间过滤器也会为timestep索引显示这些t

我有一个序列,例如:
file_0.vtk
file_1.vtk
file_2.vtk
,我可以在ParaView中以时间序列()的形式打开,作为
file_..vtk
,并且可以使用时间控件查看文件序列并设置动画。我目前正在使用ParaView 4.4.0

旧式VTK文件如下所示,其中timestep值存储在头文件中(第二行):

然而,在ParaView中,时间步长值假设与索引相同,即索引0为时间0.0,索引1为时间1.0,索引2为时间2.0。添加带注释的时间过滤器也会为timestep索引显示这些timestep

但是,我的文件使用可变的时间步长,如每个文件头中所述。(我认为传统的VTK格式无法指定这些值)。我查看了ParaView的应用程序,看看是否有方法导入或修改这些值,但我找不到它

使用内置Python Shell,下面是我创建对象的悲哀尝试:

这将在对象“信息”对话框中正确显示,直到我添加一个AnnotateTimeFilter,它将0重置为0、1重置为1、2重置为2


是否有任何方法可以使用点击点或Python来更新ParaView中传统VTK对象的每个索引的时间步长值?

我调查了您的答案,没有找到直接的方法来完成您的要求

然而,这里有一个间接的解决方案(取自):

1。将vtk文件转换为xml paraview文件(例如VTU或VTM文件):使用paraview打开vtk文件,并使用文件>保存数据写入新文件。您需要检查“将所有时间步写入文件系列”

2。创建ParaView数据文件(.pvd)。 在此文件中,可以为每个文件指定时间步长值。以下是一个例子:

    <VTKFile type="Collection" version="0.1" byte_order="LittleEndian">
        <Collection>
            <DataSet timestep="0"         file='file_0.vtu'/>
            <DataSet timestep="0.022608"  file='file_1.vtu'/>
            <DataSet timestep="0.73781"   file='file_2.vtu'/>
        </Collection>
    </VTKFile>

3。在paraview中加载.pvd文件。现在,您可以将注释时间过滤器与良好的时间步长值一起使用

第1步是必需的,因为上述解决方案不适用于.vtk文件,如中所述

files = ['file_0.vtk', 'file_1.vtk', 'file_2.vtk']
times = [0.0, 0.022608, 0.73781]
# First attempt
r = LegacyVTKReader(FileNames=files, TimestepValues=times)
print(r.TimestepValues)  # [0.0, 1.0, 2.0]

# Second attempt to try and fix it
r.TimestepValues = times
print(r.TimestepValues)  # [0.0, 0.022608, 0.73781]

Show(r)
    <VTKFile type="Collection" version="0.1" byte_order="LittleEndian">
        <Collection>
            <DataSet timestep="0"         file='file_0.vtu'/>
            <DataSet timestep="0.022608"  file='file_1.vtu'/>
            <DataSet timestep="0.73781"   file='file_2.vtu'/>
        </Collection>
    </VTKFile>