[Paraview] Re: DumpTool.py

Fabian Braennstroem f.braennstroem at gmx.de
Sat Sep 15 12:54:12 EDT 2007


Hi Robert,

one more python-using question. I get using your python dump:

>>> Dump.allToPython("test.py")
Traceback (most recent call last):
  File "<string>", line 1, in <module>
TypeError: unbound method allToPython() must be called with
Dump instance as first argument (got str instance instead)

obviously I have to add a Dump instance, but what is that? I
am using pv3.1
Regards!
Fabian

Robert Maynard schrieb am 09/05/2007 07:10 PM:
> I know that I found the original dump tool really great tool to have around
> when working in paraview. Unfortunately it seems that recently it was
> broken, and I have seen a working copy posted again. So I quickly wrote up
> this script here that does the basics of what DumpTool did. Please use and
> improve it.
> 
> #basic dump, Robert Maynard MIRARCO
>>from paraview.servermanager import *
> import sys
> import string
> 
> class Dump:
>   def __init__(self):
>     '''the proxies that we want to dump'''
>     self.proxies  = ['sources','representations']
> 
>   def allToPython(self, fileName=None):
>     if fileName:
>      stdoutOrig = sys.stdout
>      file = open( fileName, 'w')
>      sys.stdout = file
> 
>     self.__header()
>     for proxyGroup in self.proxies:
>       for proxy in (self.__getProperties(proxyGroup)):
>         print ProxyStorage( proxy[0], proxy[1], proxyGroup, proxy[2]
> )
>     self.__footer()
> 
>     if fileName:
>      sys.stdout = stdoutOrig
>      file.close()
> 
> 
>   #private methods
>   def __header(self):
>     print '#!/usr/bin/env python'
>     print 'from paraview.servermanager import *'
>     print 'view = servermanager.GetRenderView()'
> 
>   def __footer(self):
>     print 'view.StillRender()'
> 
>   def __getProperties(self, proxyName):
>     #get all the data needed in a view here
>     proxy = self.__getProxiesInGroup(proxyName)
>     totalProperties = list()
>     if (proxyName == self.proxies[1]):
>       sourceNames = self.__buildSourceNames(proxy)
>       for sname,name in zip(sourceNames,proxy):
>         xmlName = proxy[name].GetXMLName()
>         totalProperties.append( (sname, xmlName,
> self.__getPropertyValues(proxy,name) ) )
>     else:
>       for name in proxy:
>         xmlName = proxy[name].GetXMLName()
>         totalProperties.append( (name, xmlName,
> self.__getPropertyValues(proxy,name) ) )
>     return totalProperties
> 
>   def __getPropertyValues(self,proxy, name):
>     properties = list()
>     for property in proxy[name]:
>       name = property.Proxy.GetPropertyName(property.SMProperty)
>       try:
>         value = property.GetData()
>         properties.append( (name,value) )
>       except AttributeError:
>         pass
>     return properties
> 
>   def __getProxiesInGroup(self,name):
>     pxm = servermanager.ProxyManager()
>     proxy = pxm.GetProxiesInGroup(name)
>     return proxy
> 
>   def __buildSourceNames(self, proxy):
>     #builds all the source names for each display, by using the
>     #dump tool proxyLabel method
>     sourceNames = list()
>     for key in proxy.keys():
>       inputValue = proxy[key].Input
>       sourceNames.append(self.__proxyLabel(inputValue[0]))
>     return sourceNames
> 
>   def __proxyLabel( self, outputPort ):
>     """Returns the given proxy's PV displayed name. Much thanks to the
> DumpTool author"""
>     pxm = servermanager.ProxyManager()
>     proxy = outputPort.Proxy
>     proxyGroup = pxm.GetProxiesInGroup(self.proxies[0])
>     for name in proxyGroup:
>       if (proxyGroup[name] == proxy):
>         return name
>     return None
> 
> class ProxyStorage:
>   def __init__(self, name, xmlName,  proxy, propertyRaw):
>       self.name = name
>       self.xmlName = xmlName
>       self.proxyGroup = proxy
>       self.property = PropertyStorage(propertyRaw)
> 
>   def __repr__(self):
>       """Returns a user-friendly representation string."""
>       from cStringIO import StringIO
>       name = self.name
>       propNames = self.property.name
>       propValues = self.property.value
>       file_str = StringIO()
> 
>       if (propNames[0] == 'Input'):
>         name = self.name+'Representation'
>         file_str.write(name+' =
> servermanager.CreateRepresentation('+self.name+',
> view, registrationGroup=\''+self.proxyGroup+'\')\n'
> )
>         propNames.pop(0)
>         propValues.pop(0)
>       else:
>         file_str.write(name+' = servermanager.sources.'+
> self.xmlName+'(registrationGroup=\''+
> self.proxyGroup +'\', registrationName=\'' + name + '\')\n'
> )
>       for n,v in zip(propNames,propValues):
>         file_str.write(name+'.'+str(n)+' = ')
>         try:
>           v = str(v)
>         except TypeError:
>           try:
>             v = map(str,v)
>             v = string.join(v,',')
>           except TypeError:
>             pass
>           else:
>             file_str.write(v)
>         else:
>           file_str.write(v)
>         file_str.write('\n')
> 
>       return file_str.getvalue()
> 
> class PropertyStorage:
>     def __init__(self, items):
>       self.name = list()
>       self.value = list()
>       self.__parse(items)
> 
>     def __parse(self,items):
>       for parts in items:
>         propName = parts[0]
>         value = parts[1]
>         if isinstance(value, OutputPort):
>           value = value.Proxy
>         if (value != ''):
>           self.name.append(propName)
>           self.value.append(value)
> 
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> ParaView mailing list
> ParaView at paraview.org
> http://www.paraview.org/mailman/listinfo/paraview


More information about the ParaView mailing list