vtkKWMimxQualityMenuGroup.h

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003 Program:   MIMX Meshing Toolkit
00004 Module:    $RCSfile: vtkKWMimxQualityMenuGroup.h,v $
00005 Language:  C++
00006 Date:      $Date: 2008/10/26 18:51:24 $
00007 Version:   $Revision: 1.5.4.2 $
00008 
00009  Musculoskeletal Imaging, Modelling and Experimentation (MIMX)
00010  Center for Computer Aided Design
00011  The University of Iowa
00012  Iowa City, IA 52242
00013  http://www.ccad.uiowa.edu/mimx/
00014  
00015 Copyright (c) The University of Iowa. All rights reserved.
00016 See MIMXCopyright.txt or http://www.ccad.uiowa.edu/mimx/Copyright.htm for details.
00017 
00018 This software is distributed WITHOUT ANY WARRANTY; without even 
00019 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
00020 PURPOSE.  See the above copyright notices for more information.
00021 
00022 =========================================================================*/
00023 // .NAME vtkKWMimxQualityMenuGroup - GUI representing the Quality operations.
00024 // .SECTION Description
00025 // The class contains GUI to mesh Quality related operations. The options
00026 // available are 1) Evaluate mesh quality and display (Quality metrics are
00027 // volume, jacobian, skew and angle). 2) Improve mesh quality using laplacian
00028 // smoothing and 3) save the mesh in either VTK format or export in Abaqus
00029 // format.
00030 
00031 #ifndef __vtkKWMimxQualityMenuGroup_h
00032 #define __vtkKWMimxQualityMenuGroup_h
00033 
00034 #include "vtkKWMimxMainMenuGroup.h"
00035 #include "vtkBuildingBlockWin32Header.h"
00036 
00037 
00038 class vtkKWMimxEditFEMeshLaplacianSmoothGroup;
00039 class vtkKWMimxEvaluateMeshQualityGroup;
00040 class vtkKWMimxExportAbaqusFEMeshGroup;
00041 class vtkKWMimxSaveVTKFEMeshGroup;
00042 
00043 class VTK_BUILDINGBLOCK_EXPORT vtkKWMimxQualityMenuGroup : public vtkKWMimxMainMenuGroup
00044 {
00045 public:
00046   static vtkKWMimxQualityMenuGroup* New();
00047   vtkTypeRevisionMacro(vtkKWMimxQualityMenuGroup,vtkKWMimxMainMenuGroup);
00048   void PrintSelf(ostream& os, vtkIndent indent);
00049 
00050   virtual void Update();
00051   virtual void UpdateEnableState();
00052   
00053   // Description:
00054   // Choose the quality metric for evaluation
00055   void EvaluateMeshVolumeCallback();
00056   void EvaluateMeshEdgeCollapseCallback();
00057   void EvaluateMeshJacobianCallback();
00058   void EvaluateMeshSkewCallback();
00059   void EvaluateMeshAngleCallback();
00060 
00061   // Description:
00062   // Initialize the mesh for quality calculation
00063   void EvaluateMeshCallback();
00064 
00065   // Description:
00066   // Launch the GUI for mesh quality metrics statistics
00067   void CreateMeshQualityGroup();
00068 
00069   // Description:
00070   // Laplacian smoothing options
00071   void SmoothLaplacianFEMeshCallback();
00072 
00073   // Description:
00074   // Save the mesh in VTK file format
00075   void SaveVTKFEMeshCallback();
00076 
00077   // Description:
00078   // Export the file in abaqus file format
00079   void ExportAbaqusFEMeshCallback();
00080   
00081   // Description:
00082   // Access to the lists of the objects used
00083   vtkSetObjectMacro(FEMeshList, vtkLinkedListWrapper);
00084   vtkSetObjectMacro(SurfaceList, vtkLinkedListWrapper);
00085   vtkSetObjectMacro(BBoxList, vtkLinkedListWrapper);
00086   
00087   void UpdateObjectLists();
00088   
00089 protected:
00090         vtkKWMimxQualityMenuGroup();
00091         ~vtkKWMimxQualityMenuGroup();
00092         vtkKWMimxSaveVTKFEMeshGroup *SaveVTKFEMeshGroup;
00093   vtkKWMimxExportAbaqusFEMeshGroup *ExportAbaqusFEMeshGroup;
00094         virtual void CreateWidget();
00095         
00096 private:
00097   vtkKWMimxQualityMenuGroup(const vtkKWMimxQualityMenuGroup&); // Not implemented
00098   void operator=(const vtkKWMimxQualityMenuGroup&); // Not implemented
00099 
00100   vtkKWMimxEvaluateMeshQualityGroup *EvaluateMeshInterface;
00101   vtkKWMimxEditFEMeshLaplacianSmoothGroup *FEMeshLaplacianSmoothGroup;
00102 
00103 };
00104 
00105 #endif

Generated on 6 Apr 2011 for Slicer3 by  doxygen 1.6.1