#include "stdafx.h" #include #include "OTSParticleClr.h" #include "PosXrayClr.h" #include "OTSClassifyEngineClr.h" namespace OTSCLRINTERFACE { using namespace msclr::interop; using namespace OTSCLRINTERFACE; COTSClassifyEngineClr::COTSClassifyEngineClr(EngineType engineType, System::String^ libFileName) { std::string file = marshal_as (libFileName); switch (engineType) { case EngineType::ExpressionClassifyEng: engine = GetParticleEngine(file).get(); break; case EngineType::InclutionEng: engine = GetInclutionEngine().get(); break; case EngineType::SpectrumCompare: engine = GetCurveCompareEngine(file).get(); break; default: break; } if (engine == NULL) { AfxMessageBox(_T("The ClassifyEng load failed!")); exit(1); } } bool COTSClassifyEngineClr::ReloadEngineDB() { return engine->Init(); } bool COTSClassifyEngineClr::ClassifyByExpression(COTSParticleClr^ particle) { auto part = particle->GetOTSParticlePtr(); auto xraydata = part->GetXrayInfo(); if (xraydata != nullptr) { return engine->ClassifyExpression(part, xraydata); } else { return false; } } bool COTSClassifyEngineClr::ClassifyBySpectrum(COTSParticleClr^ particle) { auto part = particle->GetOTSParticlePtr(); auto xraydata = part->GetXrayInfo(); if (xraydata != nullptr) { return engine->ClassifyBySpectrum(part, xraydata); } else { return false; } } bool COTSClassifyEngineClr::ClassifyByExpressionTemporarySpectrum(COTSParticleClr^ particle) { auto part = particle->GetOTSParticlePtr(); auto xraydata = part->GetXrayInfo(); if (xraydata != nullptr) { return engine->ClassifyByExpressionTemporarySpectrum(part, xraydata); } else { return false; } } bool COTSClassifyEngineClr::ClassifyIncA(COTSParticleClr^ particle, int SteelTech) { auto part = particle->GetOTSParticlePtr(); auto xraydata = part->GetXrayInfo(); return engine->ClassifyIncA(part, SteelTech, xraydata); } bool COTSClassifyEngineClr::IfNeedMaxEDS(COTSParticleClr^ particle,double% maxedstime) { auto part = particle->GetOTSParticlePtr(); auto xraydata = part->GetXrayInfo(); double MaxEDSTime=0; bool rst= engine->IfNeedMaxEDS(part, xraydata, MaxEDSTime); if (rst) { maxedstime = MaxEDSTime; } return rst; } bool COTSClassifyEngineClr::ZeroElementProcess(COTSParticleClr^ particle) { return engine->ZeroElementProcess(particle->GetOTSParticlePtr()); } }