#include <CutModelData.h>
Public Member Functions | |
CutModelData () | |
CutModelData (int id, vtkRenderWindowInteractor *interactor, vtkCommand *observer, vtkImageData *img) | |
~CutModelData () | |
void | initializeData (int id, vtkRenderWindowInteractor *interactor, vtkCommand *observer, vtkImageData *img) |
int | getId () |
void | changeOpacity (int opacity) throw ( CutModelException) |
void | ShowViewBox (bool check) throw ( CutModelException) |
void | ChangeShape (int selection) throw ( CutModelException) |
vtkActor * | getActor () throw ( CutModelException) |
vtkPolyData * | getPolyData () throw ( CutModelException) |
void | changeColor (double r, double g, double b) throw ( CutModelException) |
void | udapteActorDirection () throw ( CutModelException) |
void | ExecuteCut (double *range, bool isinside, vtkImageData *copyimage) throw ( CutModelException) |
void | ExecuteUnCut (bool isinside, vtkImageData *image, vtkImageData *copyimage) throw ( CutModelException) |
void | RefreshViewBox () |
vtkTransform * | getCurrentMatrix () |
int | getCurrentShape () |
void | setCurrentShape (int currentshape) |
void | setTransform (vtkTransform *transform, vtkImageData *img) throw ( CutModelException) |
Private Member Functions | |
void | checkInvariant () throw ( CutModelException) |
void | createBoxWidget (vtkRenderWindowInteractor *interactor, vtkCommand *observer) |
void | createActor () |
void | setTransform (vtkImageData *img) throw ( CutModelException) |
void | createShapes () |
CutModelFigure * | getCurentCuttingModel () |
vtkTransform * | getModelTransform (vtkImageData *copyimage) |
vtkTransform * | getModelTransformInvers () |
Private Attributes | |
vtkBoxWidget * | _boxWidgetVolume |
vtkPolyDataMapper * | _Mapper |
vtkActor * | _Actor |
int | _id |
int | _currentshape |
CutModelFigureCube * | _cubefigure |
CutModelFigureCylinder * | _cylinderfigure |
CutModelFigureSphere * | _spherefigure |
vtkTransform * | currentmatrix |
vtkTransform * | modeltransform |
vtkTransform * | inversModel |
Definition at line 42 of file CutModelData.h.
CutModelData::CutModelData | ( | ) |
Definition at line 27 of file CutModelData.cxx.
CutModelData::CutModelData | ( | int | id, | |
vtkRenderWindowInteractor * | interactor, | |||
vtkCommand * | observer, | |||
vtkImageData * | img | |||
) |
Start of the manager class
Definition at line 22 of file CutModelData.cxx.
References initializeData().
00022 { 00023 00024 initializeData(id, interactor, observer, img); 00025 00026 }
CutModelData::~CutModelData | ( | ) |
Definition at line 40 of file CutModelData.cxx.
References _Actor, _boxWidgetVolume, _cubefigure, _cylinderfigure, _id, _Mapper, _spherefigure, checkInvariant(), currentmatrix, inversModel, and modeltransform.
00040 { 00041 checkInvariant(); 00042 _boxWidgetVolume->RemoveAllObservers(); 00043 _boxWidgetVolume->Off(); 00044 _boxWidgetVolume->SetInteractor(NULL); 00045 _boxWidgetVolume->Delete(); 00046 _Mapper->Delete(); 00047 _Actor->Delete(); 00048 delete _cubefigure; 00049 delete _cylinderfigure; 00050 delete _spherefigure; 00051 currentmatrix->Delete(); 00052 modeltransform->Delete(); 00053 inversModel->Delete(); 00054 _id = -1; 00055 }
void CutModelData::changeColor | ( | double | r, | |
double | g, | |||
double | b | |||
) | throw ( CutModelException) |
Definition at line 182 of file CutModelData.cxx.
Referenced by CutModelManager::changeColor().
00182 { 00183 checkInvariant(); 00184 _Actor->GetProperty()->SetColor( r,g,b ); 00185 }
void CutModelData::changeOpacity | ( | int | opacity | ) | throw ( CutModelException) |
Definition at line 125 of file CutModelData.cxx.
Referenced by CutModelManager::changeOpacity().
00125 { 00126 checkInvariant(); 00127 _Actor->GetProperty()->SetOpacity((double)opacity/100.0); 00128 }
void CutModelData::ChangeShape | ( | int | selection | ) | throw ( CutModelException) |
Definition at line 139 of file CutModelData.cxx.
Referenced by CutModelManager::ChangeShape(), and initializeData().
00139 { 00140 checkInvariant(); 00141 00142 if(selection == 0){ 00143 _Mapper->SetInput(_spherefigure->getPolyData()); 00144 }else if(selection == 1){ 00145 _Mapper->SetInput(_cylinderfigure->getPolyData()); 00146 }else if(selection == 2){ 00147 _Mapper->SetInput(_cubefigure->getPolyData()); 00148 }else{ 00149 throw CutModelException("Shape type not found"); 00150 } 00151 00152 _currentshape=selection; 00153 }
void CutModelData::checkInvariant | ( | ) | throw ( CutModelException) [private] |
Definition at line 155 of file CutModelData.cxx.
References _Actor, _boxWidgetVolume, _cubefigure, _cylinderfigure, _Mapper, and _spherefigure.
Referenced by getActor(), getCurentCuttingModel(), initializeData(), udapteActorDirection(), and ~CutModelData().
00155 { 00156 if(_boxWidgetVolume==NULL){ 00157 throw CutModelException("Box Widget not created"); 00158 } 00159 if(_Mapper==NULL){ 00160 throw CutModelException("Mapper not created"); 00161 } 00162 if(_Actor==NULL){ 00163 throw CutModelException("Actor not created"); 00164 } 00165 if(_cubefigure==NULL){ 00166 throw CutModelException("Cube not created"); 00167 } 00168 if(_cylinderfigure==NULL){ 00169 throw CutModelException("Cylinder not created"); 00170 } 00171 if(_spherefigure==NULL){ 00172 throw CutModelException("Sphere not created"); 00173 } 00174 00175 }
void CutModelData::createActor | ( | ) | [private] |
Definition at line 105 of file CutModelData.cxx.
References _Actor, and _Mapper.
Referenced by initializeData().
00105 { 00106 00107 _Mapper = vtkPolyDataMapper::New(); 00108 _Actor = vtkActor::New(); 00109 _Actor->SetMapper(_Mapper); 00110 _Actor->GetProperty()->SetColor(1, 0, 0); 00111 _Actor->GetProperty()->SetOpacity(0.5); 00112 00113 }
void CutModelData::createBoxWidget | ( | vtkRenderWindowInteractor * | interactor, | |
vtkCommand * | observer | |||
) | [private] |
Definition at line 59 of file CutModelData.cxx.
References _boxWidgetVolume.
Referenced by initializeData().
00059 { 00060 00061 _boxWidgetVolume = vtkBoxWidget::New(); 00062 _boxWidgetVolume->SetInteractor( interactor ); 00063 //_boxWidgetVolume->SetPlaceFactor(1); 00064 //_boxWidgetVolume->SetInput( img ); 00065 //_boxWidgetVolume->PlaceWidget(); 00066 00067 _boxWidgetVolume->AddObserver( vtkCommand::InteractionEvent , observer ); 00068 _boxWidgetVolume->AddObserver( vtkCommand::StartInteractionEvent , observer ); 00069 _boxWidgetVolume->AddObserver( vtkCommand::RightButtonReleaseEvent , observer ); 00070 00071 _boxWidgetVolume->HandlesOn (); 00072 _boxWidgetVolume->On(); 00073 //_boxWidgetVolume->GetHandleProperty()->SetOpacity(0.5); 00074 //_boxWidgetVolume->GetOutlineProperty()->SetOpacity(0.5); 00075 }
void CutModelData::createShapes | ( | ) | [private] |
Definition at line 120 of file CutModelData.cxx.
References _cubefigure, _cylinderfigure, and _spherefigure.
Referenced by initializeData().
00120 { 00121 _cubefigure = new CutModelFigureCube(); 00122 _cylinderfigure = new CutModelFigureCylinder(); 00123 _spherefigure = new CutModelFigureSphere(); 00124 }
void CutModelData::ExecuteCut | ( | double * | range, | |
bool | isinside, | |||
vtkImageData * | copyimage | |||
) | throw ( CutModelException) |
Definition at line 199 of file CutModelData.cxx.
References CutModelFigure::IfPointInside(), CutModelFigure::SetInversVtkTransform(), and CutModelFigure::SetVtkTransform().
Referenced by CutModelManager::ExecuteCut(), and CutModelManager::Redo().
00200 { 00201 00202 wxBusyCursor wait; 00203 00204 CutModelFigure* actualCuttingModel = getCurentCuttingModel(); 00205 00206 //_boxWidgetVolume->GetTransform(currentmatrix); 00207 actualCuttingModel->SetVtkTransform(getModelTransform(copyimage)); 00208 //actualCuttingModel->SetVtkTransform(currentmatrix); 00209 actualCuttingModel->SetInversVtkTransform(getModelTransformInvers()); 00210 00211 bool inside; 00212 bool volInt, volExt; 00213 int xx,yy,zz; 00214 unsigned short* pOrg; 00215 int ext[6]; 00216 double spc[3]; 00217 long int contAfter = 0; 00218 long int contBefor = 0; 00219 00220 double minvalue = range[0]; 00221 double value = range[1]; 00222 double maxvalue = range[2]; 00223 00224 00225 copyimage->GetExtent(ext); 00226 00227 for (xx=ext[0];xx<ext[1]; xx++) 00228 { 00229 for (yy=ext[2];yy<ext[3]; yy++) 00230 { 00231 for (zz=ext[4];zz<ext[5];zz++) 00232 { 00233 inside=actualCuttingModel->IfPointInside(xx,yy,zz); 00234 if ( ((inside==true)&&(isinside==true)) || ((!inside==true)&&(!isinside)) ) 00235 { 00236 pOrg=(unsigned short*)copyimage->GetScalarPointer (xx,yy,zz); 00237 00238 //std::cout<<"xx,yy,zz "<<xx<<","<<yy<<","<<zz<<" "<<*pOrg<<std::endl; 00239 if ((unsigned short)minvalue <=(*pOrg)&&(*pOrg)<=(unsigned short)maxvalue) 00240 { 00241 00242 *pOrg=(unsigned short)value; 00243 00244 } 00245 } // if inside 00246 } // for zz 00247 } // for yy 00248 } // for xx 00249 00250 }
void CutModelData::ExecuteUnCut | ( | bool | isinside, | |
vtkImageData * | image, | |||
vtkImageData * | copyimage | |||
) | throw ( CutModelException) |
Definition at line 252 of file CutModelData.cxx.
References CutModelFigure::IfPointInside(), CutModelFigure::SetInversVtkTransform(), and CutModelFigure::SetVtkTransform().
Referenced by CutModelManager::Undo().
00253 { 00254 00255 wxBusyCursor wait; 00256 00257 CutModelFigure* actualCuttingModel = getCurentCuttingModel(); 00258 00259 actualCuttingModel->SetVtkTransform(getModelTransform(copyimage)); 00260 00261 actualCuttingModel->SetInversVtkTransform(getModelTransformInvers()); 00262 00263 bool inside; 00264 bool volInt, volExt; 00265 int xx,yy,zz; 00266 unsigned short* pOrg; 00267 int ext[6]; 00268 double spc[3]; 00269 long int contAfter = 0; 00270 long int contBefor = 0; 00271 00272 double value; 00273 00274 00275 00276 copyimage->GetExtent(ext); 00277 00278 for (xx=ext[0];xx<ext[1]; xx++) 00279 { 00280 for (yy=ext[2];yy<ext[3]; yy++) 00281 { 00282 for (zz=ext[4];zz<ext[5];zz++) 00283 { 00284 inside=actualCuttingModel->IfPointInside(xx,yy,zz); 00285 if ( ((inside==true)&&(isinside==true)) || ((!inside==true)&&(!isinside)) ) 00286 { 00287 value = *((unsigned short*)image->GetScalarPointer (xx,yy,zz)); 00288 pOrg=(unsigned short*)copyimage->GetScalarPointer (xx,yy,zz); 00289 //std::cout<<"CutModelData::ExecuteUnCut() "<<value<<" "<<*pOrg<<std::endl; 00290 *pOrg=(unsigned short)value; 00291 } // if inside 00292 } // for zz 00293 } // for yy 00294 } // for xx 00295 00296 }
vtkActor * CutModelData::getActor | ( | ) | throw ( CutModelException) |
Definition at line 177 of file CutModelData.cxx.
References _Actor, and checkInvariant().
Referenced by CutModelManager::onAddCutModel(), CutModelManager::RefreshActor(), and CutModelManager::RemoveActor().
00177 { 00178 checkInvariant(); 00179 return _Actor; 00180 }
CutModelFigure * CutModelData::getCurentCuttingModel | ( | ) | [private] |
Definition at line 186 of file CutModelData.cxx.
References _cubefigure, _currentshape, _cylinderfigure, _spherefigure, and checkInvariant().
00186 { 00187 checkInvariant(); 00188 00189 if(_currentshape == 0){ 00190 return _spherefigure; 00191 }else if(_currentshape == 1){ 00192 return _cylinderfigure; 00193 }else if(_currentshape == 2){ 00194 return _cubefigure; 00195 }else{ 00196 throw CutModelException("Shape type not found"); 00197 } 00198 }
vtkTransform* CutModelData::getCurrentMatrix | ( | ) | [inline] |
Definition at line 75 of file CutModelData.h.
References currentmatrix.
00075 { 00076 return currentmatrix; 00077 }
int CutModelData::getCurrentShape | ( | ) | [inline] |
Definition at line 79 of file CutModelData.h.
References _currentshape.
00079 { 00080 return _currentshape; 00081 }
int CutModelData::getId | ( | ) | [inline] |
Definition at line 51 of file CutModelData.h.
References _id.
Referenced by CutModelManager::getCutModelData().
00051 { 00052 return _id; 00053 }
vtkTransform * CutModelData::getModelTransform | ( | vtkImageData * | copyimage | ) | [private] |
Definition at line 298 of file CutModelData.cxx.
References currentmatrix, and modeltransform.
00298 { 00299 00300 double *spc = copyimage->GetSpacing(); 00301 modeltransform->Identity(); 00302 00303 vtkMatrix4x4* matrix = currentmatrix->GetMatrix(); 00304 vtkMatrix4x4* matrixmodel = modeltransform->GetMatrix(); 00305 matrixmodel->SetElement(0,0,matrix->GetElement(0,0)/spc[0]); 00306 matrixmodel->SetElement(1,0,matrix->GetElement(1,0)/spc[0]); 00307 matrixmodel->SetElement(2,0,matrix->GetElement(2,0)/spc[0]); 00308 matrixmodel->SetElement(0,1,matrix->GetElement(0,1)/spc[1]); 00309 matrixmodel->SetElement(1,1,matrix->GetElement(1,1)/spc[1]); 00310 matrixmodel->SetElement(2,1,matrix->GetElement(2,1)/spc[1]); 00311 matrixmodel->SetElement(0,2,matrix->GetElement(0,2)/spc[2]); 00312 matrixmodel->SetElement(1,2,matrix->GetElement(1,2)/spc[2]); 00313 matrixmodel->SetElement(2,2,matrix->GetElement(2,2)/spc[2]); 00314 matrixmodel->SetElement(0,3,matrix->GetElement(0,3)/spc[0]); 00315 matrixmodel->SetElement(1,3,matrix->GetElement(1,3)/spc[1]); 00316 matrixmodel->SetElement(2,3,matrix->GetElement(2,3)/spc[2]); 00317 00318 /* 00319 00320 double* pos = currentmatrix->GetPosition(); 00321 modeltransform->Translate(pos[0]/spc[0],pos[1]/spc[1],pos[2]/spc[2]); 00322 00323 double* scal = currentmatrix->GetScale(); 00324 modeltransform->Scale(scal[0]/spc[0],scal[1]/spc[1],scal[2]/spc[2]); 00325 00326 //double* orient = currentmatrix->GetOrientation(); 00327 //modeltransform->RotateZ(orient[2]); 00328 //modeltransform->RotateY(orient[1]); 00329 //modeltransform->RotateX(orient[0]); 00330 double* orient = currentmatrix->GetOrientationWXYZ(); 00331 modeltransform->RotateWXYZ(orient[0],orient[1],orient[2],orient[3]); 00332 00333 */ 00334 00335 00336 modeltransform->Update(); 00337 00338 return modeltransform; 00339 00340 00341 }
vtkTransform * CutModelData::getModelTransformInvers | ( | ) | [private] |
Definition at line 382 of file CutModelData.cxx.
References inversModel, and modeltransform.
00382 { 00383 inversModel->Identity (); 00384 inversModel->Concatenate ( modeltransform ); 00385 inversModel->Inverse(); 00386 return inversModel; 00387 }
vtkPolyData * CutModelData::getPolyData | ( | ) | throw ( CutModelException) |
Definition at line 389 of file CutModelData.cxx.
References _Mapper.
00389 { 00390 return _Mapper->GetInput(); 00391 }
void CutModelData::initializeData | ( | int | id, | |
vtkRenderWindowInteractor * | interactor, | |||
vtkCommand * | observer, | |||
vtkImageData * | img | |||
) |
Definition at line 30 of file CutModelData.cxx.
References _currentshape, _id, ChangeShape(), checkInvariant(), createActor(), createBoxWidget(), createShapes(), and setTransform().
Referenced by CutModelData().
00030 { 00031 _id = id; 00032 _currentshape=0; 00033 createBoxWidget(interactor, observer); 00034 setTransform(img); 00035 createActor(); 00036 createShapes(); 00037 ChangeShape(0); 00038 checkInvariant(); 00039 }
void CutModelData::RefreshViewBox | ( | ) |
Definition at line 56 of file CutModelData.cxx.
Referenced by CutModelManager::RefreshActor().
void CutModelData::setCurrentShape | ( | int | currentshape | ) | [inline] |
Definition at line 83 of file CutModelData.h.
References _currentshape.
Referenced by CutModelManager::Redo(), and CutModelManager::Undo().
00083 { 00084 _currentshape = currentshape; 00085 }
void CutModelData::setTransform | ( | vtkImageData * | img | ) | throw ( CutModelException) [private] |
Definition at line 76 of file CutModelData.cxx.
00076 { 00077 00078 currentmatrix = vtkTransform::New(); 00079 modeltransform = vtkTransform::New(); 00080 inversModel = vtkTransform::New(); 00081 00082 vtkMatrix4x4* matrix = vtkMatrix4x4::New(); 00083 matrix->Identity(); 00084 int *ext = img->GetExtent(); 00085 double *spc = img->GetSpacing(); 00086 00087 00088 matrix->SetElement(0,0,(ext[1]-ext[0])/4*spc[0]); 00089 matrix->SetElement(1,1,(ext[3]-ext[2])/4*spc[1]); 00090 matrix->SetElement(2,2,(ext[5]-ext[4])/4*spc[2]); 00091 00092 double orgx = (ext[1]-ext[0])/2*spc[0]; 00093 double orgy = (ext[3]-ext[2])/2*spc[1]; 00094 double orgz = (ext[5]-ext[4])/2*spc[2]; 00095 00096 matrix->SetElement(0,3,orgx); 00097 matrix->SetElement(1,3,orgy); 00098 matrix->SetElement(2,3,orgz); 00099 00100 00101 currentmatrix->SetMatrix(matrix); 00102 _boxWidgetVolume->SetTransform(currentmatrix); 00103 00104 }
void CutModelData::setTransform | ( | vtkTransform * | transform, | |
vtkImageData * | img | |||
) | throw ( CutModelException) |
Definition at line 342 of file CutModelData.cxx.
Referenced by initializeData(), CutModelManager::Redo(), and CutModelManager::Undo().
00342 { 00343 00344 00345 double *spc = img->GetSpacing(); 00346 00347 currentmatrix->Identity(); 00348 00349 /*double* orient = transform->GetOrientationWXYZ(); 00350 currentmatrix->RotateWXYZ(orient[0],orient[1],orient[2],orient[3]); 00351 00352 double* pos = transform->GetPosition(); 00353 currentmatrix->Translate(pos[0]/spc[0],pos[1]/spc[1],pos[2]/spc[2]); 00354 00355 double* scal = transform->GetScale(); 00356 currentmatrix->Scale(scal[0]/spc[0],scal[1]/spc[1],scal[2]/spc[2]); 00357 00358 currentmatrix->Update(); */ 00359 00360 _boxWidgetVolume->SetTransform(transform); 00361 00362 /*vtkMatrix4x4* matrix = transform->GetMatrix(); 00363 vtkMatrix4x4* matrixcurrent = currentmatrix->GetMatrix(); 00364 matrixcurrent->SetElement(0,0,matrix->GetElement(0,0)/spc[0]); 00365 matrixcurrent->SetElement(1,0,matrix->GetElement(1,0)/spc[0]); 00366 matrixcurrent->SetElement(2,0,matrix->GetElement(2,0)/spc[0]); 00367 matrixcurrent->SetElement(0,1,matrix->GetElement(0,1)/spc[1]); 00368 matrixcurrent->SetElement(1,1,matrix->GetElement(1,1)/spc[1]); 00369 matrixcurrent->SetElement(2,1,matrix->GetElement(2,1)/spc[1]); 00370 matrixcurrent->SetElement(0,2,matrix->GetElement(0,2)/spc[2]); 00371 matrixcurrent->SetElement(1,2,matrix->GetElement(1,2)/spc[2]); 00372 matrixcurrent->SetElement(2,2,matrix->GetElement(2,2)/spc[2]); 00373 matrixcurrent->SetElement(0,3,matrix->GetElement(0,3)/spc[0]); 00374 matrixcurrent->SetElement(1,3,matrix->GetElement(1,3)/spc[1]); 00375 matrixcurrent->SetElement(2,3,matrix->GetElement(2,3)/spc[2]); */ 00376 00377 00378 udapteActorDirection(); 00379 getModelTransform(img); 00380 00381 }
void CutModelData::ShowViewBox | ( | bool | check | ) | throw ( CutModelException) |
Definition at line 130 of file CutModelData.cxx.
Referenced by CutModelManager::ShowViewBox().
00130 { 00131 checkInvariant(); 00132 if(check){ 00133 _boxWidgetVolume->On(); 00134 }else{ 00135 _boxWidgetVolume->Off(); 00136 } 00137 }
void CutModelData::udapteActorDirection | ( | ) | throw ( CutModelException) |
Definition at line 114 of file CutModelData.cxx.
References _Actor, _boxWidgetVolume, checkInvariant(), and currentmatrix.
Referenced by CutModelManager::updateActorDirection().
00114 { 00115 checkInvariant(); 00116 00117 _boxWidgetVolume->GetTransform(currentmatrix); 00118 _Actor->SetUserMatrix(currentmatrix->GetMatrix());//SetUserTransform(currentmatrix ); 00119 }
vtkActor* CutModelData::_Actor [private] |
Definition at line 99 of file CutModelData.h.
Referenced by checkInvariant(), createActor(), getActor(), udapteActorDirection(), and ~CutModelData().
vtkBoxWidget* CutModelData::_boxWidgetVolume [private] |
Definition at line 97 of file CutModelData.h.
Referenced by checkInvariant(), createBoxWidget(), udapteActorDirection(), and ~CutModelData().
CutModelFigureCube* CutModelData::_cubefigure [private] |
Definition at line 104 of file CutModelData.h.
Referenced by checkInvariant(), createShapes(), getCurentCuttingModel(), and ~CutModelData().
int CutModelData::_currentshape [private] |
Definition at line 102 of file CutModelData.h.
Referenced by getCurentCuttingModel(), getCurrentShape(), initializeData(), and setCurrentShape().
Definition at line 105 of file CutModelData.h.
Referenced by checkInvariant(), createShapes(), getCurentCuttingModel(), and ~CutModelData().
int CutModelData::_id [private] |
Definition at line 100 of file CutModelData.h.
Referenced by getId(), initializeData(), and ~CutModelData().
vtkPolyDataMapper* CutModelData::_Mapper [private] |
Definition at line 98 of file CutModelData.h.
Referenced by checkInvariant(), createActor(), getPolyData(), and ~CutModelData().
CutModelFigureSphere* CutModelData::_spherefigure [private] |
Definition at line 106 of file CutModelData.h.
Referenced by checkInvariant(), createShapes(), getCurentCuttingModel(), and ~CutModelData().
vtkTransform* CutModelData::currentmatrix [private] |
Definition at line 107 of file CutModelData.h.
Referenced by getCurrentMatrix(), getModelTransform(), udapteActorDirection(), and ~CutModelData().
vtkTransform* CutModelData::inversModel [private] |
Definition at line 109 of file CutModelData.h.
Referenced by getModelTransformInvers(), and ~CutModelData().
vtkTransform* CutModelData::modeltransform [private] |
Definition at line 108 of file CutModelData.h.
Referenced by getModelTransform(), getModelTransformInvers(), and ~CutModelData().