InclutionClassifyEngine.cpp 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. #pragma once
  2. #include "stdafx.h"
  3. #include "InclutionClassifyEngine.h"
  4. #include "IClassifyEngine.h"
  5. #include "InclutionEngine/STDFileMgr.h"
  6. #include "InclutionEngine/OTSClassifyEng.h"
  7. namespace OTSClassifyEngine
  8. {
  9. bool InclutionClassifyEngine::Init()
  10. {
  11. CSTDFileMgrPtr stdfile = CSTDFileMgrPtr(new CSTDFileMgr());
  12. if (!stdfile->Load())
  13. {
  14. return false;
  15. }
  16. myStd = stdfile-> GenerateSTDLib(IDENTIFY_KIND::ALL);
  17. if (myStd!=nullptr)
  18. {
  19. m_Engine = new COTSClassifyEng(myStd);
  20. return true;
  21. }
  22. else
  23. {
  24. return false;
  25. }
  26. }
  27. bool InclutionClassifyEngine::Classify(COTSParticlePtr particle, CPosXrayPtr xray)
  28. {
  29. return false;
  30. }
  31. bool InclutionClassifyEngine::Classify(COTSParticlePtr particle, int SteelTech, CPosXrayPtr xray)
  32. {
  33. if (particle == nullptr || xray == nullptr) return false;
  34. int Id;
  35. int grpId;
  36. auto result = m_Engine->ClassifyXray((OTSDATA::STEEL_TECHNOLOGY)SteelTech, xray->GetElementQuantifyData(), Id, grpId);
  37. if (grpId == (int)OTS_PARTICLE_TYPE::INVALID)
  38. {
  39. particle->SetType(OTS_PARTICLE_TYPE::INVALID);
  40. particle->TypeName("Invalid");
  41. particle->TypeColor("#000000");
  42. particle->SetClassifyId(Id);
  43. particle->SetGroupId(grpId);
  44. std::string grpName;
  45. std::string grpColor;
  46. m_Engine->GetGroupNameAndColorById(grpId, grpName, grpColor);
  47. particle->SetGroupName(grpName);
  48. particle->SetGroupColor(grpColor);
  49. }
  50. else if (grpId == (int)OTS_PARTICLE_TYPE::NOT_IDENTIFIED)
  51. {
  52. particle->SetType(OTS_PARTICLE_TYPE::NOT_IDENTIFIED);
  53. particle->TypeName("Not Identified");
  54. particle->TypeColor("#000000");
  55. particle->SetClassifyId((int)OTS_PARTICLE_TYPE::NOT_IDENTIFIED);
  56. particle->SetGroupId(grpId);
  57. std::string grpName;
  58. std::string grpColor;
  59. m_Engine->GetGroupNameAndColorById(grpId, grpName, grpColor);
  60. particle->SetGroupName(grpName);
  61. particle->SetGroupColor(grpColor);
  62. }
  63. else if (grpId == (int)OTS_PARTICLE_TYPE::ISNOT_INCLUTION)
  64. {
  65. if (Id == (int)NOT_INCLUTION_ID::SiC)
  66. {
  67. particle->SetType(OTS_PARTICLE_TYPE::IDENTIFIED);
  68. particle->TypeName("SiC");
  69. particle->SetClassifyId((int)NOT_INCLUTION_ID::SiC);
  70. particle->TypeColor("#7B68EE");
  71. }
  72. else if (Id == (int)NOT_INCLUTION_ID::FeO)
  73. {
  74. particle->SetType(OTS_PARTICLE_TYPE::IDENTIFIED);
  75. particle->TypeName("FeO");
  76. particle->SetClassifyId((int)NOT_INCLUTION_ID::FeO);
  77. particle->TypeColor("#FF6347");
  78. }
  79. std::string grpName;
  80. std::string grpColor;
  81. m_Engine->GetGroupNameAndColorById(grpId, grpName, grpColor);
  82. particle->SetGroupId(grpId);
  83. particle->SetGroupName(grpName);
  84. particle->SetGroupColor(grpColor);
  85. }
  86. else
  87. {
  88. auto stditm = myStd->GetSTDItemById(Id);
  89. if (stditm != nullptr)
  90. {
  91. particle->SetType(OTS_PARTICLE_TYPE::IDENTIFIED);
  92. particle->SetClassifyId(Id);
  93. particle->TypeColor(stditm->GetColor().GetBuffer());
  94. particle->TypeName(stditm->GetName().GetBuffer());
  95. particle->SetGroupId(grpId);
  96. std::string grpName;
  97. std::string grpColor;
  98. m_Engine->GetGroupNameAndColorById(grpId, grpName, grpColor);
  99. particle->SetGroupName(grpName);
  100. particle->SetGroupColor(grpColor);
  101. }
  102. else
  103. {
  104. particle->SetType(OTS_PARTICLE_TYPE::NOT_IDENTIFIED);
  105. particle->TypeName("Not Identified");
  106. particle->TypeColor("#000000");
  107. particle->SetGroupId(grpId);
  108. std::string grpName;
  109. std::string grpColor;
  110. m_Engine->GetGroupNameAndColorById(grpId, grpName, grpColor);
  111. particle->SetGroupName(grpName);
  112. particle->SetGroupColor(grpColor);
  113. }
  114. }
  115. return result;
  116. }
  117. bool InclutionClassifyEngine::IfNeedMaxEDS(COTSParticlePtr particle, CPosXrayPtr xray, double& MaxEDSTime)
  118. {
  119. throw std::logic_error("The method or operation is not implemented.");
  120. }
  121. OTSClassifyEngine::CLEEnginePtr CreateInclutionEngine()
  122. {
  123. return CLEEnginePtr(new InclutionClassifyEngine());
  124. }
  125. OTSClassifyEngine::CLEEnginePtr GetInclutionEngine()
  126. {
  127. static CLEEnginePtr engine;
  128. if (engine == NULL)
  129. {
  130. engine = CLEEnginePtr( new InclutionClassifyEngine());
  131. engine->Init();
  132. }
  133. return engine;
  134. }
  135. }