def _create_front_pane(self):
        """Create a RenderWindowInteractor for the front-view data
        """
        panel = wx.Panel(self, -1)

        self.front = wxVTKRenderWindowInteractor(panel, -1, (400,400))
        self.front_zoomer = wx.Slider(panel, -1, 0, 0, 0, (0, 0), (20, 400), wx.SL_VERTICAL)

        label = wx.StaticText(panel, -1, "Coronal (Front view)" , wx.Point(0, 0))
        self.reset_front = wx.Button(panel, -1, "Reset Camera")

        #Sizers
        sizer = wx.BoxSizer(wx.VERTICAL)

        sizer_top = wx.BoxSizer(wx.HORIZONTAL)
        sizer_top.Add(self.front, 1, wx.EXPAND)
        sizer_top.Add(self.front_zoomer, 0, wx.EXPAND)
        sizer.Add(sizer_top, 1, wx.EXPAND)

        sizer_bottom = wx.BoxSizer(wx.HORIZONTAL)
        sizer_bottom.Add(label, 1, wx.ALIGN_CENTER)
        sizer_bottom.Add(self.reset_front, 1, wx.ALIGN_RIGHT)
        sizer.Add(sizer_bottom, 0, wx.EXPAND)

        panel.SetSizer(sizer)
        sizer.Fit(panel)

        return panel
Example #2
0
    def __init__(self, parent, id, style):
        wx.Panel.__init__(self, parent, id, style=style)

        self.renderer = vtk.vtkRenderer()
        self.Interactor = wxVTKRenderWindowInteractor(self,
                                                      -1,
                                                      size=self.GetSize())
        self.Interactor.GetRenderWindow().AddRenderer(self.renderer)
        self.Interactor.Render()

        istyle = vtk.vtkInteractorStyleTrackballCamera()

        self.Interactor.SetInteractorStyle(istyle)

        hbox = wx.BoxSizer(wx.VERTICAL)
        hbox.Add(wx.StaticText(self, -1, u'Global Structure of Scaffold'))

        hbox.Add(self.Interactor, 1, wx.EXPAND)
        self.SetSizer(hbox)

        self.init_actor()
        self.adicionaeixos()
        self.desenha_surface()
        self.renderer.ResetCamera()

        pub.subscribe(self._desenha_surface, 'recalcula surface')
        pub.subscribe(self._calculo_porosidade, 'calcular porosidade')
    def __init_gui(self):
        slider = wx.Slider(self,
                           id=-1,
                           value=0,
                           minValue=0,
                           maxValue=99,
                           style=wx.SL_HORIZONTAL | wx.SL_AUTOTICKS)
        slider.SetWindowVariant(wx.WINDOW_VARIANT_SMALL)
        slider.SetTickFreq(1)
        self.slider = slider

        checkbox = wx.CheckBox(self, -1, _("Auto-play"))
        self.checkbox = checkbox

        self.interactor = wxVTKRenderWindowInteractor(self, -1)
        self.interactor.SetRenderWhenDisabled(True)

        in_sizer = wx.BoxSizer(wx.HORIZONTAL)
        in_sizer.Add(slider, 1, wx.GROW | wx.EXPAND)
        in_sizer.Add(checkbox, 0)

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.interactor, 1, wx.GROW | wx.EXPAND)
        sizer.Add(in_sizer, 0, wx.GROW | wx.EXPAND)
        sizer.Fit(self)

        self.SetSizer(sizer)
        self.Layout()
        self.Update()
        self.SetAutoLayout(1)
Example #4
0
    def _create_graph_canvas(self):


        rwi = wxVTKRenderWindowInteractor(self, -1,
                size=(400,400))

        # we have to call this, else moving a modal dialogue over the
        # graph editor will result in trails.  Usually, a wxVTKRWI
        # refuses to render if its top-level parent is disabled.  This
        # is to stop VTK pipeline updates whilst wx.SafeYield() is
        # being called.  In _this_ case, the VTK pipeline is safe, so
        # we can disable this check.
        rwi.SetRenderWhenDisabled(True)
        ren = vtk.vtkRenderer()
        rwi.GetRenderWindow().AddRenderer(ren)

        rw = rwi.GetRenderWindow()
        rw.SetLineSmoothing(1)
        rw.SetPointSmoothing(1)

        # PolygonSmoothing is not really necessary for the GraphEditor
        # (yet), and on a GeForce 4600 Ti on Linux with driver version
        # 1.0-9639, you can see triangle lines bisecting quads.  Not
        # a nice artifact, so I've disabled this for now.
        #rw.SetPolygonSmoothing(1)

        return (rwi, ren)
Example #5
0
    def __init_gui(self):
        self.interactor = wxVTKRenderWindowInteractor(self, -1, size=self.GetSize())

        scroll = wx.ScrollBar(self, -1, style=wx.SB_VERTICAL)
        self.scroll = scroll

        self.mip_ctrls = ContourMIPConfig(self, self.orientation)
        self.mip_ctrls.Hide()

        sizer = wx.BoxSizer(wx.HORIZONTAL)
        sizer.Add(self.interactor, 1, wx.EXPAND|wx.GROW)
        sizer.Add(scroll, 0, wx.EXPAND|wx.GROW)

        background_sizer = wx.BoxSizer(wx.VERTICAL)
        background_sizer.AddSizer(sizer, 1, wx.EXPAND|wx.GROW|wx.ALL, 2)
        #background_sizer.Add(self.mip_ctrls, 0, wx.EXPAND|wx.GROW|wx.ALL, 2)
        self.SetSizer(background_sizer)
        background_sizer.Fit(self)

        self.Layout()
        self.Update()
        self.SetAutoLayout(1)

        self.pick = vtk.vtkWorldPointPicker()
        self.interactor.SetPicker(self.pick)
  def __init__(self, id):
    wx.Frame.__init__(self, id, title='My first VTKwx example', style =wx.DEFAULT_FRAME_STYLE)

    ## Add a menubar
    menuBar = wx.MenuBar()
    menuF = wx.Menu()
    menuBar.Append(menuF, "File")
    self.draw = menuF.Append(wx.ID_OPEN, 'Draw') 
    self.SetMenuBar(menuBar)

    self.sb = self.CreateStatusBar()
    self.sb.SetFieldsCount(2)

    # Add the vtk window widget
    self.widget = wxVTKRenderWindowInteractor(self, -1)
    self.widget.Enable(1)

    # Layout
    sizer = wx.BoxSizer(wx.VERTICAL)
    sizer.Add(self.widget, 1, wx.EXPAND)
    self.SetSizer(sizer)
    self.Layout()

    # Ad a renderer
    self.ren = vtk.vtkRenderer()
    self.widget.GetRenderWindow().AddRenderer(self.ren)
    
    # Bind the menu
    self.Bind(wx.EVT_MENU, self.onDraw, self.draw)
Example #7
0
    def _create_graph_canvas(self):

        rwi = wxVTKRenderWindowInteractor(self, -1, size=(400, 400))

        # we have to call this, else moving a modal dialogue over the
        # graph editor will result in trails.  Usually, a wxVTKRWI
        # refuses to render if its top-level parent is disabled.  This
        # is to stop VTK pipeline updates whilst wx.SafeYield() is
        # being called.  In _this_ case, the VTK pipeline is safe, so
        # we can disable this check.
        rwi.SetRenderWhenDisabled(True)
        ren = vtk.vtkRenderer()
        rwi.GetRenderWindow().AddRenderer(ren)

        rw = rwi.GetRenderWindow()
        rw.SetLineSmoothing(1)
        rw.SetPointSmoothing(1)

        # PolygonSmoothing is not really necessary for the GraphEditor
        # (yet), and on a GeForce 4600 Ti on Linux with driver version
        # 1.0-9639, you can see triangle lines bisecting quads.  Not
        # a nice artifact, so I've disabled this for now.
        #rw.SetPolygonSmoothing(1)

        return (rwi, ren)
Example #8
0
    def __init_gui(self):
        interactor = wxVTKRenderWindowInteractor(self, -1, size=self.GetSize())

        scroll = wx.ScrollBar(self, -1, style=wx.SB_VERTICAL)
        self.scroll = scroll

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(wx.StaticText(self, -1, self.titulo))
        sizer.Add(interactor, 1, wx.EXPAND | wx.GROW)

        background_sizer = wx.BoxSizer(wx.HORIZONTAL)
        background_sizer.AddSizer(sizer, 1, wx.EXPAND | wx.GROW | wx.ALL, 2)
        background_sizer.Add(scroll, 0, wx.EXPAND | wx.GROW)
        self.SetSizer(background_sizer)
        background_sizer.Fit(self)

        self.Layout()
        self.Update()
        self.SetAutoLayout(1)

        self.interactor = interactor

        self.pega_pontos = False
        self.continua_pegar = True

        self.list_points = []
        self.list_points_ff = []
        self.list_points_ff_other = []

        style = vtk.vtkInteractorStyleTrackballCamera()
        self.picker = vtk.vtkPointPicker()

        pub.subscribe(self.altera_estado, 'Altera estado seleciona vertices')
Example #9
0
    def __init__(self, prnt, controller=None):
        from vtk.wx.wxVTKRenderWindowInteractor import wxVTKRenderWindowInteractor
        from vtk import vtkRenderWindow, vtkRenderer
        import wx
        import sys

        self.prnt = prnt
        self.fullscreen_on = 0
        self.controller = controller

        iren = wxVTKRenderWindowInteractor(prnt, -1, size=prnt.GetSize())
        iren.SetPosition((0, 0))

        renwin = iren.GetRenderWindow()
        renwin.StereoCapableWindowOn()
        renwin.StereoRenderOff()

        if (sys.platform == 'linux2'):
            iren.AddObserver("CharEvent", self.key_down)
            iren.Show(1)
            iren.Render()
        elif (sys.platform == 'win32'):
            from vtk import vtkInteractorStyleRubberBandPick
            style = vtkInteractorStyleRubberBandPick()
            iren.SetInteractorStyle(style)
            iren.SetDesiredUpdateRate(1)
            iren.Enable(1)
        else:
            print "Check OS behaviour to determine how renderer and fullscreen will work on data_viewer"

        self.iren = iren
Example #10
0
    def __init_gui(self):
        self.interactor = wxVTKRenderWindowInteractor(self,
                                                      -1,
                                                      size=self.GetSize())

        scroll = wx.ScrollBar(self, -1, style=wx.SB_VERTICAL)
        self.scroll = scroll

        self.mip_ctrls = ContourMIPConfig(self, self.orientation)
        self.mip_ctrls.Hide()

        sizer = wx.BoxSizer(wx.HORIZONTAL)
        sizer.Add(self.interactor, 1, wx.EXPAND | wx.GROW)
        sizer.Add(scroll, 0, wx.EXPAND | wx.GROW)

        background_sizer = wx.BoxSizer(wx.VERTICAL)
        background_sizer.AddSizer(sizer, 1, wx.EXPAND | wx.GROW | wx.ALL, 2)
        #background_sizer.Add(self.mip_ctrls, 0, wx.EXPAND|wx.GROW|wx.ALL, 2)
        self.SetSizer(background_sizer)
        background_sizer.Fit(self)

        self.Layout()
        self.Update()
        self.SetAutoLayout(1)

        self.pick = vtk.vtkWorldPointPicker()
        self.interactor.SetPicker(self.pick)
