#pragma once #include "otsdataconst.h" #include "OTSFieldData.h" namespace OTSGBCalculate { using namespace OTSDATA; class __declspec(dllexport) CGBFieldData; class __declspec(dllexport) CGBLevel { public: CGBLevel(); // constructor CGBLevel(CGBFieldData * GBField, GB_CLASSIFY_TYPE a_nLevel); CGBLevel(const CGBLevel&); // copy constructor CGBLevel(CGBLevel*); // copy constructor CGBLevel& operator=(const CGBLevel&); // =operator BOOL operator==(const CGBLevel&); // =operator virtual ~CGBLevel(); // detractor //获得细系颗粒的级别(非DS下同) GB_GRADE_TYPE GetThinGrade(); //获得粗系颗粒的级别 GB_GRADE_TYPE GetWideGrade(); //获得超尺寸颗粒的级别 GB_GRADE_TYPE GetSuperGrade(); double GetMaxFeretDiameter(); double GetThinLength(); double GetWideLength(); double GetSuperLength(); protected: // cleanup void Cleanup(); // initialization void Init(); // duplication void Duplicate(const CGBLevel& a_oSource); private: //视场各类的分级数:A / B / C / D / DS GB_CLASSIFY_TYPE m_nLevel; CGBFieldData* m_GBField; double m_FeretDiameterMax; }; typedef std::shared_ptr __declspec(dllexport) CGBLevelPtr; GB_GRADE_TYPE __declspec(dllexport) GetAGrade(double dLengthAll); GB_GRADE_TYPE __declspec(dllexport) GetBGrade(double dLengthAll); GB_GRADE_TYPE __declspec(dllexport) GetCGrade(double dLengthAll); GB_GRADE_TYPE __declspec(dllexport) GetDGrade(int nSize); CString __declspec(dllexport) GetDSGrade(double dFeretDiameterMax); }