OTSClassifyEngineClr.cpp 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. #include "stdafx.h"
  2. #include <msclr\marshal_cppstd.h>
  3. #include "OTSParticleClr.h"
  4. #include "PosXrayClr.h"
  5. #include "OTSClassifyEngineClr.h"
  6. namespace OTSCLRINTERFACE {
  7. using namespace msclr::interop;
  8. using namespace OTSCLRINTERFACE;
  9. COTSClassifyEngineClr::COTSClassifyEngineClr(EngineType engineType, System::String^ libFileName)
  10. {
  11. std::string file = marshal_as <std::string>(libFileName);
  12. switch (engineType)
  13. {
  14. case EngineType::ExpressionClassifyEng:
  15. engine = GetParticleEngine(file).get();
  16. break;
  17. case EngineType::InclutionEng:
  18. engine = GetInclutionEngine().get();
  19. break;
  20. case EngineType::SpectrumCompare:
  21. engine = GetCurveCompareEngine(file).get();
  22. break;
  23. default:
  24. break;
  25. }
  26. if (engine == NULL)
  27. {
  28. AfxMessageBox(_T("The ClassifyEng load failed!"));
  29. exit(1);
  30. }
  31. }
  32. bool COTSClassifyEngineClr::ReloadEngineDB()
  33. {
  34. return engine->Init();
  35. }
  36. bool COTSClassifyEngineClr::ClassifyByExpression(COTSParticleClr^ particle)
  37. {
  38. auto part = particle->GetOTSParticlePtr();
  39. auto xraydata = part->GetXrayInfo();
  40. if (xraydata != nullptr)
  41. {
  42. return engine->ClassifyExpression(part, xraydata);
  43. }
  44. else
  45. {
  46. return false;
  47. }
  48. }
  49. bool COTSClassifyEngineClr::ClassifyBySpectrum(COTSParticleClr^ particle)
  50. {
  51. auto part = particle->GetOTSParticlePtr();
  52. auto xraydata = part->GetXrayInfo();
  53. if (xraydata != nullptr)
  54. {
  55. return engine->ClassifyBySpectrum(part, xraydata);
  56. }
  57. else
  58. {
  59. return false;
  60. }
  61. }
  62. bool COTSClassifyEngineClr::ClassifyByExpressionTemporarySpectrum(COTSParticleClr^ particle)
  63. {
  64. auto part = particle->GetOTSParticlePtr();
  65. auto xraydata = part->GetXrayInfo();
  66. if (xraydata != nullptr)
  67. {
  68. return engine->ClassifyByExpressionTemporarySpectrum(part, xraydata);
  69. }
  70. else
  71. {
  72. return false;
  73. }
  74. }
  75. bool COTSClassifyEngineClr::ClassifyIncA(COTSParticleClr^ particle, int SteelTech)
  76. {
  77. auto part = particle->GetOTSParticlePtr();
  78. auto xraydata = part->GetXrayInfo();
  79. return engine->ClassifyIncA(part, SteelTech, xraydata);
  80. }
  81. bool COTSClassifyEngineClr::IfNeedMaxEDS(COTSParticleClr^ particle,double% maxedstime)
  82. {
  83. auto part = particle->GetOTSParticlePtr();
  84. auto xraydata = part->GetXrayInfo();
  85. double MaxEDSTime=0;
  86. bool rst= engine->IfNeedMaxEDS(part, xraydata, MaxEDSTime);
  87. if (rst)
  88. {
  89. maxedstime = MaxEDSTime;
  90. }
  91. return rst;
  92. }
  93. bool COTSClassifyEngineClr::ZeroElementProcess(COTSParticleClr^ particle)
  94. {
  95. return engine->ZeroElementProcess(particle->GetOTSParticlePtr());
  96. }
  97. }