Example #11
0
    def __init__(self, parent, id, style):
        wx.Panel.__init__(self, parent, id, style=style)

        self.renderer = vtk.vtkRenderer()
        self.Interactor = wxVTKRenderWindowInteractor(self, -1, size=self.GetSize())
        self.Interactor.GetRenderWindow().AddRenderer(self.renderer)
        self.Interactor.Render()



        istyle = vtk.vtkInteractorStyleTrackballCamera()

        self.Interactor.SetInteractorStyle(istyle)



        hbox = wx.BoxSizer(wx.VERTICAL)
        hbox.Add(wx.StaticText(self, -1, 'Global Structure of Scaffold'))


        hbox.Add(self.Interactor, 1, wx.EXPAND)
        self.SetSizer(hbox)


        self.init_actor()
        self.add_axes()
        self.draw_surface()
        self.renderer.ResetCamera()

        pub.subscribe(self._draw_surface, 'Recalculating surface')
        pub.subscribe(self._calculate_porosity, 'Calculating porosity')
Example #12
0
    def _create_sagittal_slices_pane(self):
        """Create a panel
       """
        panel = wx.Panel(self, -1)

        self.sagittal = wxVTKRenderWindowInteractor(panel, -1, (600, 800))

        self.slices_sliderS = wx.Slider(panel, -1, 128, 0,
                                        255, wx.DefaultPosition,
                                        wx.Size(100, -1), wx.SL_HORIZONTAL)
        self.slices_spinS = wx.SpinCtrl(panel, wx.ID_ANY,
                                        str(self.slices_sliderS.GetValue()),
                                        wx.DefaultPosition, wx.Size(70, -1),
                                        wx.SP_ARROW_KEYS, 0, 255, 128)
        self.slices_resetS = wx.Button(panel, -1, "Reset Camera")

        button_sizer = wx.BoxSizer(wx.HORIZONTAL)
        button_sizer.AddSpacer(30)
        button_sizer.Add(self.slices_sliderS)
        button_sizer.Add(self.slices_spinS)
        button_sizer.AddSpacer(30)
        button_sizer.Add(self.slices_resetS)

        tl_sizer = wx.BoxSizer(wx.VERTICAL)
        tl_sizer.Add(self.sagittal, 1, wx.EXPAND | wx.BOTTOM, 7)
        tl_sizer.Add(button_sizer)

        panel.SetSizer(tl_sizer)
        tl_sizer.Fit(panel)

        return panel
Example #13
0
    def __init__(self, parent, id, style):
        wx.Panel.__init__(self, parent, id, style=style)

        self.renderer = vtk.vtkRenderer()
        self.Interactor = wxVTKRenderWindowInteractor(self,
                                                      -1,
                                                      size=self.GetSize())
        self.Interactor.GetRenderWindow().AddRenderer(self.renderer)
        self.Interactor.Render()

        self.SelectActor = None

        istyle = vtk.vtkInteractorStyleTrackballCamera()

        self.Interactor.SetInteractorStyle(istyle)

        hbox = wx.BoxSizer(wx.VERTICAL)
        hbox.Add(wx.StaticText(self, -1, u'Visão Top'))
        hbox.Add(self.Interactor, 1, wx.EXPAND)
        self.SetSizer(hbox)

        self.adicionaeixos()

        #daqui
        self.Picker = vtk.vtkPropPicker()
        istyle.AddObserver("LeftButtonPressEvent", self.Clik)
        istyle.AddObserver("MouseMoveEvent", self.OnMotion)
        istyle.AddObserver("LeftButtonReleaseEvent", self.Release)

        Publisher.subscribe(self.Renderizacao, 'Renderizar')
Example #14
0
    def __init__(self, parent, id):

        wx.Frame.__init__(self, parent, id, 'Figuras 3D', size=(400, 400))
        frm = wx.Frame(self, -1, 'Figuras 3D', size=(800, 600))
        panel = wx.Panel(frm)

        #Elementos do VTK:
        self.widget = wxVTKRenderWindowInteractor(panel,
                                                  -1,
                                                  'Objetos 3D',
                                                  size=(600, 600))
        self.widget.Enable(1)

        self.ren = vtk.vtkRenderer()
        self.widget.GetRenderWindow().AddRenderer(self.ren)

        self.cam = vtk.vtkCamera()
        self.cam = self.ren.GetActiveCamera()
        self.cam.SetPosition(-8, -2, 0)

        #Elementos do frame:
        self.Cesfera = wx.Button(panel,
                                 1,
                                 'Criar Esfera',
                                 size=(120, 30),
                                 pos=(620, 10))
        self.Desfera = wx.Button(panel,
                                 2,
                                 'Destruir Esfera',
                                 size=(120, 30),
                                 pos=(620, 40))
        self.Ccone = wx.Button(panel,
                               3,
                               'Criar Cone',
                               size=(120, 30),
                               pos=(620, 70))
        self.Dcone = wx.Button(panel,
                               4,
                               'Destruir Cone',
                               size=(120, 30),
                               pos=(620, 100))
        self.clean = wx.Button(panel,
                               5,
                               'Limpar',
                               size=(120, 30),
                               pos=(620, 130))

        self.Dcone.Disable()
        self.Desfera.Disable()

        #Bind de elementos:
        self.Bind(wx.EVT_BUTTON, self.criaE, id=1)
        self.Bind(wx.EVT_BUTTON, self.destE, id=2)
        self.Bind(wx.EVT_BUTTON, self.criaC, id=3)
        self.Bind(wx.EVT_BUTTON, self.destC, id=4)
        self.Bind(wx.EVT_BUTTON, self.limpa, id=5)

        frm.Show()
    def __init_vtk(self):
        actor = vtk.vtkImageActor()
        self.actor = actor

        text_image_size = vtku.Text()
        text_image_size.SetPosition(const.TEXT_POS_LEFT_UP)
        text_image_size.SetValue("")
        text_image_size.SetSize(const.TEXT_SIZE_SMALL)
        self.text_image_size = text_image_size

        text_image_location = vtku.Text()
        text_image_location.SetVerticalJustificationToBottom()
        text_image_location.SetPosition(const.TEXT_POS_LEFT_DOWN)
        text_image_location.SetValue("")
        text_image_location.SetSize(const.TEXT_SIZE_SMALL)
        self.text_image_location = text_image_location

        text_patient = vtku.Text()
        text_patient.SetJustificationToRight()
        text_patient.SetPosition(const.TEXT_POS_RIGHT_UP)
        text_patient.SetValue("")
        text_patient.SetSize(const.TEXT_SIZE_SMALL)
        self.text_patient = text_patient

        text_acquisition = vtku.Text()
        text_acquisition.SetJustificationToRight()
        text_acquisition.SetVerticalJustificationToBottom()
        text_acquisition.SetPosition(const.TEXT_POS_RIGHT_DOWN)
        text_acquisition.SetValue("")
        text_acquisition.SetSize(const.TEXT_SIZE_SMALL)
        self.text_acquisition = text_acquisition

        renderer = vtk.vtkRenderer()
        renderer.AddActor(actor)
        renderer.AddActor(text_image_size.actor)
        renderer.AddActor(text_image_location.actor)
        renderer.AddActor(text_patient.actor)
        renderer.AddActor(text_acquisition.actor)
        self.renderer = renderer

        style = vtk.vtkInteractorStyleImage()

        interactor = wxVTKRenderWindowInteractor(self.panel,
                                                 -1,
                                                 size=wx.Size(340, 340))
        interactor.GetRenderWindow().AddRenderer(renderer)
        interactor.SetInteractorStyle(style)
        interactor.Render()
        self.interactor = interactor

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(interactor, 1, wx.GROW | wx.EXPAND)
        sizer.Fit(self.panel)
        self.panel.SetSizer(sizer)
        self.Layout()
        self.Update()
    def __init_vtk(self):
        actor = vtk.vtkImageActor()
        self.actor = actor

        text_image_size = vtku.Text()
        text_image_size.SetPosition(const.TEXT_POS_LEFT_UP)
        text_image_size.SetValue("")
        text_image_size.SetSize(const.TEXT_SIZE_SMALL)
        self.text_image_size = text_image_size

        text_image_location = vtku.Text()
        text_image_location.SetVerticalJustificationToBottom()
        text_image_location.SetPosition(const.TEXT_POS_LEFT_DOWN)
        text_image_location.SetValue("")
        text_image_location.SetSize(const.TEXT_SIZE_SMALL)
        self.text_image_location = text_image_location

        text_patient = vtku.Text()
        text_patient.SetJustificationToRight()
        text_patient.SetPosition(const.TEXT_POS_RIGHT_UP)
        text_patient.SetValue("")
        text_patient.SetSize(const.TEXT_SIZE_SMALL)
        self.text_patient = text_patient

        text_acquisition = vtku.Text()
        text_acquisition.SetJustificationToRight()
        text_acquisition.SetVerticalJustificationToBottom()
        text_acquisition.SetPosition(const.TEXT_POS_RIGHT_DOWN)
        text_acquisition.SetValue("")
        text_acquisition.SetSize(const.TEXT_SIZE_SMALL)
        self.text_acquisition = text_acquisition

        renderer = vtk.vtkRenderer()
        renderer.AddActor(actor)
        renderer.AddActor(text_image_size.actor)
        renderer.AddActor(text_image_location.actor)
        renderer.AddActor(text_patient.actor)
        renderer.AddActor(text_acquisition.actor)
        self.renderer = renderer

        style = vtk.vtkInteractorStyleImage()

        interactor = wxVTKRenderWindowInteractor(self.panel, -1,
                                    size=wx.Size(340,340))
        interactor.GetRenderWindow().AddRenderer(renderer)
        interactor.SetInteractorStyle(style)
        interactor.Render()
        self.interactor = interactor

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(interactor, 1, wx.GROW|wx.EXPAND)
        sizer.Fit(self.panel)
        self.panel.SetSizer(sizer)
        self.Layout()
        self.Update()
Example #17
0
 def InitUI(self):
     self.widget = wxVTKRenderWindowInteractor(self, -1)
     self.widget.Enable(1)
     self.widget.AddObserver("ExitEvent", lambda o, e, f=self: f.Close())
     self.sizer = wx.BoxSizer(wx.VERTICAL)
     self.sizer.Add(self.widget, 1, wx.EXPAND)
     self.SetSizer(self.sizer)
     self.Layout()
     self.ren = vtk.vtkRenderer()
     self.filename = ""
     self.isploted = False
