I am trying to make a portable settings file that I can use across multiple machines instead of having to manually reset everything when I change machines. My colleague @theodorebaltis found a reasonable way of doing this, which was to open a GUI session of Paraview, change settings via Edit > Settings
, then close the session. Whatever settings were changed were then saved to ParaView-UserSettings.json
in my user .config
directory. This works and is a perfectly fine method.
However, I encountered some strange behavior when I tried to do the same thing using a script executed with pvpython
. The script I created is below, and the intention was to change Settings > RenderViewSettings > LineOffsetParameters
to [0, -0.1] and change Settings > ColorPalette > EdgeColor
to [0, 0, 0]:
from paraview.simple import *
#get proxy manager
pxm = servermanager.ProxyManager()
#get relevant settings proxies
rs = pxm.GetProxy('settings', 'RenderViewSettings')
cps = pxm.GetProxy('settings', 'ColorPalette')
#edit properties
rs.SetPropertyWithName('LineOffsetParameters', [0, -0.1])
cps.SetPropertyWithName('EdgeColor', [0, 0, 0])
I tested both of these methods in the Python shell in the GUI and they work as intended. But if I run the script standalone using pvpython
, only the changes to LineOffsetParameters will show up in ParaView-UserSettings.json
.
I take the script above and change the values to something else (like [0, -0.09]), and the LineOffsetParameters will always be modified in the .json
file. But any other parameter I’ve tried doesn’t show up.
So is there a better way to do this that I’m not aware of? My ideal goal is to have one script I can stash away with all my favorite settings in it. Then I can run that via pvpython
and have my settings available immediately. I can then extend this to having one script for each of many different settings profiles, giving me the ability to quickly switch between settings profiles.