Howdy. I have been looking through the Internet to find a solution for how to have the Plot over line executed automatically through a Python script. I was able to find some sources here on the Paraview mailing list but nobody reporting a fully functional script (at list for my case). So I will share what I wrote to help those people that will surely come up with the same problems I had. What does the script do:
- execute a PlotOverLine filter - export the results in a CSV file - execute a subsequent second filter directly after the first - export this to a separate file I know it may sound an easy job and I know it is not by any means a "perfect" solution.... but the code is heavily commented so I think it can surely work well as the base for further development for other people. Good work. Luca ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- # First of all, I created this script because I needed to execute the probing with # the Plot Over Line filter on 9 points for each time step in a long simulation with # the OpenFOAM CFD tool; that kind of thing that you cannot do by hand. # This is such a dumb script that you can of course modify it as you like to suit your needs! # That's Open Source...! # # @@ IMPORTANT NOTICE @@ # # If you are running Paraview using the binaries provided by the Ubuntu repos, it is # very likely that you don't have full python support due to the lack of some functions # here and there in the provided installation. # THUS, THIS SCRIPT WON'T RUN!! # The obvious work around is to uninstall the Ubuntu version and build from source the # last stable. This was tested using Ubuntu 11.04 and Paraview 3.8.0 32bit. # # Luca Giannelli import os try: paraview.simple except: from paraview.simple import * paraview.simple._DisableFirstRenderCameraReset() # If you want to create a set of following operations and save the # results in different locations, you can manage the folders with # this code section. # Just write the path to your folder without forgetting the quotes "". if not os.path.exists("YOUR_WORK_DIR_GOES_HERE"): os.makedirs("YOUR_WORK_DIR_GOES_HERE") # you can add all the folders that you like in this way by copying this # check code and inputting the new names. # ------------------------------------------------------------------------------- # Moving to the core of the script instuctions for the execution of PlotOverLine # ------------------------------------------------------------------------------- # Let's first identify the source to which we want to execute the P-O-L on: # This "fotobioreattore_foam" is just the name that I used and you can change # it to whatever you like. In the same way, you must provide as a variable in # the FindSource, the name of the first module in the stack of your very own # case for the script to work. For example: # # my_case = FindSource("THE_NAME_OF_YOUR_CASE_GOES_HERE") fotobioreattore_foam = FindSource("fotobioreattore.foam") # Now set the source you just defined, as the active one so that the P-O-L filter # will be executed on that without need of any other definition. Example: # # SetActiveSource(my_case) SetActiveSource(fotobioreattore_foam) # Create the first P-O-L, set the extremes of the line and then commit to render PlotOverLine2 = PlotOverLine( Source="High Resolution Line Source" ) DataRepresentation7 = Show() PlotOverLine2.Source.Point1 = [0.0, 0.0, 0.0] PlotOverLine2.Source.Point2 = [0.0, 0.0, 0.43] # This will calculate all the values for all the fileds along the line. # I was not able to identify how to show only the needed parameters. # However, it is trivial to run all the files through an "awk" command # for creating a file with just the needed parameters so I do not really # felt to spend time on something like this. # Sorry. Render() # The last part of the first batch unit is the definition of a writer for # the actual CSV file creation. # The source should be your freshly created PlotOverLine. In my case it is called PlotOverLine2 source = PlotOverLine2 writer = CreateWriter("YOUR_FILE_NAME_GOES_HERE.csv", source) writer.FieldAssociation = "Points" # or "Cells" writer.UpdatePipeline() del writer del PlotOverLine2 del fotobioreattore_foam del DataRepresentation7 # --------------------------------------------------------------------------------------------------- # I am not really sure if this is needed or not but, you know... better to safe than sorry. So, with # this line, the first batch operation is concluded. You will have your CSV file in your folder # and you will end up with the PlotOverLine filter selected in the GUI. For this reason, if you want # to proceed in the creation of a 2nd P-O-L in the same original source, you will need to specify # the active source part again here. # --------------------------------------------------------------------------------------------------- # Second batch section. You can use whatever filter you prefer here.... I just needed to go with another # P-O-L in another place. fotobioreattore_foam = FindSource("fotobioreattore.foam") SetActiveSource(fotobioreattore_foam) PlotOverLine2 = PlotOverLine( Source="High Resolution Line Source" ) DataRepresentation7 = Show() PlotOverLine2.Source.Point1 = [-0.0345, 0.0, 0.019] PlotOverLine2.Source.Point2 = [-0.0345, 0.0, 0.43] Render() # The writer again source = PlotOverLine2 writer = CreateWriter("SECOND_FILE_NAME.csv", source) writer.FieldAssociation = "Points" # or "Cells" writer.UpdatePipeline() del writer del PlotOverLine2 del fotobioreattore_foam del DataRepresentation7 # Please continue adding all the filters that you like and exporting the # results to all the CSV files that you want. # # Enjoy!!!!
_______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView Follow this link to subscribe/unsubscribe: http://www.paraview.org/mailman/listinfo/paraview