Example #18
0
 def __init__(self,parent):
     wx.Panel.__init__(self, parent)
     
     #to interact with the scene using the mouse use an instance of vtkRenderWindowInteractor. 
     self.widget = wxVTKRenderWindowInteractor(self, -1)
     self.widget.Enable(1)
     self.widget.AddObserver("ExitEvent", lambda o,e,f=self: f.Close())
     self.sizer = wx.BoxSizer(wx.VERTICAL)
     self.sizer.Add(self.widget, 1, wx.EXPAND)
     self.SetSizer(self.sizer)
     self.Layout()
     self.isploted = False
Example #19
0
    def __init__(self, parent):
        wx.Panel.__init__(self, parent)

        #to interact with the scene using the mouse use an instance of vtkRenderWindowInteractor.
        self.widget = wxVTKRenderWindowInteractor(self, -1)
        self.widget.Enable(1)
        self.widget.AddObserver("ExitEvent", lambda o, e, f=self: f.Close())
        self.sizer = wx.BoxSizer(wx.VERTICAL)
        self.sizer.Add(self.widget, 1, wx.EXPAND)
        self.SetSizer(self.sizer)
        self.Layout()
        self.isploted = False
Example #20
0
    def __init__(self, *args, **kwds):
        # begin wxGlade: ImagePanelFrame.__init__
        kwds["style"] = wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self, *args, **kwds)
        self.image_panel = wx.Panel(self, -1)
        self.sizer_6_staticbox = wx.StaticBox(self.image_panel, -1, "Image Viewer Controls")
        self.rwi = wxVTKRenderWindowInteractor(self.image_panel, -1)
        self.lock_pz_cb = wx.CheckBox(self.image_panel, -1, "Lock PAN / ZOOM")
        self.lock_wl_cb = wx.CheckBox(self.image_panel, -1, "Lock WINDOW / LEVEL")
        self.reset_b = wx.Button(self.image_panel, -1, "Reset Image")

        self.__set_properties()
        self.__do_layout()
Example #21
0
    def _create_rwi_panel(self):
        #rwi_panel = wx.Panel(self, -1)
        self._rwi = wxVTKRenderWindowInteractor(self, -1, size=(300,100))
        
        #sizer = wx.BoxSizer(wx.VERTICAL)
        #sizer.Add(self._rwi, 1, wx.EXPAND | wx.ALL, 4)

        #rwi_panel.SetAutoLayout(True)
        #rwi_panel.SetSizer(sizer)
        #rwi_panel.GetSizer().Fit(rwi_panel)
        #rwi_panel.GetSizer().SetSizeHints(rwi_panel)

        #return rwi_panel
        return self._rwi
Example #22
0
 def __init__(self, parent):
   wx.SplitterWindow.__init__(self, parent)
   
   #
   # setup the control panel
   #
   self.controlPanel = wx.lib.scrolledpanel.ScrolledPanel( self )
   
   vBox = wx.BoxSizer( wx.VERTICAL )
   
   self.mode = wx.RadioBox( self.controlPanel, label="Mode", choices=["2D", "3D"] )
   vBox.Add( self.mode, 0, wx.EXPAND )
   
   self.colorAndOpacityEditor = WrapITKColorAndOpacityEditor( self.controlPanel )
   vBox.Add( self.colorAndOpacityEditor, 0, wx.EXPAND )
   
   self.controlPanel.SetSizer( vBox )
   self.controlPanel.SetupScrolling()
   
   
   #
   # setup the render window
   #
   from vtk.wx.wxVTKRenderWindowInteractor import wxVTKRenderWindowInteractor
   from vtk import vtkRenderer, vtkVolumeTextureMapper2D, vtkVolumeProperty, vtkVolume
   self.rendererWindow = wxVTKRenderWindowInteractor(self, -1)
   self.renderer = vtkRenderer()
   self.rendererWindow.GetRenderWindow().AddRenderer(self.renderer)
   self.volumeMapper = vtkVolumeTextureMapper2D()
   self.volume = vtkVolume()
   self.volumeProperty = vtkVolumeProperty()
   self.volumeProperty.SetScalarOpacity( self.colorAndOpacityEditor.opacityTransferFunction )
   self.volumeProperty.SetColor( self.colorAndOpacityEditor.colorTransferFunction )
   self.volume.SetMapper( self.volumeMapper )
   self.volume.SetProperty( self.volumeProperty )
   self.renderer.AddVolume( self.volume )
   self.outline = None
   self.outlineMapper = None
   self.outlineActor = None
   
   # fill the split pane
   self.SplitVertically( self.controlPanel, self.rendererWindow )
   # avoid loosing on panel or the other
   self.SetMinimumPaneSize( 1 )
   
   # to manage update event correctly
   self.updateInProgress = False
    def _create_original_slices_pane(self):
        """Create a RenderWindowInteractor for the original data and added emphysema overlay
        """
        panel = wx.Panel(self, -1)

        self.original = wxVTKRenderWindowInteractor(panel, -1, (400, 400))

        sizer1 = wx.BoxSizer(wx.VERTICAL)
        sizer1.Add(self.original, 1, wx.EXPAND | wx.BOTTOM, 7)

        tl_sizer = wx.BoxSizer(wx.VERTICAL)
        tl_sizer.Add(sizer1, 1, wx.ALL | wx.EXPAND, 7)

        panel.SetSizer(tl_sizer)
        tl_sizer.Fit(panel)

        return panel
Example #24
0
	def __init__(self, parent, pointSize=3, zMin=-10.0, zMax=10.0, maxNumPoints=1e6):
		wx.Panel.__init__(self, parent)
		 
		#to interact with the scene using the mouse use an instance of vtkRenderWindowInteractor. 
		self.widget = wxVTKRenderWindowInteractor(self, -1)
		self.widget.Enable(1)
		self.widget.AddObserver("ExitEvent", lambda o,e,f=self: f.Close())
		self.sizer = wx.BoxSizer(wx.VERTICAL)
		self.sizer.Add(self.widget, 1, wx.EXPAND)
		self.SetSizer(self.sizer)
		self.Layout()
		
		wx.YieldIfNeeded()
		
		self.maxNumPoints = maxNumPoints
		self.vtkPolyData = vtk.vtkPolyData()
		self.clearPoints()
		mapper = vtk.vtkPolyDataMapper()
		mapper.SetInput(self.vtkPolyData)
		mapper.SetColorModeToDefault()
		mapper.SetScalarRange(zMin, zMax)
		mapper.SetScalarVisibility(1)
		self.vtkActor = vtk.vtkActor()
		self.vtkActor.GetProperty().SetPointSize(pointSize);
		self.vtkActor.SetMapper(mapper)
		
		# Renderer
		renderer = vtk.vtkRenderer()
		renderer.AddActor(self.vtkActor)
		renderer.SetBackground(0.0, 0.0, 0.0)
		renderer.ResetCamera()

		self.widget.GetRenderWindow().AddRenderer(renderer)
		
		axes = vtk.vtkAxesActor()
		self.marker = vtk.vtkOrientationMarkerWidget()
		self.marker.SetInteractor( self.widget._Iren )
		self.marker.SetOrientationMarker( axes )
		self.marker.SetViewport(0.75,0,1,0.25)
		self.marker.SetEnabled(1)
		
		renderer.ResetCamera()
		renderer.ResetCameraClippingRange()
		cam = renderer.GetActiveCamera()

		cam.Azimuth(180)
Example #25
0
    def __init__(self,parent):
        wx.Panel.__init__(self, parent)
        
# To interact with the scene using the mouse use an instance of vtkRenderWindowInteractor. 
        self.widget = wxVTKRenderWindowInteractor(self, -1)
        self.widget.Enable(1)
        self.widget.AddObserver("ExitEvent", lambda o,e,f=self: f.Close())
        self.sizer = wx.BoxSizer(wx.VERTICAL)
        self.sizer.Add(self.widget, 1, wx.EXPAND)
        self.SetSizer(self.sizer)
        self.renderer = vtk.vtkRenderer()
        self.renderer.SetBackground(0.1, 0.2, 0.4)
        self.widget.GetRenderWindow().AddRenderer(self.renderer)
        self.Layout()
        self.widget.Render()
        self.filename=None
        self.isploted = False
Example #26
0
    def __init__(self, parent):
        wx.Panel.__init__(self, parent)

        # To interact with the scene using the mouse use an instance of vtkRenderWindowInteractor.
        self.widget = wxVTKRenderWindowInteractor(self, -1)
        self.widget.Enable(1)
        self.widget.AddObserver("ExitEvent", lambda o, e, f=self: f.Close())
        self.sizer = wx.BoxSizer(wx.VERTICAL)
        self.sizer.Add(self.widget, 1, wx.EXPAND)
        self.SetSizer(self.sizer)
        self.renderer = vtk.vtkRenderer()
        self.renderer.SetBackground(0.1, 0.2, 0.4)
        self.widget.GetRenderWindow().AddRenderer(self.renderer)
        self.Layout()
        self.widget.Render()
        self.filename = None
        self.isploted = False
Example #27
0
File: app.py Project: jcdinis/POMES
    def __init__(self, parent, id,style):
        wx.Panel.__init__(self, parent, id, style=style)

        self.x0 = 0
        self.x1 = 0
        self.y0 = 0
        self.y1 = 0


        self.estruturas = None
        self.actor_estrutura = None


        self.renderer = vtk.vtkRenderer()
        self.Interactor = wxVTKRenderWindowInteractor(self,-1, size = self.GetSize())
        self.Interactor.GetRenderWindow().AddRenderer(self.renderer)
        self.Interactor.Render()

        istyle = vtk.vtkInteractorStyleTrackballCamera()

        self.Interactor.SetInteractorStyle(istyle)

        self.pd = None
        self.id_points = set()

        hbox=wx.BoxSizer(wx.VERTICAL)
        hbox.Add(wx.StaticText(self,-1, u'Global Counting Structure'))


        hbox.Add(self.Interactor,1, wx.EXPAND)
        self.SetSizer(hbox)

        self.pega_pontos = False
        istyle.AddObserver("LeftButtonPressEvent",self.Clik)
        istyle.AddObserver("LeftButtonReleaseEvent", self.Release)
        #istyle.AddObserver("MouseMoveEvent", self.OnMotion)
        pub.subscribe(self.altera_estado, 'Altera estado seleciona vertices')

        pub.subscribe(self.renderiza, 'recalcula surface')

        self.init_actor()
        self.adicionaeixos()
        #self.desenha_surface()
        self.renderer.ResetCamera()
        self.list_points=[]
        self.Picker=vtk.vtkPointPicker()
