1 /*# ---------------------------------------------------------------------
3 # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
5 # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
6 # Previous Authors : Laurent Guigues, Jean-Pierre Roux
7 # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
9 # This software is governed by the CeCILL-B license under French law and
10 # abiding by the rules of distribution of free software. You can use,
11 # modify and/ or redistribute the software under the terms of the CeCILL-B
12 # license as circulated by CEA, CNRS and INRIA at the following URL
13 # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
14 # or in the file LICENSE.txt.
16 # As a counterpart to the access to the source code and rights to copy,
17 # modify and redistribute granted by the license, users are provided only
18 # with a limited warranty and the software's author, the holder of the
19 # economic rights, and the successive licensors have only limited
22 # The fact that you are presently reading this means that you have had
23 # knowledge of the CeCILL-B license and that you accept its terms.
24 # ------------------------------------------------------------------------ */
26 /*=========================================================================
29 Module: $RCSfile: wxManualRegistration3D.cxx,v $
31 Date: $Date: 2012/11/15 14:15:16 $
32 Version: $Revision: 1.2 $
34 Copyright: (c) 2002, 2003
37 This software is distributed WITHOUT ANY WARRANTY; without even
38 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
39 PURPOSE. See the above copyright notice for more information.
41 =========================================================================*/
46 #include <wx/splitter.h>
47 #include <wx/notebook.h>
48 #include <wx/colordlg.h>
50 #include "wxManualRegistration3D.h"
53 //-------------------------------------------------------------------
54 //-------------------------------------------------------------------
55 //-------------------------------------------------------------------
57 BEGIN_EVENT_TABLE( wxManualRegistration3D, wxPanel )
58 EVT_MENU( 12121, wxManualRegistration3D::OnRefreshView )
59 // EVT_MENU( 12122, wxManualTree_MPRWidget::OnDClickLeft )
63 wxManualRegistration3D::wxManualRegistration3D( wxWindow* parent,
64 marImageData *marimageData )
65 : wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL)
68 _marimageData = marimageData;
70 _vtkmprbasedata_A = new vtkMPRBaseData();
71 _vtkmprbasedata_A->SetMarImageData(_marimageData);
73 _wxvtk3Dbaseview_Clipping3D = NULL;
74 _wxvtkmpr3Dview_A = NULL;
75 _wxvtkclipping3Dview_A = NULL;
77 _wxvtkmpr3Dview_B = NULL;
78 _wxvtkclipping3Dview_B = NULL;
82 wxSplitterWindow *pnlSplitter = new wxSplitterWindow( this , -1);
87 wxPanel * view3Dpanel = Create3DView( pnlSplitter , _vtkmprbasedata_A );
88 wxPanel * registrationControl = CreateRegistration3DControl( pnlSplitter ,_vtkmprbasedata_A);
90 // this->GetSize(&ww,&hh);
92 pnlSplitter -> SplitVertically( view3Dpanel, registrationControl , 700);
93 wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL );
94 sizer -> Add( pnlSplitter ,1,wxGROW ,0);
95 pnlSplitter -> SetMinimumPaneSize( 25 );
96 this -> SetSizer(sizer);
99 _transform = vtkTransform::New();
100 _transformBak = vtkTransform::New();
101 _transformBak->Identity();
107 //----------------------------------------------------------------------------
109 wxManualRegistration3D::~wxManualRegistration3D( )
111 if (_wxvtk3Dbaseview_Clipping3D != NULL) { delete _wxvtk3Dbaseview_Clipping3D; }
112 if (_wxvtkmpr3Dview_A != NULL) { delete _wxvtkmpr3Dview_A; }
113 if (_wxvtkclipping3Dview_A != NULL) { delete _wxvtkclipping3Dview_A; }
115 if (_wxvtkmpr3Dview_B != NULL) { delete _wxvtkmpr3Dview_B; }
116 if (_wxvtkclipping3Dview_B != NULL) { delete _wxvtkclipping3Dview_B; }
121 //----------------------------------------------------------------------------
122 void wxManualRegistration3D::ConfigureVTK()
124 _wxvtk3Dbaseview_Clipping3D -> Configure();
126 _wxvtkmpr3Dview_A -> Configure();
127 _wxvtkclipping3Dview_A -> Configure();
128 vtkInteractorStyle3DView *vtkinteractorstyle3Dview_A = new vtkInteractorStyle3DView();
129 vtkinteractorstyle3Dview_A->SetWxVtkMPR3DView(_wxvtkmpr3Dview_A);
130 vtkinteractorstyle3Dview_A->SetWxVtkClipping3DView(_wxvtkclipping3Dview_A);
131 _wxvtk3Dbaseview_Clipping3D->GetInteractorStyleBaseView()->AddInteractorStyleMaracas( vtkinteractorstyle3Dview_A );
135 //----------------------------------------------------------------------------
136 void wxManualRegistration3D::ConfigureVTK_B()
138 _wxvtkmpr3Dview_B -> Configure();
139 _wxvtkclipping3Dview_B -> Configure();
140 vtkInteractorStyle3DView *vtkinteractorstyle3Dview_B = new vtkInteractorStyle3DView();
141 vtkinteractorstyle3Dview_B->SetWxVtkMPR3DView(_wxvtkmpr3Dview_B);
142 vtkinteractorstyle3Dview_B->SetWxVtkClipping3DView(_wxvtkclipping3Dview_B);
143 _wxvtk3Dbaseview_Clipping3D->GetInteractorStyleBaseView()->AddInteractorStyleMaracas( vtkinteractorstyle3Dview_B );
146 //----------------------------------------------------------------------------
147 void wxManualRegistration3D::OnRefreshView(wxCommandEvent & event)
152 //----------------------------------------------------------------------------
153 void wxManualRegistration3D::OnTracking(wxCommandEvent& event)
155 if (_wxvtkmpr3Dview_B!=NULL){
156 _wxvtkmpr3Dview_B->InitOrientationPointWidget();
160 this->_marimageData->GetImageData()->GetSpacing(spc); //image t=0
163 xBak = spc[0] * this->_wxvtkmpr3Dview_B->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetX();
164 yBak = spc[1] * this->_wxvtkmpr3Dview_B->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetY();
165 zBak = spc[2] * this->_wxvtkmpr3Dview_B->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetZ();
168 mat[0]=_transform->GetMatrix()->GetElement(0,0);
169 mat[1]=_transform->GetMatrix()->GetElement(0,1);
170 mat[2]=_transform->GetMatrix()->GetElement(0,2);
171 mat[3]=_transform->GetMatrix()->GetElement(0,3);
173 mat[4]=_transform->GetMatrix()->GetElement(1,0);
174 mat[5]=_transform->GetMatrix()->GetElement(1,1);
175 mat[6]=_transform->GetMatrix()->GetElement(1,2);
176 mat[7]=_transform->GetMatrix()->GetElement(1,3);
178 mat[8]=_transform->GetMatrix()->GetElement(2,0);
179 mat[9]=_transform->GetMatrix()->GetElement(2,1);
180 mat[10]=_transform->GetMatrix()->GetElement(2,2);
181 mat[11]=_transform->GetMatrix()->GetElement(2,3);
183 mat[12]=_transform->GetMatrix()->GetElement(3,0);
184 mat[13]=_transform->GetMatrix()->GetElement(3,1);
185 mat[14]=_transform->GetMatrix()->GetElement(3,2);
186 mat[15]=_transform->GetMatrix()->GetElement(3,3);
188 _transformBak->SetMatrix(mat);
191 // EED 25 Janvier 2005 TestLoic
192 this->_wxvtkmpr3Dview_A->TestLoic1();
198 //----------------------------------------------------------------------------
199 void wxManualRegistration3D::RefreshView()
203 if ( _wxvtkmpr3Dview_B!=NULL )
205 if (_btnTrack->GetValue()==true)
208 this->_marimageData->GetImageData()->GetSpacing(spc); // image t=0
209 vtkTransform *m = this->_wxvtkmpr3Dview_B->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetTransformOrientation();
210 double x = spc[0] * this->_wxvtkmpr3Dview_B->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetX();
211 double y = spc[1] * this->_wxvtkmpr3Dview_B->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetY();
212 double z = spc[2] * this->_wxvtkmpr3Dview_B->GetVtkMPR3DDataViewer()->GetVtkMPRBaseData()->GetZ();
213 double xx=this->_posX->GetValue()/30.0;
214 double yy=this->_posY->GetValue()/30.0;
215 double zz=this->_posZ->GetValue()/30.0;
216 double sx=this->_scaleX->GetValue()/100.0;
217 double sy=this->_scaleY->GetValue()/100.0;
218 double sz=this->_scaleZ->GetValue()/100.0;
219 _transform->Identity();
220 // _transform->Translate(x,y,z);
224 // _transform->Translate((x-xBak),(y-yBak),(z-zBak) );
225 // _transform->Translate( xBak , yBak , zBak );
226 _transform->Translate( xx , yy , zz );
227 _transform->Translate( x , y , z );
228 _transform->Concatenate( m->GetMatrix() );
229 _transform->RotateX( _angAlfa->GetValue()/30.0 );
230 _transform->RotateY( _angBeta->GetValue()/30.0 );
231 _transform->RotateZ( _angGama->GetValue()/30.0 );
232 _transform->Scale( sx,sy,sz );
233 _transform->Translate(-(xBak),-(yBak),-(zBak) );
235 _transform->Concatenate( _transformBak->GetMatrix() );
241 vtkClipping3DDataViewer *vtkclipping3Ddataviewer = _wxvtkclipping3Dview_B->GetVtkClipping3DDataViewer();
246 vtkactor = vtkclipping3Ddataviewer->GetTissueActor(i);
247 vtkactor->SetUserTransform( _transform );
249 _wxvtkmpr3Dview_B -> RefreshView();
250 _wxvtkclipping3Dview_B -> Refresh();
253 _wxvtkmpr3Dview_A -> RefreshView();
254 _wxvtkclipping3Dview_A -> Refresh();
255 _wxvtk3Dbaseview_Clipping3D -> Refresh();
257 if (_panelCutting!=NULL)
259 _panelCutting->RefreshView();
266 //----------------------------------------------------------------------------
267 wxPanel* wxManualRegistration3D::CreateRegistration3DControl( wxWindow *parent, vtkMPRBaseData *vtkmprbasedata)
269 wxPanel *panel = new wxPanel(parent,-1);
271 int maxX = vtkmprbasedata->GetMaxPositionX();
272 int maxY = vtkmprbasedata->GetMaxPositionY();
273 int maxZ = vtkmprbasedata->GetMaxPositionZ();
278 _posX = new wxSlider( panel, -1,0 , -maxX*2, maxX*2, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL | wxSL_AUTOTICKS |wxSL_LABELS );
279 _posY = new wxSlider( panel, -1,0 , -maxY*2, maxY*2, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL | wxSL_AUTOTICKS |wxSL_LABELS );
280 _posZ = new wxSlider( panel, -1,0 , -maxZ*2, maxZ*2, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL | wxSL_AUTOTICKS |wxSL_LABELS );
282 _scaleX = new wxSlider( panel, -1,100 , 0, 200, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL | wxSL_AUTOTICKS |wxSL_LABELS );
283 _scaleY = new wxSlider( panel, -1,100 , 0, 200, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL | wxSL_AUTOTICKS |wxSL_LABELS );
284 _scaleZ = new wxSlider( panel, -1,100 , 0, 200, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL | wxSL_AUTOTICKS |wxSL_LABELS );
287 _angAlfa = new wxSlider( panel, -1,0 , -100, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL | wxSL_AUTOTICKS |wxSL_LABELS );
288 _angBeta = new wxSlider( panel, -1,0 , -100, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL | wxSL_AUTOTICKS |wxSL_LABELS );
289 _angGama = new wxSlider( panel, -1,0 , -100, 100, wxDefaultPosition, wxDefaultSize, wxSL_HORIZONTAL | wxSL_AUTOTICKS |wxSL_LABELS );
292 _btnTrack = new wxCheckBox(panel, -1,_T("Tracking"));
294 _posX->SetTickFreq( 10, 0 );
295 _posY->SetTickFreq( 10, 0 );
296 _posZ->SetTickFreq( 10, 0 );
298 _angAlfa->SetTickFreq( 30, 0 );
299 _angBeta->SetTickFreq( 30, 0 );
300 _angGama->SetTickFreq( 30, 0 );
305 Connect(_posX->GetId() , wxEVT_COMMAND_SLIDER_UPDATED , (wxObjectEventFunction) &wxManualRegistration3D::OnPositionRotation );
306 Connect(_posY->GetId() , wxEVT_COMMAND_SLIDER_UPDATED , (wxObjectEventFunction) &wxManualRegistration3D::OnPositionRotation );
307 Connect(_posZ->GetId() , wxEVT_COMMAND_SLIDER_UPDATED , (wxObjectEventFunction) &wxManualRegistration3D::OnPositionRotation );
309 Connect(_scaleX->GetId() , wxEVT_COMMAND_SLIDER_UPDATED , (wxObjectEventFunction) &wxManualRegistration3D::OnPositionRotation );
310 Connect(_scaleY->GetId() , wxEVT_COMMAND_SLIDER_UPDATED , (wxObjectEventFunction) &wxManualRegistration3D::OnPositionRotation );
311 Connect(_scaleZ->GetId() , wxEVT_COMMAND_SLIDER_UPDATED , (wxObjectEventFunction) &wxManualRegistration3D::OnPositionRotation );
313 Connect(_angAlfa->GetId() , wxEVT_COMMAND_SLIDER_UPDATED , (wxObjectEventFunction) &wxManualRegistration3D::OnPositionRotation );
314 Connect(_angBeta->GetId() , wxEVT_COMMAND_SLIDER_UPDATED , (wxObjectEventFunction) &wxManualRegistration3D::OnPositionRotation );
315 Connect(_angGama->GetId() , wxEVT_COMMAND_SLIDER_UPDATED , (wxObjectEventFunction) &wxManualRegistration3D::OnPositionRotation );
317 Connect(_btnTrack->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED , (wxObjectEventFunction) &wxManualRegistration3D::OnTracking );
320 wxBoxSizer *sizerH1 = new wxBoxSizer(wxHORIZONTAL);
321 sizerH1->Add( _posX, 1, wxALL|wxEXPAND, 5);
322 sizerH1->Add( _posY, 1, wxALL|wxEXPAND, 5);
323 sizerH1->Add( _posZ, 1, wxALL|wxEXPAND, 5);
326 wxBoxSizer *sizerH2 = new wxBoxSizer(wxHORIZONTAL);
327 sizerH2->Add( _scaleX, 1, wxALL|wxEXPAND, 5);
328 sizerH2->Add( _scaleY, 1, wxALL|wxEXPAND, 5);
329 sizerH2->Add( _scaleZ, 1, wxALL|wxEXPAND, 5);
331 wxBoxSizer *sizerH3 = new wxBoxSizer(wxHORIZONTAL);
332 sizerH3->Add( _angAlfa, 1, wxALL|wxEXPAND, 5);
333 sizerH3->Add( _angBeta, 1, wxALL|wxEXPAND, 5);
334 sizerH3->Add( _angGama, 1, wxALL|wxEXPAND, 5);
337 wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
338 sizer->Add( sizerH1 , 1, wxALL|wxEXPAND, 0);
339 sizer->Add( sizerH2 , 1, wxALL|wxEXPAND, 0);
340 sizer->Add( sizerH3 , 1, wxALL|wxEXPAND, 0);
341 sizer->Add( _btnTrack , 1, wxALL|wxEXPAND, 10);
342 sizer->Add( new wxPanel(panel,-1) , 1, wxALL|wxEXPAND, 0);
343 sizer->Add( new wxPanel(panel,-1) , 1, wxALL|wxEXPAND, 0);
344 sizer->Add( new wxPanel(panel,-1) , 1, wxALL|wxEXPAND, 0);
346 panel->SetAutoLayout(true);
347 panel->SetSizer(sizer);
348 panel->SetSize(400,400);
353 //----------------------------------------------------------------------------
354 void wxManualRegistration3D::OnPositionRotation(wxScrollEvent& event)
360 //----------------------------------------------------------------------------
361 wxPanel* wxManualRegistration3D::Create3DView( wxWindow *parent, vtkMPRBaseData *vtkmprbasedata)
364 wxPanel *panel=new wxPanel(parent,-1);
366 wxSplitterWindow *panelClipping3D = new wxSplitterWindow( panel , -1);
367 _wxvtk3Dbaseview_Clipping3D = new wxVtk3DBaseView( panelClipping3D );
369 _wxvtkclipping3Dview_A = new wxVtkClipping3DView(_wxvtk3Dbaseview_Clipping3D);
370 vtkClipping3DDataViewer *vtkclipping3Ddataviewer_A = new vtkClipping3DDataViewer();
371 vtkclipping3Ddataviewer_A->SetVtkMPRBaseData(vtkmprbasedata);
372 vtkclipping3Ddataviewer_A->Configure();
373 _wxvtkclipping3Dview_A->SetVtkClipping3DDataViewer(vtkclipping3Ddataviewer_A);
375 _wxvtkmpr3Dview_A = new wxVtkMPR3DView( _wxvtk3Dbaseview_Clipping3D );
376 vtkMPR3DDataViewer *vtkmpr3Ddataviewer_A = new vtkMPR3DDataViewer();
377 vtkmpr3Ddataviewer_A->SetVtkMPRBaseData(vtkmprbasedata);
378 vtkmpr3Ddataviewer_A->Configure();
379 _wxvtkmpr3Dview_A->SetVtkMPR3DDataViewer(vtkmpr3Ddataviewer_A);
383 wxWindow *window3D = _wxvtk3Dbaseview_Clipping3D->GetWxVTKRenderWindowInteractor();
384 wxSplitterWindow *panelControlSplit = new wxSplitterWindow(panelClipping3D,-1);
387 wxPanel *panelControl_A = new wxPanel(panelControlSplit,-1,wxDefaultPosition,wxSize(800,800));
389 wxPanel *controlPanelMPR3D_A = _wxvtkmpr3Dview_A->CreateControlPanel(panelControl_A);
390 wxPanel *controlPanelClipping3D_A = _wxvtkclipping3Dview_A->CreateControlPanel(panelControl_A);
392 _btnCutImageData = new wxCheckBox(panelControl_A,-1,_T("Cut Module"));
393 Connect(_btnCutImageData->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED , (wxObjectEventFunction) &wxManualRegistration3D::OnCutImagaData );
396 // wxBoxSizer *sizerCtrol_A = new wxBoxSizer(wxVERTICAL);
397 wxFlexGridSizer *sizerCtrol_A = new wxFlexGridSizer(1);
399 sizerCtrol_A->Add(controlPanelMPR3D_A , 1, wxALL|wxEXPAND, 2);
400 sizerCtrol_A->Add(controlPanelClipping3D_A , 1, wxALL|wxEXPAND, 2);
401 sizerCtrol_A->Add( _btnCutImageData , 1, wxALL, 2);
404 panelControl_A->SetAutoLayout(true);
405 panelControl_A->SetSizer(sizerCtrol_A);
406 panelControl_A->SetSize(400,350);
407 panelControl_A->Layout();
411 _panelControl_B = new wxPanel(panelControlSplit,-1,wxDefaultPosition,wxSize(800,800));
414 panelControlSplit->SplitVertically(panelControl_A, _panelControl_B);
415 panelControlSplit->SetMinimumPaneSize( 20 );
417 wxBoxSizer *sizerCtrol = new wxBoxSizer(wxHORIZONTAL);
418 sizerCtrol->Add(panelControlSplit , 1, wxALL|wxEXPAND, 2);
420 panelControlSplit->SetAutoLayout(true);
421 panelControlSplit->SetSizer(sizerCtrol);
422 // panelControlSplit->SetSize(400,350);
423 panelControlSplit->Layout();
427 while (pp->GetParent()!=NULL) pp=pp->GetParent();
428 pp->GetSize(&ww,&hh);
431 // panelClipping3D -> SetMinimumPaneSize( -50 );
432 panelClipping3D -> SplitHorizontally( panelControlSplit,window3D/*, (int)(hh*0.20)*/ );
433 panelClipping3D -> SetMinimumPaneSize( 20 );
434 wxwindow=panelClipping3D;
436 wxBoxSizer *sizerH1 = new wxBoxSizer(wxHORIZONTAL);
437 sizerH1->Add(wxwindow , 1, wxALL|wxEXPAND, 0);
438 panel->SetAutoLayout(true);
439 panel->SetSizer(sizerH1);
440 panel->SetSize(400,400);
444 // panel->FitInside();
449 //--------------------------------------------------------------------------
450 void wxManualRegistration3D::AddPanelControl_B( wxWindow *parent, marImageData *marimagedata)
453 // _imageData_B=marimagedata->GetImageData();
455 vtkMPRBaseData* vtkmprbasedata = new vtkMPRBaseData();
456 vtkmprbasedata->SetMarImageData(marimagedata);
458 _wxvtkclipping3Dview_B = new wxVtkClipping3DView(_wxvtk3Dbaseview_Clipping3D);
459 vtkClipping3DDataViewer *vtkclipping3Ddataviewer_B = new vtkClipping3DDataViewer();
460 vtkclipping3Ddataviewer_B->SetVtkMPRBaseData(vtkmprbasedata);
461 vtkclipping3Ddataviewer_B->Configure();
462 _wxvtkclipping3Dview_B->SetVtkClipping3DDataViewer(vtkclipping3Ddataviewer_B);
464 _wxvtkmpr3Dview_B = new wxVtkMPR3DView( _wxvtk3Dbaseview_Clipping3D );
465 vtkMPR3DDataViewer *vtkmpr3Ddataviewer_B = new vtkMPR3DDataViewer();
466 vtkmpr3Ddataviewer_B->SetVtkMPRBaseData(vtkmprbasedata);
467 vtkmpr3Ddataviewer_B->Configure();
468 _wxvtkmpr3Dview_B->SetVtkMPR3DDataViewer(vtkmpr3Ddataviewer_B);
471 wxPanel *controlPanelMPR3D_B = _wxvtkmpr3Dview_B->CreateControlPanel(_panelControl_B);
472 wxPanel *controlPanelClipping3D_B = _wxvtkclipping3Dview_B->CreateControlPanel(_panelControl_B);
474 // wxBoxSizer *sizerCtrol_B = new wxBoxSizer(wxVERTICAL);
475 wxFlexGridSizer *sizerCtrol_B = new wxFlexGridSizer(1);
477 sizerCtrol_B->Add(controlPanelMPR3D_B , 1, wxALL|wxEXPAND, 2);
478 sizerCtrol_B->Add(controlPanelClipping3D_B , 1, wxALL|wxEXPAND, 2);
480 _panelControl_B->SetAutoLayout(true);
481 _panelControl_B->SetSizer(sizerCtrol_B);
482 _panelControl_B->SetSize(400,350);
483 _panelControl_B->Layout();
486 //--------------------------------------------------------------------------
487 void wxManualRegistration3D::AddSecondVolume(marImageData *marimagedata)
489 AddPanelControl_B(_panelControl_B,marimagedata);
493 //--------------------------------------------------------------------------
494 bool wxManualRegistration3D::GetIfSecondVolumeExist()
497 if (_wxvtkmpr3Dview_B!=NULL)
503 //----------------------------------------------------------------------------
504 void wxManualRegistration3D::OnCutImagaData(wxCommandEvent &event)
506 if (_btnCutImageData->GetValue()==true){
507 _framePanelCutting = new wxFrame(this,-1,_T("Cutting Module"),wxDefaultPosition,wxDefaultSize,wxCAPTION|wxSTAY_ON_TOP| wxRESIZE_BORDER );
508 _framePanelCutting->SetSize(550,400);
509 _panelCutting = new wxPanelCuttingImageData(_framePanelCutting);
510 _panelCutting->SetWxVtk3DBaseView( _wxvtk3Dbaseview_Clipping3D );
511 _panelCutting->SetVtkMPRBaseData( _vtkmprbasedata_A );
512 _panelCutting->Configure( );
513 _framePanelCutting->Show();
514 // _panelCutting->RefreshView();
517 if (_framePanelCutting!=NULL){
518 _panelCutting->RemoveActors();
519 _framePanelCutting->Close();
520 _framePanelCutting = NULL;
521 _panelCutting = NULL;
526 //--------------------------------------------------------------------------
529 // EOF - wxManualRegistration3D.cxx