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
1.6.1