I am trying to extract the data (as csv
) from a line for all the time steps with the PlotOverLine filter
in Paraview. In the GUI, I load the foam file, use the PlotOverLine filter
and save the spread sheet view as csv file and click the next button in the animation panel to load the next time step and repeat the above for the remaining time steps at the same location of the line source.(since its transient data, I need data over all the time steps at a fixed location.) I used the following script.
try: paraview.simple
except: from paraview.simple import *
paraview.simple._DisableFirstRenderCameraReset()
my_foam = FindSource("case.foam") #loading my case file
SetActiveSource(my_foam)
tsteps = my_foam.TimestepValues # trying to read all time step directories
for TimeStepNum in range(0,len(tsteps)): # the loop?
view = GetActiveView()
view.ViewTime = tsteps[TimeStepNum]
Render()
PlotOverLine1 = PlotOverLine( Source="High Resolution Line Source" )
DataRepresentation7 = Show()
PlotOverLine1.Source.Point1 = [-0.052, 0.0, 0.0] #my fixed location
PlotOverLine1.Source.Point2 = [0.0, 0.0, 0.0]
source = PlotOverLine1
writer = CreateWriter("file_%d.csv" %(TimeStepNum), source)
writer.FieldAssociation = "Points"
writer.UpdatePipeline()
Render()
del writer
Say If I have 5 time steps, the script when run as a macro on Paraview, produces file_0 to file_5.csv however, file_1 to file_4 have 'nan' as data in them instead of actual values. Where as, the file_0 and file_5 have the values as they should be. I am a newbie don't know where I am going wrong! Not sure if the time step is getting updated before plotting the next line data. Any help would be appreciated! There should be an easier way to update timesteps and then use the same filter at the same location I guess.