CGBLevel.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #pragma once
  2. #include "otsdataconst.h"
  3. #include "OTSFieldData.h"
  4. namespace OTSGBCalculate
  5. {
  6. using namespace OTSDATA;
  7. class CGBFieldData;
  8. class CGBLevel : public xmls::ISlo
  9. {
  10. public:
  11. CGBLevel();
  12. // constructor
  13. CGBLevel(CGBFieldData * GBField, GB_LEVEL_TYPE a_nLevel);
  14. CGBLevel(const CGBLevel&); // copy constructor
  15. CGBLevel(CGBLevel*); // copy constructor
  16. CGBLevel& operator=(const CGBLevel&); // =operator
  17. BOOL operator==(const CGBLevel&); // =operator
  18. virtual ~CGBLevel(); // detractor
  19. //获得细系颗粒的级别(非DS下同)
  20. GB_GRADE_TYPE GetThinGrade();
  21. //获得粗系颗粒的级别
  22. GB_GRADE_TYPE GetWideGrade();
  23. //获得超尺寸颗粒的级别
  24. GB_GRADE_TYPE GetSuperGrade();
  25. //只有类型为DS时有效
  26. GB_GRADE_TYPE GetMyDSGrade();
  27. double GetMaxFeretDiameter();
  28. // serialization
  29. void Serialize(bool isStoring, tinyxml2::XMLDocument *classDoc, tinyxml2::XMLElement *rootNode);
  30. protected:
  31. // cleanup
  32. void Cleanup();
  33. // initialization
  34. void Init();
  35. // duplication
  36. void Duplicate(const CGBLevel& a_oSource);
  37. private:
  38. //视场各类的分级数:A / B / C / D / DS
  39. GB_LEVEL_TYPE m_nLevel;
  40. CGBFieldData* m_GBField;
  41. double m_FeretDiameterMax;
  42. };
  43. typedef std::shared_ptr<CGBLevel> __declspec(dllexport) CGBLevelPtr;
  44. GB_GRADE_TYPE GetAGrade(double dLengthAll);
  45. GB_GRADE_TYPE GetBGrade(double dLengthAll);
  46. GB_GRADE_TYPE GetCGrade(double dLengthAll);
  47. GB_GRADE_TYPE GetDGrade(int nSize);
  48. GB_GRADE_TYPE GetDSGrade(double dFeretDiameterMax);
  49. //typedef std::vector<CGBLevelPtr> __declspec(dllexport) CGBLevelList;
  50. }