Example #28
0
    def __init__(self, parent, id, style):
        wx.Panel.__init__(self, parent, id, style=style)

        self.x0 = 0
        self.x1 = 0
        self.y0 = 0
        self.y1 = 0

        self.estruturas = None
        self.actor_estrutura = None

        self.renderer = vtk.vtkRenderer()
        self.Interactor = wxVTKRenderWindowInteractor(self,
                                                      -1,
                                                      size=self.GetSize())
        self.Interactor.GetRenderWindow().AddRenderer(self.renderer)
        self.Interactor.Render()

        istyle = vtk.vtkInteractorStyleTrackballCamera()

        self.Interactor.SetInteractorStyle(istyle)

        self.pd = None
        self.id_points = set()

        hbox = wx.BoxSizer(wx.VERTICAL)
        hbox.Add(wx.StaticText(self, -1, u'Global Counting Structure'))

        hbox.Add(self.Interactor, 1, wx.EXPAND)
        self.SetSizer(hbox)

        self.pega_pontos = False
        istyle.AddObserver("LeftButtonPressEvent", self.Clik)
        istyle.AddObserver("LeftButtonReleaseEvent", self.Release)
        #istyle.AddObserver("MouseMoveEvent", self.OnMotion)
        pub.subscribe(self.altera_estado, 'Altera estado seleciona vertices')

        pub.subscribe(self.renderiza, 'recalcula surface')

        self.init_actor()
        self.adicionaeixos()
        #self.desenha_surface()
        self.renderer.ResetCamera()
        self.list_points = []
        self.Picker = vtk.vtkPointPicker()
Example #29
0
    def _create_original_slices_pane(self):
        """Create a RenderWindowInteractor for the original data and added emphysema overlay
        """
        panel = wx.Panel(self, -1)

        self.original = wxVTKRenderWindowInteractor(panel, -1, (400,400))

        sizer1 = wx.BoxSizer(wx.VERTICAL)
        sizer1.Add(self.original, 1, wx.EXPAND|wx.BOTTOM, 7)


        tl_sizer = wx.BoxSizer(wx.VERTICAL)
        tl_sizer.Add(sizer1, 1, wx.ALL|wx.EXPAND, 7)

        panel.SetSizer(tl_sizer)
        tl_sizer.Fit(panel)

        return panel
    def _create_rwi2d_pane(self):
        panel = wx.Panel(self, -1)

        self.rwi2d = wxVTKRenderWindowInteractor(panel, -1, (400, 400))
        self.reset_cam2d_button = wx.Button(panel, -1, "Reset View")
        button_sizer = wx.BoxSizer(wx.HORIZONTAL)
        button_sizer.Add(self.reset_cam2d_button)

        sizer1 = wx.BoxSizer(wx.VERTICAL)
        sizer1.Add(self.rwi2d, 1, wx.EXPAND | wx.BOTTOM, 7)
        sizer1.Add(button_sizer)

        tl_sizer = wx.BoxSizer(wx.VERTICAL)
        tl_sizer.Add(sizer1, 1, wx.ALL | wx.EXPAND, 7)

        panel.SetSizer(tl_sizer)
        tl_sizer.Fit(panel)

        return panel
Example #31
0
    def _create_rwi2d_pane(self):
        panel = wx.Panel(self, -1)

        self.rwi2d = wxVTKRenderWindowInteractor(panel, -1, (400, 400))
        self.reset_cam2d_button = wx.Button(panel, -1, "Reset View")
        button_sizer = wx.BoxSizer(wx.HORIZONTAL)
        button_sizer.Add(self.reset_cam2d_button)

        sizer1 = wx.BoxSizer(wx.VERTICAL)
        sizer1.Add(self.rwi2d, 1, wx.EXPAND | wx.BOTTOM, 7)
        sizer1.Add(button_sizer)

        tl_sizer = wx.BoxSizer(wx.VERTICAL)
        tl_sizer.Add(sizer1, 1, wx.ALL | wx.EXPAND, 7)

        panel.SetSizer(tl_sizer)
        tl_sizer.Fit(panel)

        return panel
        def __init__(self,parent):
                wx.Panel.__init__(self, parent)

        #to interact with the scene using the mouse use an instance of vtkRenderWindowInteractor. 
                self.widget = wxVTKRenderWindowInteractor(self, -1)
                self.widget.Enable(1)
                self.widget.AddObserver("ExitEvent", lambda o,e,f=self: f.Close())
                self.trackballStyle = vtk.vtkInteractorStyleTrackballCamera()
                self.widget.SetInteractorStyle(self.trackballStyle)
                self.widget.Bind(wx.EVT_LEFT_DOWN, self.onLeftDown)
                self.widget.Bind(wx.EVT_MOTION, self.onMotion)
                self.widget.Bind(wx.EVT_LEFT_UP, self.onLeftUp)
                #self.widget.Bind(wx.EVT_MIDDLE)
                self.trackMotion = False
                self.sizer = wx.BoxSizer(wx.VERTICAL)
                self.sizer.Add(self.widget, 1, wx.EXPAND)
                self.SetSizer(self.sizer)
                self.Layout()
                self.isploted = False
    def _create_rwi3d_pane(self):
        panel = wx.Panel(self, -1)

        self.rwi3d = wxVTKRenderWindowInteractor(panel, -1, (400, 400))
        istyle = vtk.vtkInteractorStyleTrackballCamera()
        self.rwi3d.SetInteractorStyle(istyle)

        self.reset_cam3d_button = wx.Button(panel, -1, "Reset Zoom")
        button_sizer = wx.BoxSizer(wx.HORIZONTAL)
        button_sizer.Add(self.reset_cam3d_button)

        sizer1 = wx.BoxSizer(wx.VERTICAL)
        sizer1.Add(self.rwi3d, 1, wx.EXPAND | wx.BOTTOM, 7)
        sizer1.Add(button_sizer)

        tl_sizer = wx.BoxSizer(wx.VERTICAL)
        tl_sizer.Add(sizer1, 1, wx.ALL | wx.EXPAND, 7)

        panel.SetSizer(tl_sizer)
        tl_sizer.Fit(panel)
        return panel
Example #34
0
    def _create_rwi3d_pane(self):
        panel = wx.Panel(self, -1)

        self.rwi3d = wxVTKRenderWindowInteractor(panel, -1, (400, 400))
        istyle = vtk.vtkInteractorStyleTrackballCamera()
        self.rwi3d.SetInteractorStyle(istyle)

        self.reset_cam3d_button = wx.Button(panel, -1, "Reset Zoom")
        button_sizer = wx.BoxSizer(wx.HORIZONTAL)
        button_sizer.Add(self.reset_cam3d_button)

        sizer1 = wx.BoxSizer(wx.VERTICAL)
        sizer1.Add(self.rwi3d, 1, wx.EXPAND | wx.BOTTOM, 7)
        sizer1.Add(button_sizer)

        tl_sizer = wx.BoxSizer(wx.VERTICAL)
        tl_sizer.Add(sizer1, 1, wx.ALL | wx.EXPAND, 7)

        panel.SetSizer(tl_sizer)
        tl_sizer.Fit(panel)
        return panel
Example #35
0
    def __init__(self, parent, id, style):
        wx.Panel.__init__(self, parent, id, style=style)

        # usa da wx com a vtk junto (colocação do vtk dentro de wx)

        self.renderer = vtk.vtkRenderer()
        self.Interactor = wxVTKRenderWindowInteractor(self,
                                                      -1,
                                                      size=self.GetSize())
        self.Interactor.GetRenderWindow().AddRenderer(self.renderer)
        self.Interactor.Render()
        #-----------------------------------------------------------------------------
        #------- ajeitaro estilo da camera
        istyle = vtk.vtkInteractorStyleTrackballCamera()

        self.Interactor.SetInteractorStyle(istyle)
        #---------------------------------------------------------------

        self.VerPlano = False  # inicializar o plano, para usar como plano de corte

        self.Bind(wx.EVT_IDLE,
                  self.Restabelecer)  #para funcionar o editor de corte

        # funcão para escrever o erro num ficheiro txt
        log_path = os.path.join('.', 'vtkoutput.txt')
        fow = vtk.vtkFileOutputWindow()
        fow.SetFileName(log_path)
        ow = vtk.vtkOutputWindow()
        ow.SetInstance(fow)
        #--------------------------------------------------------
        #-------Criar a caixa de trabalho
        hbox = wx.BoxSizer(wx.VERTICAL)
        hbox.Add(wx.StaticText(self, -1, 'Area de Corte'))
        hbox.Add(self.Interactor, 1,
                 wx.EXPAND)  # juntar com o wx, numa so janela

        self.SetSizer(hbox)
        #------------------------------------------------------------------

        self.adicionaeixos()  #adiconar a função que chama o eixos
    def __init__(self, *args, **kwds):
        # begin wxGlade: LarynxMeasurementFrame.__init__
        kwds["style"] = wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self, *args, **kwds)
        self.view_frame_panel = wx.Panel(self, -1)
        self.rwi = wxVTKRenderWindowInteractor(self.view_frame_panel, -1)
        self.label_1 = wx.StaticText(self.view_frame_panel, -1, "Progress")
        self.progress_txt = wx.TextCtrl(self.view_frame_panel, -1, "", style=wx.TE_READONLY)
        self.label_2 = wx.StaticText(self.view_frame_panel, -1, "Current image")
        self.current_image_txt = wx.TextCtrl(self.view_frame_panel, -1, "", style=wx.TE_READONLY)
        self.label_3 = wx.StaticText(self.view_frame_panel, -1, "POGO dist")
        self.pogo_dist_txt = wx.TextCtrl(self.view_frame_panel, -1, "", style=wx.TE_READONLY)
        self.label_4 = wx.StaticText(self.view_frame_panel, -1, "Area")
        self.area_txt = wx.TextCtrl(self.view_frame_panel, -1, "", style=wx.TE_READONLY)
        self.clg1_cbox = wx.CheckBox(self.view_frame_panel, -1, "Cormack Lehane grade 1")
        self.start_button = wx.Button(self.view_frame_panel, -1, "Start")
        self.save_csv = wx.Button(self.view_frame_panel, -1, "Save CSV")
        self.reset_button = wx.Button(self.view_frame_panel, -1, "Reset")
        self.next_button = wx.Button(self.view_frame_panel, -1, "Next")

        self.__set_properties()
        self.__do_layout()
Example #37
0
    def __init__(self, parent, id, style):
        wx.Panel.__init__(self, parent, id, style=style)
        # tratar o render da parte fontral
        self.renderer = vtk.vtkRenderer()
        self.Interactor = wxVTKRenderWindowInteractor(self,
                                                      -1,
                                                      size=self.GetSize())
        self.Interactor.GetRenderWindow().AddRenderer(self.renderer)
        self.Interactor.Render()
        #---------------------------------
        # a variavel que guarda o actor que foi selecionada para se mover
        self.SelectActor = None
        #--------------------------------------------------
        # estilo do posicionamente da camera-----
        istyle = vtk.vtkInteractorStyleTrackballCamera()

        self.Interactor.SetInteractorStyle(istyle)
        #--------------------------------------------------
        # criar o box  de trabalho-----
        hbox = wx.BoxSizer(wx.VERTICAL)
        hbox.Add(wx.StaticText(self, -1, u'Visão Frontal'))

        hbox.Add(self.Interactor, 1, wx.EXPAND)
        self.SetSizer(hbox)
        #-------------------------------------------
        #-------a dicionar o eixo------
        self.adicionaeixos()
        #----------------------------------------
        #Tratar os eventos neste panel
        #Clicar, Mover o rato, soltar o botão do rato
        self.Picker = vtk.vtkPropPicker()
        istyle.AddObserver("LeftButtonPressEvent", self.Clik)
        istyle.AddObserver("MouseMoveEvent", self.OnMotion)
        istyle.AddObserver("LeftButtonReleaseEvent", self.Release)
        #-------------------------------------------------------------
        #cria um evente de renderizar automaiticamento nos 4 paneis

        Publisher.subscribe(self.Renderizacao, 'Renderizar')
