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
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.