#ifndef MESHCHECKER_H #define MESHCHECKER_H #include #include "meshDataAPI.h" #include #include #include #include #include #include #define BARCOUNT 10; class vtkDataSet; class vtkCell; class vtkCellQuality; class vtkDoubleArray; namespace MeshData { class MeshData; class MeshKernal; enum QualityMeasure { NONE = 0, AREA, ASPECT_BETA, ASPECT_FROBENIUS, ASPECT_GAMMA, ASPECT_RATIO, COLLAPSE_RATIO, CONDITION, DIAGONAL, DIMENSION, DISTORTION, EDGE_RATIO, JACOBIAN, MAX_ANGLE, MAX_ASPECT_FROBENIUS, MAX_EDGE_RATIO, MED_ASPECT_FROBENIUS, MIN_ANGLE, NORMAL, ODDY, RADIUS_RATIO, RELATIVE_SIZE_SQUARED, SCALED_JACOBIAN, SHAPE, SHAPE_AND_SIZE, SHEAR, SHEAR_AND_SIZE, SKEW, STRETCH, TAPER, VOLUME, WARPAGE }; class MESHDATAAPI MeshChecker :public QThread { public: MeshChecker(); ~MeshChecker(); static QString VTKCellTypeToString(VTKCellType type); virtual void run(); void setQualityMeasure(QualityMeasure m); QList getInputCellType(); int getInputCellCount(VTKCellType type); int getInputCellCount(); QList getQualityCellType(); int gettQualityCellCount(VTKCellType type); int gettQualityCellCount(); void getQualityRange(double* r); double getAverageQuality(); QVector getTicks(); QVector getCountList(VTKCellType t); QList getResultList(); private: void checkKernal(MeshKernal* k); void collectInfo(vtkDataSet* outInfo); void countResult(); private: vtkSmartPointer _cellQuality{}; MeshData* _meshData{}; QualityMeasure _measure{ NONE }; vtkSmartPointer _qualityArray{}; QHash _inputCount{}; QHash> _checkedCount{}; QList _resultList{}; QVector _ticks{}; QHash> _cellCount{}; }; } #endif