| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 | #pragma once#include "InclutionSTDData.h"#include "OTSParticle.h"using namespace OTSDATA;namespace OTSClassifyEngine{	typedef enum class __declspec(dllexport) INC_CLASSIFY_TYPE	{		INVALID = -1,		MIN = 0,		SIMPLE_OXIDE = 0,		COMPLEX_OXIDE = 1,		OXIDE = 2,		SUL = 3,		NITR = 4,		USER = 5,		CARBON = 6,		MAX = 7	} INC_CLASSIFY_TYPE;	class __declspec(dllexport) COTSClassifyEng	{	public:			COTSClassifyEng(CInclutionSTDDataPtr a_pPartSTDData);					// constructor		virtual ~COTSClassifyEng();			// detractor		 BOOL ClassifyXray(STEEL_TECHNOLOGY steelTech, CElementChemistriesList & a_listElementChemistries, int & a_nIncId, int& a_GrpId);				// check if the x-ray is an inc x-ray		 BOOL FilterInvalidIncXRay( CElementChemistriesList a_listElementChemistries,															 CElementChemistriesList& a_listElChemsIncNoFe,															 double& a_dMolarSumNoFe,			OTS_PARTICLE_TYPE& a_nIncId,NOT_INCLUTION_ID& notIncId);		// system STD classification		 BOOL SystemClassify(STEEL_TECHNOLOGY steelTech,									CElementChemistriesList& a_listElChemsIncNoFe,									double a_dMolarSumNoFe,									int& a_nIncId);		 BOOL GroupClassify(CElementChemistriesList& a_listElChemsIncNoFe,int incId, IDENTIFIED_INC_GRP_ID& a_GrpId);		 BOOL GroupClassify1(CElementChemistriesList& a_listElChemsIncNoFe, int incId, IDENTIFIED_INC_GRP_ID& a_GrpId);		 BOOL GetGroupNameAndColorById(int grpId, std::string& grpName, std::string& grpColor);		// sulfides classification 		 BOOL SulClassify(								 STEEL_TECHNOLOGY steelTech, 								 CElementChemistriesList& a_listElChemsIncNoFe,								 double a_dMolarSumNoFe,								 int& a_nIncId);		// oxides classification		 BOOL OxideClassify(STEEL_TECHNOLOGY steelTech,								   CElementChemistriesList& a_listElChemsIncNoFe,								   double a_dSumNoFe,								   int& a_nIncId);		// nitrides classification		 BOOL NitrideClassify(STEEL_TECHNOLOGY steelTech,									 CElementChemistriesList& a_listElChemsIncNoFe,									 double a_dMolarSumNoFe,									 int& a_nIncId);		 //  nominate element chemistries list 		 BOOL NominateElChemsList(CElementChemistriesList& a_listElChemsInc,			 CElementChemistriesList& a_listNomiElChemsInc);			protected:				// check if this is a key element		 BOOL IsKeyElement(CElementChemistryPtr a_pElChem);		// check if this is a sub element		 BOOL IsSubElement(CElementChemistryPtr a_pElChem);		// get named element chemistry		 CElementChemistryPtr GetNamedElementChemistry(CElementChemistriesList& a_listChemistriesElements, const CString a_strElementName);				// get STD item by name		 CSTDItemPtr GetSTDItemByName(CSTDItemsList& a_listSTDItems, CString a_strName);		// get STD item name by id		 CString GetSTDItemNameById(CSTDItemsList& a_listSTDItems, int a_nItemId);		// elements mapping		 BOOL ElementsMapping(double a_dMolarSumNoFe, double a_dMappingRadio, CElementChemistryPtr a_pFirstElChem, CElementChemistryPtr a_pSecondElChem, BOOL& a_bMapped);		// check if is a simple		 BOOL IsASimpleOxide(CElementChemistriesList& a_listElChems, double a_dMolarSum, CString& a_strSimOxName);		// check if is a REOxide		 BOOL IsAREOxide(CElementChemistriesList& a_listElChems, double a_dMolarSum);		// check if is a REAlOxide		 BOOL IsAnREAlOxide(CElementChemistriesList& a_listElChems, double a_dMolarSum);		// check if is a Spinel		 BOOL IsASpinel(CElementChemistriesList& a_listElChems, double a_dMolarSum);		// check if is a Silicate		 BOOL IsASilicate(CElementChemistriesList& a_listElChems, double a_dMolarSum);		// check if is a Aluminate		 BOOL IsAnCa_Aluminate(STEEL_TECHNOLOGY steelTech,CElementChemistriesList& a_listElChems, double a_dMolarSum, CString& strName);		// check if the element chemistries list matching the STD		 BOOL MatchingSTD(CElementChemistriesList& a_listElChems, CSTDItemPtr a_pSTDItem, double a_dMolarSum);		// calculate 100% value		 double Cal100NorValue(double a_dValue, double a_dSumValue);	private:		CInclutionSTDDataPtr pPartSTDData;		CSTDItemsList listSulfideSTD;		CSTDItemsList listOxideSTD;		CSTDItemsList listNitrideSTD;		CSTDItemsList listCarbonSTD;					// get classify STD items		BOOL GetClassifySTDItem(CInclutionSTDDataPtr a_pPartSTDDataPtr, INC_CLASSIFY_TYPE a_nClassifyType, CSTDItemsList& a_listSTDItems);		BOOL GetClassifyTypeOfSTDItem(int a_nIncId, INC_CLASSIFY_TYPE& a_nClassifyType);		BOOL GetSulfildeOxideComplexItemId(STEEL_TECHNOLOGY steelTech, CElementChemistriesList& a_listElChemsIncNoFe,			double a_dMolarSumNoFe, CString strSulfideBaseName,			int& nIncId);		BOOL GetSulfildeNitrideComplexItemId(STEEL_TECHNOLOGY steelTech, CElementChemistriesList& a_listElChemsIncNoFe,			double a_dMolarSumNoFe, CString strSulfideBaseName,			int& nIncId);		void FilterOnSteelTech(STEEL_TECHNOLOGY steelTech,			CElementChemistriesList& a_listElChemsInc);		BOOL ElementMatching(double a_dMolarSumNoFe, CElementChemistriesList a_listElChemsInc, CElementChemistryPtr KeyEleChemistry, CString subEleName, double mappingRatio, double& dKeyEleResidualMolar100);		BOOL ElementMatchingOnSteelTech(double a_dMolarSumNoFe, STEEL_TECHNOLOGY steelTech, CElementChemistriesList a_listElChemsIncNoFe, CElementChemistryPtr pSulElChem, CString& strProMappingSulName);	};}   
 |