1
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
14
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
28 """Tries to determine the paraview-version"""
29 try:
30
31 return (proxyManager.GetVersionMajor(),
32 proxyManager.GetVersionMinor(),
33 proxyManager.GetVersionPatch())
34 except AttributeError:
35 return (servermanager.vtkSMProxyManager.GetVersionMajor(),
36 servermanager.vtkSMProxyManager.GetVersionMinor(),
37 servermanager.vtkSMProxyManager.GetVersionPatch())
38
40 """ Get the paraFoam reader.
41 Currently only works if there is only one reader"""
42
43 result=None
44
45 src=proxyManager.GetProxiesInGroup("sources")
46
47 try:
48
49 for s in src:
50 if type(src[s])==servermanager.sources.PV3FoamReader:
51 if result==None:
52 result=src[s]
53 else:
54 warning("Found a second paraFoam-reader:",s)
55 except AttributeError:
56
57 for s in src:
58 if type(src[s])==servermanager.sources.OpenFOAMReader:
59 if result==None:
60 result=src[s]
61 else:
62 warning("Found a second paraFoam-reader:",s)
63
64 if result==None:
65 warning("No paraFoam-reader found")
66
67 return result
68
72
74 """ Get the render view.
75 Currently just takes the first view"""
76
77 result=None
78
79 src=proxyManager.GetProxiesInGroup("views")
80
81 for s in src:
82 if result==None:
83 result=src[s]
84 else:
85 warning("Found a second render view:",s)
86
87 if result==None:
88 warning("No render view found")
89
90 return result
91
93 """Return the size of the object covered by the paraFoam-Reader"""
94 return readerObject().getBounds()
95
97 """Return the center of the object covered by the paraFoam-Reader"""
98 return readerObject().getCenter()
99
103
105 """Time that is currently displayed"""
106 try:
107
108 return renderView().ViewTime.GetData()
109 except AttributeError:
110 return renderView().ViewTime
111
124
127
131