Example #38
0
    def __init__(self, parent):
        self.Parent = parent
        self.iren = wxVTKRenderWindowInteractor(self.Parent, -1, size=self.Parent.GetSize())
        self.iren.SetPosition((0, 0))
        self.renwin = self.iren.GetRenderWindow()
        self.renwin.StereoCapableWindowOn()
        self.renwin.StereoRenderOff()
        self.renScope = VtkSNRender("SINGLE")
        self.renScope.SetMode("scope")
        self.renwin.AddRenderer(self.renScope)

        self.points = vtk.vtkPoints()
        self.values = vtk.vtkIntArray()

        self.values.SetName("Volts")
        for i in range(800):
            self.points.InsertPoint(i, 0, 0, 0)
            self.values.InsertNextValue(i + 10)

        self.polydata1 = vtk.vtkPolyData()
        self.polydata1.SetPoints(self.points)
        self.polydata1.GetPointData().SetScalars(self.values)
        # self.polydata1.SetLines(self.lines)

        self.xyplot = vtk.vtkXYPlotActor()
        self.xyplot.AddInput(self.polydata1)
        self.xyplot.GetProperty().SetColor(0, 0, 0)
        self.xyplot.GetProperty().SetLineWidth(2)

        self.xyplot.SetTitle("Scope")
        self.xyplot.SetXTitle("")
        self.xyplot.SetYTitle("")
        self.xyplot.GetPositionCoordinate().SetValue(0.1, 0.1, 0)
        self.xyplot.GetPosition2Coordinate().SetValue(0.9, 0.9, 0)
        self.xyplot.SetXRange(0, 800)
        self.xyplot.SetYRange(0, 1023)

        self.renScope.AddActor2D(self.xyplot)
Example #39
0
    def __init__(self, *args, **kwds):
        # begin wxGlade: SlicinatorFrame.__init__
        kwds["style"] = wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self, *args, **kwds)
        self.view_frame_panel = wx.Panel(self, -1)
        self.tool_notebook = wx.Notebook(self.view_frame_panel, -1, style=0)
        self.sizer_9_staticbox = wx.StaticBox(self.view_frame_panel, -1, "Actions")
        self.sizer_8_staticbox = wx.StaticBox(self.view_frame_panel, -1, "Mode")
        self.sizer_5_staticbox = wx.StaticBox(self.view_frame_panel, -1, "Objects")
        self.label_3 = wx.StaticText(self.view_frame_panel, -1, "Select:")
        self.object_choice = wx.Choice(self.view_frame_panel, -1, choices=["object 1", "Create new object ..."])
        self.create_object_button = wx.Button(self.view_frame_panel, -1, "Create new")
        self.delete_object_button = wx.Button(self.view_frame_panel, -1, "Delete")
        self.create_contour_button = wx.Button(self.view_frame_panel, -1, "Create")
        self.contour_type_choice = wx.Choice(self.view_frame_panel, -1, choices=["polygonal contour", "2D levelset"])
        self.notebook_1_pane_1 = wx.Panel(self.tool_notebook, -1)
        self.rwi = wxVTKRenderWindowInteractor(self.view_frame_panel, -1)
        self.label_4 = wx.StaticText(self.view_frame_panel, -1, "Current slice")
        self.slice_spin = wx.SpinCtrl(self.view_frame_panel, -1, "", min=0, max=100)
        self.reset_image_button = wx.Button(self.view_frame_panel, -1, "Reset Image")

        self.__set_properties()
        self.__do_layout()
Example #40
0
    def _create_rwi_pane(self):
        """Create a RenderWindowInteractor panel
        """
        panel = wx.Panel(self, -1)

        self.rwi = wxVTKRenderWindowInteractor(panel, -1, (600,800))
        self.button1 = wx.Button(panel, -1, "Reset Camera")
        self.button2 = wx.Button(panel, -1, "Reset All")
        button_sizer = wx.BoxSizer(wx.HORIZONTAL)
        button_sizer.Add(self.button1)
        button_sizer.Add(self.button2)

        sizer1 = wx.BoxSizer(wx.VERTICAL)
        sizer1.Add(self.rwi, 1, wx.EXPAND|wx.BOTTOM, 7)
        sizer1.Add(button_sizer)

        tl_sizer = wx.BoxSizer(wx.VERTICAL)
        tl_sizer.Add(sizer1, 1, wx.ALL|wx.EXPAND, 7)

        panel.SetSizer(tl_sizer)
        tl_sizer.Fit(panel)

        return panel
    def _create_rwi_pane(self):
        """Create a RenderWindowInteractor panel
        """
        panel = wx.Panel(self, -1)

        self.rwi = wxVTKRenderWindowInteractor(panel, -1, (600, 800))
        self.button1 = wx.Button(panel, -1, "Reset Camera")
        self.button2 = wx.Button(panel, -1, "Reset All")
        button_sizer = wx.BoxSizer(wx.HORIZONTAL)
        button_sizer.Add(self.button1)
        button_sizer.Add(self.button2)

        sizer1 = wx.BoxSizer(wx.VERTICAL)
        sizer1.Add(self.rwi, 1, wx.EXPAND | wx.BOTTOM, 7)
        sizer1.Add(button_sizer)

        tl_sizer = wx.BoxSizer(wx.VERTICAL)
        tl_sizer.Add(sizer1, 1, wx.ALL | wx.EXPAND, 7)

        panel.SetSizer(tl_sizer)
        tl_sizer.Fit(panel)

        return panel
Example #42
0
    def __init__(self, parent, id, style):
        wx.Panel.__init__(self, parent, id, style=style)

        self.renderer = vtk.vtkRenderer()
        self.Interactor = wxVTKRenderWindowInteractor(self,
                                                      -1,
                                                      size=self.GetSize())
        self.Interactor.GetRenderWindow().AddRenderer(self.renderer)
        self.Interactor.Render()

        istyle = vtk.vtkInteractorStyleTrackballCamera()

        self.Interactor.SetInteractorStyle(istyle)

        hbox = wx.BoxSizer(wx.VERTICAL)
        hbox.Add(wx.StaticText(self, -1, u'Visualização'))

        hbox.Add(self.Interactor, 1, wx.EXPAND)
        self.SetSizer(hbox)

        Publisher.subscribe(self.Renderizacao, 'Renderizar')

        self.adicionaeixos()
Example #43
0
    def __init__(self, prnt, titulo):
        wx.Panel.__init__(self, prnt)

        self.renderer = vtk.vtkRenderer()
        self.Interactor = wxVTKRenderWindowInteractor(self,
                                                      -1,
                                                      size=self.GetSize())
        self.Interactor.GetRenderWindow().AddRenderer(self.renderer)
        self.Interactor.Render()

        istyle = vtk.vtkInteractorStyleTrackballCamera()

        self.Interactor.SetInteractorStyle(istyle)

        self.actor = None

        hbox = wx.BoxSizer(wx.VERTICAL)
        hbox.Add(wx.StaticText(self, -1, u'Global'))

        hbox.Add(self.Interactor, 1, wx.EXPAND)
        self.SetSizer(hbox)

        self.renderer.ResetCamera()
Example #44
0
    def _create_3D_pane(self):
        """Create a panel for 3D visualization"""

        panel = wx.Panel(self, -1)
        self.interactor3d = wxVTKRenderWindowInteractor(panel, -1, (600, 800))
        self.generate_button = wx.Button(panel, label="Generate 3D view")
        self.text_position = wx.StaticText(panel, -1, "Dose (Gy) ",
                                           wx.Point(0, 0))
        self.slider_dose3d = wx.Slider(panel, -1, 75,
                                       60, 100, wx.DefaultPosition,
                                       wx.Size(100, -1), wx.SL_HORIZONTAL)
        self.spin_dose3d = wx.SpinCtrl(panel,
                                       wx.ID_ANY,
                                       str(self.slider_dose3d.GetValue()),
                                       wx.DefaultPosition,
                                       wx.Size(70, -1),
                                       wx.SP_ARROW_KEYS,
                                       min=0,
                                       max=100,
                                       initial=11)

        button_sizer = wx.BoxSizer(wx.HORIZONTAL)
        button_sizer.AddSpacer(30)
        button_sizer.Add(self.generate_button)
        button_sizer.AddSpacer(30)
        button_sizer.Add(self.text_position)
        button_sizer.Add(self.slider_dose3d)
        button_sizer.Add(self.spin_dose3d)

        listsizer = wx.BoxSizer(wx.VERTICAL)
        listsizer.Add(self.interactor3d, 1, wx.EXPAND | wx.BOTTOM, 7)
        listsizer.Add(button_sizer)
        panel.SetSizer(listsizer)
        listsizer.Fit(panel)

        self._create_orientation_widget(self.interactor3d)
        return panel
Example #45
0
    def _create_rwi_pane(self):
        """Return pane with renderer and buttons.
        """

        panel = wx.Panel(self, -1)

        rwi = wxVTKRenderWindowInteractor(panel, -1, (300, 300))

        if False:
            self.button1 = wx.Button(panel, -1, "Add Superquadric")
            self.button2 = wx.Button(panel, -1, "Reset Camera")
            button_sizer = wx.BoxSizer(wx.HORIZONTAL)
            button_sizer.Add(self.button1)
            button_sizer.Add(self.button2)

            sizer1 = wx.BoxSizer(wx.VERTICAL)
            sizer1.Add(rwi, 1, wx.EXPAND | wx.BOTTOM, 7)
            sizer1.Add(button_sizer)

        tl_sizer = wx.BoxSizer(wx.VERTICAL)
        tl_sizer.Add(rwi, 1, wx.ALL | wx.EXPAND, 7)

        panel.SetSizer(tl_sizer)
        tl_sizer.Fit(panel)

        ren = vtk.vtkRenderer()
        ren.SetBackground(0.5, 0.5, 0.5)
        ren.SetBackground2(1, 1, 1)
        ren.SetGradientBackground(1)
        rwi.GetRenderWindow().AddRenderer(ren)

        cmi_pane = CMIPane()
        cmi_pane.window = panel
        cmi_pane.renderer = ren
        cmi_pane.rwi = rwi

        return cmi_pane
