Package PyFoam :: Package Paraview
[hide private]
[frames] | no frames]

Source Code for Package PyFoam.Paraview

  1  #  ICE Revision: $Id: /local/openfoam/Python/PyFoam/PyFoam/Paraview/__init__.py 6742 2010-07-06T10:08:29.831117Z bgschaid  $  
  2  """ Paraview interaction 
  3   
  4  Classes that help to interact with a Python-enabled paraFoam/paraview 
  5  """ 
  6   
  7  hasSimpleModule=True 
  8  try: 
  9      from paraview import simple 
 10  except ImportError: 
 11      hasSimpleModule=False 
 12       
 13  # this import prevents python-source-tools that ude introspection from working 
 14  # because it prevents import into a normal python 
 15  from paraview import servermanager 
 16       
 17  from PyFoam.Error import warning 
 18  from PyFoam.RunDictionary.SolutionDirectory import SolutionDirectory 
 19   
 20  from math import sqrt 
 21  from os import path 
 22   
 23  from SourceBase import SourceBase 
 24   
 25  proxyManager=servermanager.ProxyManager() 
 26   
27 -def version():
28 """Tries to determine the paraview-version""" 29 return (proxyManager.GetVersionMajor(), 30 proxyManager.GetVersionMinor(), 31 proxyManager.GetVersionPatch())
32
33 -def paraFoamReader():
34 """ Get the paraFoam reader. 35 Currently only works if there is only one reader""" 36 37 result=None 38 39 src=proxyManager.GetProxiesInGroup("sources") 40 41 try: 42 # test for OpenFOAM-Plugin 43 for s in src: 44 if type(src[s])==servermanager.sources.PV3FoamReader: 45 if result==None: 46 result=src[s] 47 else: 48 warning("Found a second paraFoam-reader:",s) 49 except AttributeError: 50 # test for native reader 51 for s in src: 52 if type(src[s])==servermanager.sources.OpenFOAMReader: 53 if result==None: 54 result=src[s] 55 else: 56 warning("Found a second paraFoam-reader:",s) 57 58 if result==None: 59 warning("No paraFoam-reader found") 60 61 return result
62
63 -def readerObject():
64 """Gets the only reader wrapped as a SourceBase-object""" 65 return SourceBase(paraFoamReader())
66
67 -def renderView():
68 """ Get the render view. 69 Currently just takes the first view""" 70 71 result=None 72 73 src=proxyManager.GetProxiesInGroup("views") 74 75 for s in src: 76 if result==None: 77 result=src[s] 78 else: 79 warning("Found a second render view:",s) 80 81 if result==None: 82 warning("No render view found") 83 84 return result
85
86 -def getBounds():
87 """Return the size of the object covered by the paraFoam-Reader""" 88 return readerObject().getBounds()
89
90 -def getCenter():
91 """Return the center of the object covered by the paraFoam-Reader""" 92 return readerObject().getCenter()
93
94 -def characteristicLength():
95 """The characteristic length of the geometry""" 96 return readerObject().characteristicLength()
97
98 -def viewTime():
99 """Time that is currently displayed""" 100 try: 101 # old school paraview 102 return renderView().ViewTime.GetData() 103 except AttributeError: 104 return renderView().ViewTime
105
106 -def caseDirectory():
107 """The directory in which the case is stored""" 108 try: 109 # old school paraview 110 fName=path.dirname(paraFoamReader().FileName.GetData()) 111 except AttributeError: 112 fName=path.dirname(paraFoamReader().FileName) 113 114 return SolutionDirectory( 115 fName, 116 archive=None, 117 paraviewLink=False)
118
119 -def timeDirectory():
120 return caseDirectory()[viewTime()]
121
122 -def transformsModule():
123 """Workaround to get to the transformations in Paraview 3.4""" 124 return servermanager.createModule("transforms")
125