[Paraview] Lookmarks with Python
Jacques Papper
jacques.papper at gmail.com
Thu Nov 27 19:08:24 EST 2008
All,
I modified a script that Robert Maynard posted back in 2007 for saving and
loading states.
I haven't thoroughly tested it yet, but it seems to work fine for me.
Basically it saves only the properties of the RenderView but not the
Representations property.
This has for effect that you only save the camera / lightings etc settings
without having to worry about what sources your viewing or representations
are associated to your view.
I find it very useful to automate post-processing were you use a standard
set of cam positions.
Also for those who have problems with cPickle, just use pickle instead...
Thought I'd give this back to the community - let me know if you are using
it, I will probably build some more on top of this.
#!/usr/bin/env python
from paraview.servermanager import *
import cPickle as pickle
import re
class CamState:
def __init__(self):
#storage for a list of view objects
self.view = list()
def loadState(self,file):
try:
self.view = pickle.load(open(file))
except IOError:
print "file not found"
def saveState(self,file):
pickle.dump(self.view,open(file,'w'))
def deleteView(self,name):
for item in self.view:
if(item.name == name):
del item
return True
return False
def deleteAllViews(self):
del self.view
self.view = list()
def addView(self,name):
newView = view(name, self.__getProperties())
self.view.append(newView)
def loadView(self,name):
for v in self.view:
if (v.name == name):
self.__load(v.properties)
def __getProperties(self):
repreg = re.compile("Representations")
properties = list()
view = servermanager.GetRenderView()
for property in view:
propertyName =
property.Proxy.GetPropertyName(property.SMProperty)
if repreg.search(propertyName):
print "Not copying Representations"
else:
try:
value = property.GetData()
float(value)
except(IndexError,TypeError,ValueError,AttributeError,SyntaxError):
try:
float(value[0])
except(IndexError,TypeError,ValueError,AttributeError,SyntaxError):
pass
else:
properties.append((propertyName,value))
else:
properties.append((propertyName,value))
return properties
def __load(self,properties):
view = servermanager.GetRenderView()
for i in properties:
print i[0],i[1]
view.SetPropertyWithName(i[0],i[1])
view.UpdateVTKObjects()
view.StillRender()
class view:
def __init__(self,name,properties):
self.name = name
self.properties = properties
def __getstate__(self):
pickleDict = dict()
pickleDict['name']=self.name
pickleDict['properties']=self.properties
return pickleDict
def __setstate__(self,dict):
self.name = dict['name']
self.name = dict['properties']
self.__dict__.update(dict)
2008/11/27 Jacques Papper <jacques.papper at gmail.com>
> Hi everyone,
>
> I'm trying to figure out a way of driving my post-processing through a
> python script.
> What I want to do is have a standard set of views that I can load through
> python (without having to reload the data every time) and output pictures
> for each of them.
> - different camera positions
> - different scalars plotted (and different scalar bars)
> Is using the lookmarks the best way ?
> If it is, how do I load lookmarks through python ?
>
> Jacques
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.paraview.org/pipermail/paraview/attachments/20081128/275096d4/attachment.htm>
More information about the ParaView
mailing list