Example #46
0
    def _create_rwi_pane(self):
        """Return pane with renderer and buttons.
        """

        panel = wx.Panel(self, -1)

        rwi = wxVTKRenderWindowInteractor(panel, -1, (300, 300))

        if False:
            self.button1 = wx.Button(panel, -1, "Add Superquadric")
            self.button2 = wx.Button(panel, -1, "Reset Camera")
            button_sizer = wx.BoxSizer(wx.HORIZONTAL)
            button_sizer.Add(self.button1)
            button_sizer.Add(self.button2)

            sizer1 = wx.BoxSizer(wx.VERTICAL)
            sizer1.Add(rwi, 1, wx.EXPAND | wx.BOTTOM, 7)
            sizer1.Add(button_sizer)

        tl_sizer = wx.BoxSizer(wx.VERTICAL)
        tl_sizer.Add(rwi, 1, wx.ALL | wx.EXPAND, 7)

        panel.SetSizer(tl_sizer)
        tl_sizer.Fit(panel)

        ren = vtk.vtkRenderer()
        ren.SetBackground(0.5, 0.5, 0.5)
        ren.SetBackground2(1, 1, 1)
        ren.SetGradientBackground(1)
        rwi.GetRenderWindow().AddRenderer(ren)

        cmi_pane = CMIPane()
        cmi_pane.window = panel
        cmi_pane.renderer = ren
        cmi_pane.rwi = rwi

        return cmi_pane
Example #47
0
 def build_panel(self):
     
     self.viewer = wx.Panel(self)
     
     self.iren = wxVTKRenderWindowInteractor(self.viewer, -1, size=(500,500), flag=wx.EXPAND)
     self.iren.SetPosition((0,0))
     # define interaction style
     self.iren.GetInteractorStyle().SetCurrentStyleToTrackballCamera() # change interaction style
     self.iren.Enable(1)
     
     # create renderer  
     self.renderer = vtk.vtkRenderer()
     self.renderer.SetBackground(1, 1, 1)
     self.iren.GetRenderWindow().AddRenderer(self.renderer)
 
     # cam stuff
     self.camera=vtk.vtkCamera() # create camera 
     self.renderer.SetActiveCamera(self.camera) # associate camera to renderer
     self.camera.SetFocalPoint(0, 0, 0)
     self.camera.SetPosition(0, 0, 0)
     
     self.data = None
     self.image = None
     self.axes = None
     self.actor_list = []
     self.plot_type = '' 
     
     Sizer = wx.BoxSizer(wx.VERTICAL)
     Sizer.Add(self.iren, 1, wx.EXPAND, 0)
     
     self.viewer.SetSizer(Sizer)        
     Sizer.Fit(self.viewer)
     self.viewer.Layout()
     
     self._mgr.AddPane(self.viewer, wxaui.AuiPaneInfo().Center().Dock().DestroyOnClose(False).CloseButton(False).CaptionVisible(False).MinSize(self.iren.GetSize()))
     self._mgr.Update()
    def _create_3D_pane(self):
        """Create a RenderWindowInteractor for the 3D data
        """
        panel = wx.Panel(self, -1)

        self.view3d = wxVTKRenderWindowInteractor(panel, -1, (400,400))

        self.save_button = wx.Button(panel, -1, "Save Snapshot")
        self.reset_view3d = wx.Button(panel, -1, "Reset Camera")

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.view3d, 1, wx.EXPAND)

        sizer_bottom = wx.BoxSizer(wx.HORIZONTAL)
        sizer_bottom.Add(self.save_button, 1)
        sizer_bottom.Add(self.reset_view3d, 1, wx.ALIGN_RIGHT)
        sizer.Add(sizer_bottom, 0, wx.EXPAND)

        panel.SetSizer(sizer)
        sizer.Fit(panel)

        self._create_orientation_widget(self.view3d)

        return panel
    def _create_rwi_pane(self):

        panel = wx.Panel(self, -1)

        self.rwi = wxVTKRenderWindowInteractor(panel, -1, (400,400))
        self.button1 = wx.Button(panel, -1, "Add Superquadric")
        self.button2 = wx.Button(panel, -1, "Reset Camera")
        self.button3 = wx.Button(panel, -1, "Start Timer Event")
        button_sizer = wx.BoxSizer(wx.HORIZONTAL)
        button_sizer.Add(self.button1)
        button_sizer.Add(self.button2)
        button_sizer.Add(self.button3)        

        sizer1 = wx.BoxSizer(wx.VERTICAL)
        sizer1.Add(self.rwi, 1, wx.EXPAND|wx.BOTTOM, 7)
        sizer1.Add(button_sizer)

        tl_sizer = wx.BoxSizer(wx.VERTICAL)
        tl_sizer.Add(sizer1, 1, wx.ALL|wx.EXPAND, 7)

        panel.SetSizer(tl_sizer)
        tl_sizer.Fit(panel)

        return panel
    def __init__(self, *args, **kwds):
        # begin wxGlade: LarynxMeasurementFrame.__init__
        kwds["style"] = wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self, *args, **kwds)
        self.view_frame_panel = wx.Panel(self, -1)
        self.rwi = wxVTKRenderWindowInteractor(self.view_frame_panel, -1)
        self.label_1 = wx.StaticText(self.view_frame_panel, -1, "Progress")
        self.progress_txt = wx.TextCtrl(self.view_frame_panel,
                                        -1,
                                        "",
                                        style=wx.TE_READONLY)
        self.label_2 = wx.StaticText(self.view_frame_panel, -1,
                                     "Current image")
        self.current_image_txt = wx.TextCtrl(self.view_frame_panel,
                                             -1,
                                             "",
                                             style=wx.TE_READONLY)
        self.label_3 = wx.StaticText(self.view_frame_panel, -1, "POGO dist")
        self.pogo_dist_txt = wx.TextCtrl(self.view_frame_panel,
                                         -1,
                                         "",
                                         style=wx.TE_READONLY)
        self.label_4 = wx.StaticText(self.view_frame_panel, -1, "Area")
        self.area_txt = wx.TextCtrl(self.view_frame_panel,
                                    -1,
                                    "",
                                    style=wx.TE_READONLY)
        self.clg1_cbox = wx.CheckBox(self.view_frame_panel, -1,
                                     "Cormack Lehane grade 1")
        self.start_button = wx.Button(self.view_frame_panel, -1, "Start")
        self.save_csv = wx.Button(self.view_frame_panel, -1, "Save CSV")
        self.reset_button = wx.Button(self.view_frame_panel, -1, "Reset")
        self.next_button = wx.Button(self.view_frame_panel, -1, "Next")

        self.__set_properties()
        self.__do_layout()
    def _create_overlay_slices_pane(self):
        """Create a RenderWindowInteractor for the original data and added emphysema overlay
        """
        panel = wx.Panel(self, -1)

        self.overlay = wxVTKRenderWindowInteractor(panel, -1, (400, 400))

        self.button3 = wx.Button(panel, -1, "Reset Camera")
        self.button4 = wx.Button(panel, -1, "Reset All")
        button_sizer = wx.BoxSizer(wx.HORIZONTAL)
        button_sizer.Add(self.button3)
        button_sizer.Add(self.button4)

        sizer1 = wx.BoxSizer(wx.VERTICAL)
        sizer1.Add(self.overlay, 1, wx.EXPAND | wx.BOTTOM, 7)
        sizer1.Add(button_sizer)

        tl_sizer = wx.BoxSizer(wx.VERTICAL)
        tl_sizer.Add(sizer1, 1, wx.ALL | wx.EXPAND, 7)

        panel.SetSizer(tl_sizer)
        tl_sizer.Fit(panel)

        return panel
