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
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)
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)
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)
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)
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')
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
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, 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')
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
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')
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()
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
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
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
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()
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
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
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)
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
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
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()
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()
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
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
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()
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')
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)
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()
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
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()
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()
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
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
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 _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
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)
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
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()
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'])
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()