InclutionClassifyEngine.cpp 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  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. stdfile->Load();
  13. myStd = stdfile-> GenerateSTDLib(IDENTIFY_KIND::ALL);
  14. return true;
  15. }
  16. bool InclutionClassifyEngine::Classify(COTSParticlePtr particle, CPosXrayPtr xray)
  17. {
  18. return false;
  19. }
  20. bool InclutionClassifyEngine::Classify(COTSParticlePtr particle, int SteelTech, CPosXrayPtr xray)
  21. {
  22. if (particle == nullptr || xray == nullptr) return false;
  23. int Id;
  24. int grpId;
  25. auto result = COTSClassifyEng::ClassifyXray(myStd, (OTSDATA::STEEL_TECHNOLOGY)SteelTech, xray->GetElementQuantifyData(), Id, grpId);
  26. if (grpId == (int)OTS_PARTICLE_TYPE::NOT_IDENTIFIED)
  27. {
  28. particle->SetType(OTS_PARTICLE_TYPE::NOT_IDENTIFIED);
  29. particle->TypeName("Not Identified");
  30. particle->TypeColor("#000000");
  31. particle->SetGroupId(grpId);
  32. std::string grpName;
  33. std::string grpColor;
  34. COTSClassifyEng::GetGroupNameAndColorById(grpId, grpName, grpColor);
  35. particle->SetGroupName(grpName);
  36. particle->SetGroupColor(grpColor);
  37. }
  38. else if (grpId == (int)OTS_PARTICLE_TYPE::ISNOT_INCLUTION)
  39. {
  40. if (Id == (int)NOT_INCLUTION_ID::SiC)
  41. {
  42. particle->SetType(OTS_PARTICLE_TYPE::IDENTIFIED);
  43. particle->TypeName("SiC");
  44. particle->SetClassifyId((int)NOT_INCLUTION_ID::SiC);
  45. particle->TypeColor("#7B68EE");
  46. }
  47. else if (Id == (int)NOT_INCLUTION_ID::FeO)
  48. {
  49. particle->SetType(OTS_PARTICLE_TYPE::IDENTIFIED);
  50. particle->TypeName("FeO");
  51. particle->SetClassifyId((int)NOT_INCLUTION_ID::FeO);
  52. particle->TypeColor("#FF6347");
  53. }
  54. std::string grpName;
  55. std::string grpColor;
  56. COTSClassifyEng::GetGroupNameAndColorById(grpId, grpName, grpColor);
  57. particle->SetGroupId(grpId);
  58. particle->SetGroupName(grpName);
  59. particle->SetGroupColor(grpColor);
  60. }
  61. else
  62. {
  63. auto stditm = myStd->GetSTDItemById(Id);
  64. if (stditm != nullptr)
  65. {
  66. particle->SetType(OTS_PARTICLE_TYPE::IDENTIFIED);
  67. particle->SetClassifyId(Id);
  68. particle->TypeColor(stditm->GetColor().GetBuffer());
  69. particle->TypeName(stditm->GetName().GetBuffer());
  70. particle->SetGroupId(grpId);
  71. std::string grpName;
  72. std::string grpColor;
  73. COTSClassifyEng::GetGroupNameAndColorById(grpId, grpName, grpColor);
  74. particle->SetGroupName(grpName);
  75. particle->SetGroupColor(grpColor);
  76. }
  77. else
  78. {
  79. particle->SetType(OTS_PARTICLE_TYPE::NOT_IDENTIFIED);
  80. particle->TypeName("Not Identified");
  81. particle->TypeColor("#000000");
  82. particle->SetGroupId(grpId);
  83. std::string grpName;
  84. std::string grpColor;
  85. COTSClassifyEng::GetGroupNameAndColorById(grpId, grpName, grpColor);
  86. particle->SetGroupName(grpName);
  87. particle->SetGroupColor(grpColor);
  88. }
  89. }
  90. return result;
  91. }
  92. bool InclutionClassifyEngine::IfNeedMaxEDS(COTSParticlePtr particle, CPosXrayPtr xray, double& MaxEDSTime)
  93. {
  94. throw std::logic_error("The method or operation is not implemented.");
  95. }
  96. OTSClassifyEngine::CLEEnginePtr CreateInclutionEngine()
  97. {
  98. return CLEEnginePtr(new InclutionClassifyEngine());
  99. }
  100. OTSClassifyEngine::CLEEnginePtr GetInclutionEngine()
  101. {
  102. static CLEEnginePtr engine;
  103. if (engine == NULL)
  104. {
  105. engine = CLEEnginePtr( new InclutionClassifyEngine());
  106. engine->Init();
  107. }
  108. return engine;
  109. }
  110. }