Example #52
0
    def __init__(self, scene):

        wx.Frame.__init__(self, None, wx.ID_ANY, APP_NAME, size=MAIN_WIN_SIZE)
        self.scene = scene

        self.gauge_popup = GaugePopup(self)

        self.iren = wxVTKRenderWindowInteractor(self, -1)
        self.ren = vtk.vtkRenderer()
        self.ren_win = self.iren.GetRenderWindow()
        self.ren_win.AddRenderer(self.ren)
        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(self.iren, 1, wx.EXPAND, 0)
        self.SetSizer(sizer)
        self.status_bar = self.CreateStatusBar()

        self.last_mouse_event = None

        # file
        file_menu = wx.Menu()
        open_menuitem = file_menu.Append(wx.ID_OPEN,"&Open",
                                         " Load point cloud, model or markers")
        savemodel_menuitem = file_menu.Append(wx.ID_ANY,"Save Model",
                                              " Save current model")
        self.savecloud_menuitem = file_menu.Append(wx.ID_ANY,
                                                   "Save Point Cloud",
                                                   " Save modified point cloud")
        save_mm_menuitem = file_menu.Append(wx.ID_ANY, "Save Markers",
                                            " Save measurement markers")
        save_ss_menuitem = file_menu.Append(wx.ID_ANY, "Save Screenshot",
                                            " Save screenshot")
        #self.savecloud_menuitem.Enable(False)
        exit_menuitem = file_menu.Append(wx.ID_EXIT,"E&xit",
                                         " Terminate the program")

        # view
        self.view_menu = wx.Menu()

        cloud_submenu = wx.Menu()
        self.view_menu.AppendMenu(MainWindow.VIEW_PC_SUBMENU_ID,
                                  'Point Cloud', cloud_submenu)
        self.select_menuitem = cloud_submenu.AppendCheckItem(wx.ID_ANY,
                                        'Sphere Selection',
                                        ' Enable/disable point cloud selection')
        self.select_menuitem.Check(self.scene.point_cloud_selection_enabled)
        pc_opacity_menuitem = cloud_submenu.Append(wx.ID_ANY, 'Opacity',
                                                ' Adjust point cloud opacity')

        model_submenu = wx.Menu()
        self.volume_menuitem = model_submenu.AppendCheckItem(wx.ID_ANY,
                                            'Volume', ' Show/hide model volume')
        self.volume_menuitem.Check(self.scene.polytube_volume_enabled)
        model_opacity_menuitem = model_submenu.Append(wx.ID_ANY,
                                            'Opacity', ' Adjust model opacity')
        model_tips_mi = model_submenu.AppendCheckItem(wx.ID_ANY,
                                        'Branch Tips', ' Show/hide model tips')
        model_tips_mi.Check(self.scene.polytube_tips_enabled)
        self.view_menu.AppendMenu(wx.ID_ANY, 'Model', model_submenu)

        axes_menuitem = self.view_menu.AppendCheckItem(wx.ID_ANY,
                                            'Axes', ' Show/hide axes')
        axes_menuitem.Check(START_WITH_AXES)

        # point cloud
        pc_menu = wx.Menu()
        clear_pc_menuitem = pc_menu.Append(wx.ID_ANY,
                                           "&Clear"," Clear point cloud")
        pc_downsample_menuitem = pc_menu.Append(wx.ID_ANY,
                                    'Downsampling', 'Point cloud downsampling')
        #pc_voxel_menuitem = pc_menu.Append(wx.ID_ANY,
        #                      'Voxelize', 'Point cloud voxelization')
        geoclipping_menuitem = pc_menu.Append(wx.ID_ANY,
                        'Geodesic Clipping', 'Geodesic clipping of point cloud')

        # model
        model_menu = wx.Menu()
        clear_model_menuitem = model_menu.Append(wx.ID_ANY,
                                            "&Clear"," Clear current model")
        #smooth_menuitem = model_menu.Append(wx.ID_ANY,
        #                                "&Smooth"," Smooth current model")
        #smooth_menuitem.Enable(False)
        lsys_menuitem = model_menu.Append(wx.ID_ANY,
                                          "&L-System"," Create L-System model")
        add_mm_menuitem = model_menu.Append(wx.ID_ANY,
                           "Add Measurement Markers"," Add measurement markers")
        clear_mm_menuitem = model_menu.Append(wx.ID_ANY,
                   "Clear Measurement Markers"," Clear all measurement markers")

        # reconstruction
        recon_menu = wx.Menu()
        self.mvl_menuitem = recon_menu.Append(wx.ID_ANY,
                                                "Modified Verroust && Lazarus",)
        #self.mvl_menuitem.Enable(False)
        #self.supervised_str_menuitem = recon_menu.Append(wx.ID_ANY, "Lightning",)
        #self.supervised_str_menuitem.Enable(False)

        # help
        help_menu = wx.Menu()
        mouse_nav_menuitem = help_menu.Append(wx.ID_ANY,
                                "Mouse Navigation"," Describe mouse navigation")
        kbd_cmds_menuitem = help_menu.Append(wx.ID_ANY,
                              "Keyboard Commands"," Describe keyboard commands")
        about_menuitem = help_menu.Append(wx.ID_ABOUT,
                                    "&About"," Information about this program")

        menu_bar = wx.MenuBar()
        menu_bar.Append(file_menu, "&File")
        menu_bar.Append(self.view_menu, "&View")
        menu_bar.Append(pc_menu, "&Point Cloud")
        menu_bar.Append(model_menu, "&Model")
        menu_bar.Append(recon_menu, "&Reconstruction")
        menu_bar.Append(help_menu, "&Help")
        #menu_bar.EnableTop(pos=2, enable=False)

        self.SetMenuBar(menu_bar)
        self.Bind(wx.EVT_MENU, self.on_open, open_menuitem)
        self.Bind(wx.EVT_MENU, self.on_save_model, savemodel_menuitem)
        self.Bind(wx.EVT_MENU, self.on_save_pc, self.savecloud_menuitem)
        self.Bind(wx.EVT_MENU, self.on_save_mm, save_mm_menuitem)
        self.Bind(wx.EVT_MENU, self.on_save_screenshot, save_ss_menuitem)
        self.Bind(wx.EVT_MENU, self.on_about, about_menuitem)
        self.Bind(wx.EVT_MENU, lambda e: self.Close(True), exit_menuitem)
        self.Bind(wx.EVT_MENU, lambda e: self.scene.delete_all_point_clouds(),
                  clear_pc_menuitem)
        self.Bind(wx.EVT_MENU, lambda e: self.point_cloud_opacity_dialog.Show(),
                  pc_opacity_menuitem)
        self.Bind(wx.EVT_MENU, self.on_help_mouse_nav, mouse_nav_menuitem)
        self.Bind(wx.EVT_MENU, self.on_help_kbd_commands, kbd_cmds_menuitem)
        self.Bind(wx.EVT_MENU, lambda e: self.scene.delete_model(),
                  clear_model_menuitem)
        self.Bind(wx.EVT_MENU, lambda e:
                  self.scene.set_polytube_volume(
                      self.volume_menuitem.IsChecked()),
                  self.volume_menuitem)
        self.Bind(wx.EVT_MENU, lambda e:
                  self.scene.set_point_cloud_selection(
                      self.select_menuitem.IsChecked()),
                  self.select_menuitem)
        self.Bind(wx.EVT_MENU, self.show_model_opacity_dialog,
                  model_opacity_menuitem)
        self.Bind(wx.EVT_MENU, lambda e: self.mm_dialog.on_show(),
                  add_mm_menuitem)
        self.Bind(wx.EVT_MENU, lambda e:
                  self.scene.clear_measurement_markers(), clear_mm_menuitem)
        self.Bind(wx.EVT_MENU, lambda e: self.mvl_wiz.run(), self.mvl_menuitem)
        #self.Bind(wx.EVT_MENU, lambda e:
        #            self.supervised_str_wiz.run(), self.supervised_str_menuitem)
        self.Bind(wx.EVT_MENU, lambda e: self.lsys_wiz.run(), lsys_menuitem)
        #self.Bind(wx.EVT_MENU, lambda e: None, smooth_menuitem)
        def show_dialog(dlg):
            if self.scene.get_active_point_cloud(): dlg.Show()
            else: self.SetStatusText('A model is required for this!')
        self.Bind(wx.EVT_MENU, lambda e:
                  show_dialog(self.point_cloud_downsampling_dialog),
                  pc_downsample_menuitem)
        #self.Bind(wx.EVT_MENU, lambda e:
        #       self.point_cloud_voxelization_dialog.Show(), pc_voxel_menuitem)
        self.Bind(wx.EVT_MENU, lambda e:
                  show_dialog(self.point_cloud_geoclipping_dialog),
                  geoclipping_menuitem)

        def set_model_tips_visibility(e):
            self.scene.set_polytube_model_tips_visibility(
                model_tips_mi.IsChecked())
            if model_tips_mi.IsChecked() and \
              self.scene.get_active_polytube_model():
                self.SetStatusText("%d tips" %
                  self.scene.get_active_polytube_model().K.get_number_of_tips())

        self.Bind(wx.EVT_MENU, set_model_tips_visibility, model_tips_mi)
        #lambda e: self.scene.set_polytube_model_tips_visibility(
        #                          model_tips_mi.IsChecked()), model_tips_mi)

        def set_axes_visibility(e):
            self.axes_actor.SetVisibility(axes_menuitem.IsChecked())
            self.ren_win.Render()

        self.Bind(wx.EVT_MENU, set_axes_visibility, axes_menuitem)
        self.Bind(wx.EVT_CLOSE, lambda e: sys.exit(0))

        # MVL wizard
        self.mvl_wiz = MVLWizard(self,
                                'Modified Verroust & Lazarus Reconstruction', 4)
        self.mvl_wiz.add_page(MVLGeodesicConnectivityWizardPage(self.mvl_wiz))
        self.mvl_wiz.add_page(MVLLevelSetWizardPage(self.mvl_wiz))
        self.mvl_wiz.add_page(MVLReconstructionWizardPage(self.mvl_wiz))
        self.mvl_wiz.add_page(MVLSmoothingWizardPage(self.mvl_wiz))

        self.point_cloud_opacity_dialog = PointCloudOpacityDialog(self)
        self.point_cloud_downsampling_dialog = PointCloudDownsamplingDialog(self)
        self.point_cloud_voxelization_dialog = PointCloudVoxelizationDialog(self)
        self.point_cloud_geoclipping_dialog = PointCloudGeoClippingDialog(self)

        self.model_opacity_dialog = ModelOpacityDialog(self)
        self.mm_dialog = MeasurementMarkersDialog(self)

        # Lsys wizard
        self.lsys_wiz = LSystemWizard(self, 'L-System', 2)
        self.lsys_wiz.add_page(LSystemStructureWizardPage(self.lsys_wiz))
        self.lsys_wiz.add_page(LSystemSamplingWizardPage(self.lsys_wiz))

        self.Layout()
        self.Show(True)
Example #53
0
    def __init__(self, parent):
        wx.Panel.__init__(self, parent, size=wx.Size(320, 320))
        self.SetBackgroundColour(wx.Colour(0, 0, 0))

        self.interaction_style = st.StyleStateManager()

        self.ball_reference = None
        self.initial_foco = None

        style =  vtk.vtkInteractorStyleTrackballCamera()
        self.style = style

        interactor = wxVTKRenderWindowInteractor(self, -1, size = self.GetSize())
        interactor.SetInteractorStyle(style)
        self.interactor = interactor

        sizer = wx.BoxSizer(wx.VERTICAL)
        sizer.Add(interactor, 1, wx.EXPAND)
        self.sizer = sizer
        self.SetSizer(sizer)
        self.Layout()

        # It would be more correct (API-wise) to call interactor.Initialize() and
        # interactor.Start() here, but Initialize() calls RenderWindow.Render().
        # That Render() call will get through before we can setup the
        # RenderWindow() to render via the wxWidgets-created context; this
        # causes flashing on some platforms and downright breaks things on
        # other platforms.  Instead, we call widget.Enable().  This means
        # that the RWI::Initialized ivar is not set, but in THIS SPECIFIC CASE,
        # that doesn't matter.
        interactor.Enable(1)

        ren = vtk.vtkRenderer()
        interactor.GetRenderWindow().AddRenderer(ren)
        self.ren = ren

        self.raycasting_volume = False

        self.onclick = False

        self.text = vtku.Text()
        self.text.SetValue("")
        self.ren.AddActor(self.text.actor)


        self.slice_plane = None

        self.view_angle = None

        self.__bind_events()
        self.__bind_events_wx()

        self.mouse_pressed = 0
        self.on_wl = False

        self.picker = vtk.vtkPointPicker()
        interactor.SetPicker(self.picker)
        self.seed_points = []

        self.points_reference = []

        self.measure_picker = vtk.vtkPropPicker()
        #self.measure_picker.SetTolerance(0.005)
        self.measures = []

        self._last_state = 0

        self.repositioned_axial_plan = 0
        self.repositioned_sagital_plan = 0
        self.repositioned_coronal_plan = 0
        self.added_actor = 0

        self._mode_cross = False
        self._to_show_ball = 0
        self._ball_ref_visibility = False
