Trisurf Monte Carlo simulator
Samo Penic
2016-07-08 a9c679d4e4b49e44542bac81ef4ef65c94418eff
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import os,sys
from . import trisurf
if sys.version_info<(3,0):
    from vtk import *
 
 
class Renderer:
    def __init__(self,args,host):
        self.host=host
        self.args=args
        self.renderer = vtkRenderer()
        self.actor=self.lastActor()
        self.renderer.AddActor(self.actor)
        self.renderer.SetBackground(0, 0, 0) # Set background to white
 
        # Create the RendererWindow
        self.renderer_window = vtkRenderWindow()
        self.renderer_window.AddRenderer(self.renderer)
        
# Set up a check for aborting rendering.
        # Create the RendererWindowInteractor and display the vtk_file
        interactor = vtkRenderWindowInteractor()
        interactor.SetRenderWindow(self.renderer_window)
        interactor.Initialize()
         interactor.AddObserver("TimerEvent", self.RenderUpdate)
        timerIDR = interactor.CreateRepeatingTimer(1000)
        interactor.Start()
 
        return
 
    def lastVTU(self):
        Dir=trisurf.Directory(maindir=self.host['runs'][0].maindir,simdir=self.host['runs'][0].subdir)
        filename=os.path.join("./",Dir.fullpath(),self.host['runs'][0].getLastVTU())
        return filename
 
    def lastActor(self):
        self.filename=self.lastVTU()
        reader=vtkXMLUnstructuredGridReader()
        reader.SetFileName(self.filename)
        reader.Update() # Needed because of GetScalarRange
        output = reader.GetOutput()
        scalar_range = output.GetScalarRange()
        mapper = vtkDataSetMapper()
        mapper.SetInput(output)
        mapper.SetScalarRange(scalar_range)
 
        # Create the Actor
        actor = vtkActor()
        actor.SetMapper(mapper)
        return actor
 
 
    def RenderUpdate(self, obj, event):
        if(self.lastVTU()!=self.filename):
            print("updejt")
            self.renderer.RemoveActor(self.actor)
            self.actor=self.lastActor()
            self.renderer.AddActor(self.actor)
            self.renderer_window.Render()
        #self.render.RemoveActor(self.actor)
        
        return