3 def __init__(self, createRenderView=True, interactive=False):
4 self.interactive = interactive
8 self.renderView = pvsimple.CreateRenderView()
10 self.renderView = pvsimple.GetRenderView()
13 def __displayInteractive(self, element):
14 from PyQt4 import QtCore, QtGui
15 from vtk.qt4 import QVTKRenderWindowInteractor
17 class __InteractiveViewer(QtCore.QObject):
18 def __init__(self, viewer):
19 self.renderView = viewer.renderView
20 self.widget = QVTKRenderWindowInteractor.QVTKRenderWindowInteractor(\
21 rw=self.renderView.GetRenderWindow(),
22 iren=self.renderView.GetInteractor())
23 self.widget.Initialize()
27 pvsimple.ResetCamera()
28 pvsimple.Render(view=self.renderView)
31 pvsimple.Render(self.renderView)
34 app = QtGui.QApplication(['ParaView Python App'])
35 iv = __InteractiveViewer(self)
39 def __display(self, element, pause=False):
41 pvsimple.SetActiveSource(element)
42 pvsimple.Show(view=self.renderView)
45 self.__displayInteractive(element)
47 pvsimple.Render(view=self.renderView)
48 pvsimple.ResetCamera()
49 pvsimple.SetActiveSource(element)
50 pvsimple.Render(view=self.renderView)
52 input("Press Enter key to continue")
55 def display_mesh(self, element, pause=False):
56 self.__display(element, pause)
59 def display_field(self, element, pause=False):
61 pvsimple.SetActiveSource(element)
62 representation = pvsimple.Show(view=self.renderView)
64 from medio import get_element_type, get_element_name
65 etype = get_element_type(element)
66 ename = get_element_name(element)
69 representation.ColorArrayName = ("CELLS", ename)
70 data = element.CellData
72 representation.ColorArrayName = ("POINTS", ename)
73 data = element.PointData
75 # :TODO: Determine nb components
77 mode = "Magnitude" # "Component" if nb_cmp > 1
78 scalarbar = self.__build_scalar_bar(data, ename, nb_cmp, mode)
80 pvsimple.SetActiveSource(element)
81 self.renderView.Representations.append(scalarbar)
82 self.__display(element, pause)
85 def __build_scalar_bar(self, data, fieldname, nb_components, vector_mode):
87 # Get data range (mini/maxi)
88 for n in range(data.GetNumberOfArrays()):
89 if data.GetArray(n).GetName() == fieldname:
90 mini,maxi = data.GetArray(n).GetRange()
92 stepvalue = (maxi-mini)/100. # 100 steps
95 RGBPoints = [mini, 0.0, 0.0, 1.0, maxi, 1.0, 0.0, 0.0]
96 nb = int((maxi-mini)/stepvalue)-1
97 Table = pvsimple.GetLookupTableForArray("", nb_components, VectorMode=vector_mode, ColorSpace='HSV')
99 Table.NumberOfTableValues = nb
100 Table.RGBPoints = RGBPoints
102 representation = pvsimple.Show(view=self.renderView)
103 representation.Representation = 'Surface'
104 representation.LookupTable = Table
107 scalarbar = pvsimple.CreateScalarBar(LabelFormat = '%.1f',Title= "",LabelFontSize=12,Enabled=1,LookupTable=Table,TitleFontSize=12,LabelColor=[0.0, 0.0, 0.0],TitleColor=[0.0, 0.0, 0.0],)