Example #54
0
    def loadView(self):
        # LEFT
        #self.InteractorImageRenderWindow = wxVTKRenderWindowInteractor(self, -1)
        #self.InteractorImageRenderWindow.Enable(1)

        #self.topSizer.Add(self.InteractorImageRenderWindow, 1, wx.EXPAND| wx.RIGHT, 5)
        #self.ImageViewer = vtkImageViewer2()

        #a = wx.Panel(self, -1)
        #a.SetBackgroundColour("#00FF00")
        #self.topSizer.Add(a,1,wx.EXPAND|wx.RIGHT, 5)
        #self.wxImageSlider = wx.Slider(self, -1, style=wx.SL_VERTICAL | wx.SL_LEFT | wx.SL_MIN_MAX_LABELS | wx.EXPAND)
        #self.topSizer.Add(self.wxImageSlider, 0, wx.EXPAND)


            # RIGHT
        self.Interactor3DRenderWindow = wxVTKRenderWindowInteractor(self,-1)
        self.Interactor3DRenderWindow.Enable(1)

        self.topSizer.Add(self.Interactor3DRenderWindow, 1, wx.EXPAND)

        # Botton Sizer Configuration
        self.bottomSizer = wx.BoxSizer(wx.HORIZONTAL)

            # Load and Save Section
        self.loadSaveStaticBox = wx.StaticBox(self, -1, "Load and Save")
        self.wxLoadSaveStaticBox = wx.StaticBoxSizer(self.loadSaveStaticBox, wx.VERTICAL)
        self.wxLoadButton = wx.Button(self, -1, "Load Image", size=(100, 40))
        self.wxLoadSaveStaticBox.Add(self.wxLoadButton, 1, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 10)
        self.wxSaveButton = wx.Button(self, -1, "Save Volume", size=(100, 40))
        self.wxLoadSaveStaticBox.Add(self.wxSaveButton, 1, wx.ALIGN_CENTER_VERTICAL | wx.ALL, 10)
        self.bottomSizer.Add(self.wxLoadSaveStaticBox, 0, wx.EXPAND | wx.RIGHT, 10)

            # Configuration Section
        self.configurationStaticBox = wx.StaticBox(self, -1, "Configuration")
        self.wxConfigurationStaticBox = wx.StaticBoxSizer(self.configurationStaticBox, wx.VERTICAL)
        self.wxThresholdRadioBox = wx.RadioBox(self, -1, "Threshold Configuration", (-1, -1), (-1, -1), ["Upper", "Lower", "Range"], 3, wx.RA_SPECIFY_COLS)

        self.wxConfigurationStaticBox.Add(self.wxThresholdRadioBox, 0, wx.EXPAND | wx.ALL, 5)
        self.bottomSizer.Add(self.wxConfigurationStaticBox, 1, wx.EXPAND)

                # Sliders
        self.wxLowerStaticText = wx.StaticText(self, -1, "Lower: 0")
        self.wxConfigurationStaticBox.Add(self.wxLowerStaticText, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, 1)
        self.wxLowerSlider = wx.Slider(self, -1, minValue=0, maxValue=100)
        self.wxConfigurationStaticBox.Add(self.wxLowerSlider, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, 1)
        self.wxUpperStaticText = wx.StaticText(self, -1, "Upper: 0")
        self.wxConfigurationStaticBox.Add(self.wxUpperStaticText, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, 1)
        self.wxUpperSlider = wx.Slider(self, -1, minValue=0, maxValue=100)
        self.wxConfigurationStaticBox.Add(self.wxUpperSlider, 0, wx.EXPAND | wx.LEFT | wx.RIGHT, 1)

        # Filter Section
        self.filterStaticBox = wx.StaticBox(self, -1, "Filters")
        self.wxFilterStaticBox = wx.StaticBoxSizer(self.filterStaticBox, wx.VERTICAL)
        self.bottomSizer.Add(self.wxFilterStaticBox, 1, wx.EXPAND|wx.LEFT,10)

        # Root Sizer Configuration
        self.rootSizer = wx.BoxSizer(wx.VERTICAL)

        self.rootSizer.Add(self.topSizer, 2, wx.EXPAND | wx.ALL, 10)
        self.rootSizer.Add(self.bottomSizer, 1, wx.EXPAND | wx.ALL, 10)

        self.SetSizer(self.rootSizer)
        self.Layout()

        #Status Bar
        # Implement

        # Binds
        self.wxLoadButton.Bind(wx.EVT_BUTTON, self.OnButtonLoadImageClick)

        self.wxThresholdRadioBox.Bind(wx.EVT_RADIOBOX, self.OnWxThresholdRadioBoxChanged)
        self.wxUpperSlider.Bind(wx.EVT_SLIDER, self.OnWxUpperSliderChanged)
        self.wxLowerSlider.Bind(wx.EVT_SLIDER, self.OnWxLowerSliderChanged)

        # States
        self.wxSaveButton.Disable()

        self.loadSaveStaticBox.Disable()
        self.wxThresholdRadioBox.Disable()
        self.wxUpperSlider.Disable()
Example #55
0
    def __init__(self, parent,title,nchannel=1):
      self.Parent = parent
      self.nchannel = nchannel
      self.iren = wxVTKRenderWindowInteractor(self.Parent,-1,size = self.Parent.GetSize())
      self.iren.SetPosition((0,0))
      self.renwin = self.iren.GetRenderWindow()
      self.renwin.StereoCapableWindowOn()
      self.renwin.StereoRenderOff()
      self.renScope = {}
      self.mode = '%dchScope'%nchannel
      for i in range(nchannel):
          name = '%d_%dchScope'%(i+1,nchannel)
          self.renScope[i] = {}
          new_render = VtkSNRender(name)  
          new_render.SetMode(self.mode)
          new_render.SetQuadrant(name)
          self.renwin.AddRenderer(new_render)
          self.renScope[i]['render'] = new_render
          self.renScope[i]['name'] = name
      
      #Constantes de tela
      self.H_MAX = 800
      self.V_MAX = 1030
      
      self.V_MAX_UNIT = 100.0
      self.H_MAX_UNIT = 1.0 
      
      self.V_DIG_MAX_UNIT = 10.0
      self.H_DIG_MAX_UNIT = 4098

      for render in self.renScope:
          self.renScope[render]['points'] = vtk.vtkPoints()
          self.renScope[render]['values'] = vtk.vtkFloatArray()
          
          self.PontosNaTela = 0
          
          self.renScope[render]['values'].SetName("Values")
          toggle = 0.0
          edge = 500
          #For fast render time
          self.renScope[render]['points'].SetNumberOfPoints(self.H_DIG_MAX_UNIT)
          self.renScope[render]['values'].SetNumberOfValues(self.H_DIG_MAX_UNIT)
          for i in range(self.H_DIG_MAX_UNIT):
            #self.renScope[render]['points'].InsertPoint(i,0,0,0)
            #self.renScope[render]['values'].InsertValue(i,toggle)
            #For fast render time in conjuction with SetNumberOfPoints and SetNumberOfValues
            self.renScope[render]['points'].SetPoint(i,0,0,0)
            self.renScope[render]['values'].SetValue(i,toggle)
            if i == edge:
              if toggle:
                toggle = 0.0
              else:  
                toggle = self.V_MAX_UNIT/2
              edge = edge + 500
            self.PontosNaTela += 1 

          self.renScope[render]['polydata'] = vtk.vtkPolyData()
          self.renScope[render]['polydata'].SetPoints(self.renScope[render]['points'])
          self.renScope[render]['polydata'].GetPointData().SetScalars(self.renScope[render]['values'])
          self.renScope[render]['xyplot'] = vtk.vtkXYPlotActor()
          self.renScope[render]['xyplot'].AddInput(self.renScope[render]['polydata'])
          self.renScope[render]['xyplot'].GetProperty().SetColor(0, 1, 0)
          self.renScope[render]['xyplot'].GetProperty().SetLineWidth(1)
          self.renScope[render]['xyplot'].GetProperty().SetPointSize(2)
          
          self.renScope[render]['xyplot'].GetAxisLabelTextProperty().SetFontSize(1)
          self.renScope[render]['xyplot'].GetAxisLabelTextProperty().BoldOff()
          
          self.renScope[render]['xyplot'].PlotPointsOn()
          self.renScope[render]['xyplot'].PlotLinesOn()
          
          self.renScope[render]['xyplot'].SetTitle(title)
          self.renScope[render]['xyplot'].SetXTitle("")
          self.renScope[render]['xyplot'].SetYTitle("")
          self.renScope[render]['xyplot'].GetPositionCoordinate().SetValue(0.02, 0.1, 0)
          self.renScope[render]['xyplot'].GetPosition2Coordinate().SetValue(0.99, 0.9, 0)
          
          #self.renScope[render]['plotwidget'] = vtk.vtkXYPlotWidget()
          #self.renScope[render]['plotwidget'].SetXYPlotActor(self.renScope[render]['xyplot'])
          #self.renScope[render]['plotwidget'].SetInteractor(self.iren)
          self.renScope[render]['render'].AddActor2D(self.renScope[render]['xyplot'])
Example #56
0
 def __init__(self,parent):
     wx.Panel.__init__(self, parent)
     # Default object to display 
     self.stlObject = vtk.vtkSTLReader()
 
     # Use \\ for the path name instead of \ for vtk to recognise the default file
     self.stlObject.SetFileName("C:\\Users\\user\\workspace\\arrow.stl")
  
     # Create a mapper and an actor 
     self.mainMapper = vtk.vtkPolyDataMapper()        
     self.mainMapper.SetInputConnection(self.stlObject.GetOutputPort())
     self.mainActor = vtk.vtkActor()
     self.mainActor.SetMapper(self.mainMapper)
     self.mainActor.GetProperty().BackfaceCullingOff()
 
     self.widget = wxVTKRenderWindowInteractor(self, -1)
     self.widget.Enable(1)
     self.widget.AddObserver("ExitEvent", lambda o,e,f=self: f.Close())
     self.style = vtk.vtkInteractorStyleTrackballActor()
     self.widget.SetInteractorStyle(self.style)
     
     # Binds events to the functions created 
     self.widget.Bind(wx.EVT_LEFT_DOWN, self.onLeftDown)
     self.widget.Bind(wx.EVT_MIDDLE_DOWN, self.onMiddleDown)
     self.widget.Bind(wx.EVT_MOTION, self.onMotion)
     self.widget.Bind(wx.EVT_LEFT_UP, self.onLeftUp)
     self.widget.Bind(wx.EVT_MIDDLE_UP, self.onMiddleUp)
     self.widget.Bind(wx.EVT_KEY_DOWN, self.kDown)
     self.widget.Bind(wx.EVT_RIGHT_UP, self.onRightUp)
     self.widget.Bind(wx.EVT_RIGHT_DOWN, self.onRightDown)        
     self.trackMotion = False
     self.trackpos = False        
     self.sizer = wx.BoxSizer(wx.VERTICAL)
     self.sizer.Add(self.widget, 1, wx.EXPAND)
     self.SetSizer(self.sizer)
     self.Layout()
     self.isploted = False  
       
     # Open window and create a renderer
     # to interact with the scene using the mouse use an instance of vtkRenderWindowInteractor.
     self.renderer = vtk.vtkRenderer()
     self.renderer.SetBackground(.1, .2, .3) # Background colour dark blue         
     self.widget.GetRenderWindow().AddRenderer(self.renderer)
     
     # Add actor to render window 
     #self.renderer.GetActors().AddActor(self.mainActor)
     self.renderer.AddActor(self.mainActor)
    
     # Setup orientation markers 
     self.axes = vtk.vtkAxesActor()
     self.marker = vtk.vtkOrientationMarkerWidget()
     self.marker.SetInteractor(self.widget._Iren)
     self.marker.SetOrientationMarker(self.axes)
     self.marker.SetViewport(0.75,0,1,0.25)
     self.marker.SetEnabled(1)
     
     self.renderer.ResetCamera()
     self.renderer.ResetCameraClippingRange()
     self.isploted = True
     
     # Getting points when the actor is moved with the mouse 
     self.pointcatcher = self.linedrawer()
     self.linesPolyData = vtk.vtkPolyData()