_2_isoActorMC6 = NULL;
_2_isoMC6 = NULL;
- //DHC STL SURFACES
- stlInterna = NULL;
- stlExterna = NULL;
+
_loadSTLMapper = NULL;
_loadActorSTL = NULL;
joinMapper = NULL;
joinActor = NULL;
+ //DHC STL SURFACES
+ stlExterna = NULL;
+ stlInterna = NULL;
+ dsm1=NULL;
+ actorInternal = NULL;
+ dsm2 = NULL;
+ actorExternal=NULL;
+ _thresh=NULL;
+
}
//-------------------------------------------------------------------
void wxSTLWidget_03::setImage(vtkImageData* img){
- marImageData* marimagedata = new marImageData(img);
-
- _wxMaracasMPR->setMarImage(marimagedata, 1);
+ _wxMaracasMPR->setImageData(img, 1);
_wxMaracasMPR->ConfigureVTK();
- this->ConfigureProcessing(marimagedata,0,0,0);
+
+
+ this->ConfigureProcessing(img,0,0,0);
this->ConfigureSTL();
_wxMaracasMPR->Refresh();
//------------------------------------------------------------------------
-void wxSTLWidget_03::ConfigureProcessing(marImageData *marimagedata, int x, int y, int z)
+void wxSTLWidget_03::ConfigureProcessing(vtkImageData *img, int x, int y, int z)
{
wxBusyCursor wait;
- _imagedata=marimagedata->GetImageData(); // image t=0
- _imagedata->UpdateInformation();
- _imagedata->SetUpdateExtent(_imagedata->GetWholeExtent());
- _imagedata->Update();
+ _imagedata=img;
double puntoactualprov[3];
// _zslice->SetRange(extprin[4], extprin[5]);
// _zslice->SetValue(extprin[5]/2);
-
- _thresh = vtkImageThreshold::New();
- _thresh->SetInput(_imagedata);
- //_thresh->ReleaseDataFlagOff();
- _thresh->SetInValue(255);
- _thresh->SetOutputScalarTypeToUnsignedShort();
- _thresh->SetOutValue(0);
- //_thresh->ThresholdBetween(_sl_minSize->GetValue(), _range[1]);
- //SIL//
- _thresh->ThresholdBetween(sl_barrange_segmentation->GetStart(), sl_barrange_segmentation->GetEnd());
-
- vtkImageCast *cast = vtkImageCast::New();
- cast->SetInput(_thresh->GetOutput());
- cast->SetOutputScalarTypeToUnsignedChar();
- cast->Update();
-
-
- _connect = vtkImageSeedConnectivity::New();
- _connect->SetInput(cast->GetOutput());
- _connect->SetInputConnectValue(255);
- _connect->SetOutputConnectedValue(255);
- _connect->SetOutputUnconnectedValue(0);
- _connect->AddSeed((int)(puntoactualprov[0]), (int)(puntoactualprov[1]), (int)(puntoactualprov[2]));
-// _connect->Update();
-
- cast3 = vtkImageCast::New();
- cast3->SetInput(_connect->GetOutput());
- cast3->SetOutputScalarTypeToUnsignedShort();
- cast3->Update();
-//SIL//
+
+ if(_thresh==NULL){
+ _thresh = vtkImageThreshold::New();
+ //_thresh->ReleaseDataFlagOff();
+ _thresh->SetInValue(255);
+ _thresh->SetOutputScalarTypeToUnsignedShort();
+ _thresh->SetOutValue(0);
+ //_thresh->ThresholdBetween(_sl_minSize->GetValue(), _range[1]);
+ //SIL//
+ _cast = vtkImageCast::New();
+ _cast->SetInput(_thresh->GetOutput());
+ _cast->SetOutputScalarTypeToUnsignedChar();
+
+ _connect = vtkImageSeedConnectivity::New();
+ _connect->SetInput(_cast->GetOutput());
+ _connect->SetInputConnectValue(255);
+ _connect->SetOutputConnectedValue(255);
+ _connect->SetOutputUnconnectedValue(0);
+
+ cast3 = vtkImageCast::New();
+ cast3->SetInput(_connect->GetOutput());
+ cast3->SetOutputScalarTypeToUnsignedShort();
+
+ _thresh2 = vtkImageThreshold::New();
+ //_thresh2->ReleaseDataFlagOff();
+ _thresh2->SetInValue(255);
+ _thresh2->SetOutputScalarTypeToUnsignedShort();
+ _thresh2->SetOutValue(0);
+ //SIL//_thresh2->ThresholdBetween(_sl_minSize->GetValue(), _sl_maxSize->GetValue());
+
+ cast2 = vtkImageCast::New();
+ cast2->SetInput(_thresh2->GetOutput());
+ cast2->SetOutputScalarTypeToUnsignedChar();
+ _connect2 = vtkImageSeedConnectivity::New();
+ _connect2->SetInput(cast2->GetOutput());
+ _connect2->SetInputConnectValue(255);
+ _connect2->SetOutputConnectedValue(255);
+ _connect2->SetOutputUnconnectedValue(0);
+
+ cast4 = vtkImageCast::New();
+ cast4->SetInput(_connect2->GetOutput());
+ cast4->SetOutputScalarTypeToUnsignedShort();
+ }
+ _thresh->RemoveAllInputs();
+ _thresh->SetInput(_imagedata);
+ _thresh->ThresholdBetween(sl_barrange_segmentation->GetStart(), sl_barrange_segmentation->GetEnd());
+ _thresh->Update();
- _thresh2 = vtkImageThreshold::New();
- _thresh2->SetInput(_imagedata);
- //_thresh2->ReleaseDataFlagOff();
- _thresh2->SetInValue(255);
- _thresh2->SetOutputScalarTypeToUnsignedShort();
- _thresh2->SetOutValue(0);
- //SIL//_thresh2->ThresholdBetween(_sl_minSize->GetValue(), _sl_maxSize->GetValue());
- _thresh2->ThresholdBetween(sl_barrange_segmentation->GetStart(), sl_barrange_segmentation->GetEnd());
+ _cast->Update();
- cast2 = vtkImageCast::New();
- cast2->SetInput(_thresh2->GetOutput());
- cast2->SetOutputScalarTypeToUnsignedChar();
- cast2->Update();
- _connect2 = vtkImageSeedConnectivity::New();
- _connect2->SetInput(cast2->GetOutput());
- _connect2->SetInputConnectValue(255);
- _connect2->SetOutputConnectedValue(255);
- _connect2->SetOutputUnconnectedValue(0);
+ _connect->RemoveAllSeeds();
+ _connect->AddSeed((int)(puntoactualprov[0]), (int)(puntoactualprov[1]), (int)(puntoactualprov[2]));
+ //_connect->Update();
+ //cast3->Update();
+//SIL//
+ _thresh2->RemoveAllInputs();
+ _thresh2->SetInput(_imagedata);
+ _thresh2->ThresholdBetween(sl_barrange_segmentation->GetStart(), sl_barrange_segmentation->GetEnd());
+ _thresh2->Update();
+ cast2->Update();
+ _connect2->RemoveAllSeeds();
_connect2->AddSeed( (int)(puntoactualprov[0]), (int)(puntoactualprov[1]), (int)(puntoactualprov[2]));
- _connect2->Update();
-
- cast4 = vtkImageCast::New();
- cast4->SetInput(_connect2->GetOutput());
- cast4->SetOutputScalarTypeToUnsignedShort();
- cast4->Update();
+ //_connect2->Update();
+ //cast4->Update();
}
//------------------------------------------------------------------------
void wxSTLWidget_03::ResetTree2_JF()
{
// Remove
- vtkRenderer *ren = _wxMaracasMPR->GetWxvtkmpr3Dview_BB()->GetWxvtk3Dbaseview()->GetRenderer();
- if (_2_isoActorMC6){
- ren->RemoveActor(_2_isoActorMC6);
- }
- if (_2_stripfinal){
- ren->RemoveActor(_2_stripfinal);
- }
+ try{
- // Delete
-// if (_2_prgov ) { _2_prgov -> Delete(); }
- if (_2_mapfinal ) { _2_mapfinal -> Delete(); }
- if (_2_stripfinal ) { _2_stripfinal -> Delete(); }
- if (_2_isoMapperMC6 ) { _2_isoMapperMC6 -> Delete(); }
- if (_2_isoActorMC6 ) { _2_isoActorMC6 -> Delete(); }
- if (_2_isoMC6 ) { _2_isoMC6 -> Delete(); }
+ vtkRenderer *ren = _wxMaracasMPR->GetWxvtkmpr3Dview_BB()->GetWxvtk3Dbaseview()->GetRenderer();
- // Init
-// _2_prgov = NULL;
- _2_mapfinal = NULL;
- _2_stripfinal = NULL;
- _2_isoMapperMC6 = NULL;
- _2_isoActorMC6 = NULL;
- _2_isoMC6 = NULL;
+ if (_2_isoActorMC6){
+ ren->RemoveActor(_2_isoActorMC6);
+ }
+ if (_2_stripfinal){
+ ren->RemoveActor(_2_stripfinal);
+ }
+
+ // Delete
+ // if (_2_prgov ) { _2_prgov -> Delete(); }
+ if (_2_mapfinal ) { _2_mapfinal -> Delete(); }
+ if (_2_stripfinal ) { _2_stripfinal -> Delete(); }
+ if (_2_isoMapperMC6 ) { _2_isoMapperMC6 -> Delete(); }
+ if (_2_isoActorMC6 ) { _2_isoActorMC6 -> Delete(); }
+ if (_2_isoMC6 ) { _2_isoMC6 -> Delete(); }
+
+ // Init
+ // _2_prgov = NULL;
+ _2_mapfinal = NULL;
+ _2_stripfinal = NULL;
+ _2_isoMapperMC6 = NULL;
+ _2_isoActorMC6 = NULL;
+ _2_isoMC6 = NULL;
+ }catch(char* e){
+ std::cout<<e<<std::endl;
+ }
}
void wxSTLWidget_03::Reset_vtk_STLFile()
{
// Remove
- vtkRenderer *ren = _wxMaracasMPR->GetWxvtkmpr3Dview_BB()->GetWxvtk3Dbaseview()->GetRenderer();
- if (_loadActorSTL){
- ren->RemoveActor(_loadActorSTL);
+ try{
+ vtkRenderer *ren = _wxMaracasMPR->GetWxvtkmpr3Dview_BB()->GetWxvtk3Dbaseview()->GetRenderer();
+ if (_loadActorSTL){
+ ren->RemoveActor(_loadActorSTL);
+ }
+
+ // Delete
+ if (_loadSTLMapper ) { _loadSTLMapper -> Delete(); }
+ if (_loadActorSTL ) { _loadActorSTL -> Delete(); }
+
+ // Init
+ _loadSTLMapper = NULL;
+ _loadActorSTL = NULL;
+ }catch(char * e){
+ std::cout<<e<<std::endl;
}
- // Delete
- if (_loadSTLMapper ) { _loadSTLMapper -> Delete(); }
- if (_loadActorSTL ) { _loadActorSTL -> Delete(); }
-
- // Init
- _loadSTLMapper = NULL;
- _loadActorSTL = NULL;
-
}
//------------------------------------------------------------------------
void wxSTLWidget_03::OnBtnSTLFileErase(wxCommandEvent& event)
void wxSTLWidget_03::ConfigureSTL()
{
- stlExterna = vtkPolyData::New();
- stlInterna = vtkPolyData::New();
- dsm1 = vtkPolyDataMapper ::New();
- dsm1->SetInput (stlInterna);
- dsm1->ScalarVisibilityOff();
+ if(stlExterna == NULL){
+ stlExterna = vtkPolyData::New();
+ stlInterna = vtkPolyData::New();
- actorInternal = vtkActor::New();
- actorInternal->SetMapper (dsm1);
- actorInternal->GetProperty()->SetColor (0,1,0);
+ dsm1 = vtkPolyDataMapper ::New();
+ dsm1->SetInput (stlInterna);
+ dsm1->ScalarVisibilityOff();
- dsm2 = vtkPolyDataMapper ::New();
- dsm2->SetInput (stlExterna);
- dsm2->ScalarVisibilityOff();
+ actorInternal = vtkActor::New();
+ actorInternal->SetMapper (dsm1);
+ actorInternal->GetProperty()->SetColor (0,1,0);
- actorExternal= vtkActor::New();
- actorExternal->SetMapper (dsm2);
- actorExternal->GetProperty()->SetRepresentationToWireframe();
+ dsm2 = vtkPolyDataMapper ::New();
+ dsm2->SetInput (stlExterna);
+ dsm2->ScalarVisibilityOff();
-// vtkRenderer *ren = _maracasSurfaceWidget->GetVtk3DSurfaceWidget()->GetRenderer();
- vtkRenderer *ren = _wxMaracasMPR->GetWxvtkmpr3Dview_BB()->GetWxvtk3Dbaseview()->GetRenderer();
- ren->AddActor(actorInternal);
- ren->AddActor(actorExternal);
+ actorExternal= vtkActor::New();
+ actorExternal->SetMapper (dsm2);
+ actorExternal->GetProperty()->SetRepresentationToWireframe();
- stlExtractor = new vtkSTLExtractor();
+ // vtkRenderer *ren = _maracasSurfaceWidget->GetVtk3DSurfaceWidget()->GetRenderer();
+ vtkRenderer *ren = _wxMaracasMPR->GetWxvtkmpr3Dview_BB()->GetWxvtk3Dbaseview()->GetRenderer();
+ ren->AddActor(actorInternal);
+ ren->AddActor(actorExternal);
+
+ stlExtractor = new vtkSTLExtractor();
+
+ }
+
+
}
void wxSTLWidget_03::generateSTLSurfaces()