Browse Source

optimize GroupClassify method

gsp 2 years ago
parent
commit
e1419fae3e

+ 101 - 8
OTSCPP/OTSClassifyEngine/InclutionEngine/OTSClassifyEng.cpp

@@ -608,23 +608,24 @@ namespace OTSClassifyEngine
 		}
 		
 	
-		if (dOWeight >= MIN_ELEMENT_SUM && dSWeight< MIN_ELEMENT_SUM )
-		{
-			
-			a_GrpId = IDENTIFIED_INC_GRP_ID::OXIDE;
-			
-		}
-		else if ( dSWeight >= MIN_ELEMENT_SUM && dOWeight < MIN_ELEMENT_SUM)
+	
+		if ( dSWeight >= MIN_ELEMENT_SUM && dOWeight < MIN_ELEMENT_SUM && dNWeight <= MIN_ELEMENT_SUM)
 		{
 			a_GrpId = IDENTIFIED_INC_GRP_ID::SULFIDE;
 		}
-		else if (dOWeight >= MIN_ELEMENT_SUM && dSWeight >= MIN_ELEMENT_SUM )
+		else if (dOWeight >= MIN_ELEMENT_SUM && dSWeight >= MIN_ELEMENT_SUM && dNWeight<=MIN_ELEMENT_SUM)
 		{
 			a_GrpId = IDENTIFIED_INC_GRP_ID::SULFIDE_OXIDE;
 		}
 		else if ( dNWeight >= MIN_ELEMENT_SUM)
 		{
 			a_GrpId = IDENTIFIED_INC_GRP_ID::CARBONNITRIDE_NITRIDE;
+		}else
+		if (dOWeight >= MIN_ELEMENT_SUM && dSWeight < MIN_ELEMENT_SUM)
+		{
+
+			a_GrpId = IDENTIFIED_INC_GRP_ID::OXIDE;
+
 		}
 		else
 		{
@@ -636,6 +637,70 @@ namespace OTSClassifyEngine
 		return TRUE;
 		
 	
+	}
+	BOOL COTSClassifyEng::GroupClassify1(CElementChemistriesList& a_listElChemsIncNoFe, int incId, IDENTIFIED_INC_GRP_ID& a_GrpId)
+	{
+
+		double dOWeight = 0;
+		double dSWeight = 0;
+		double dNWeight = 0;
+		for (auto pElChem : a_listElChemsIncNoFe)
+		{
+
+			if (pElChem->GetName().CompareNoCase(STR_O) == 0)
+			{
+
+				dOWeight = pElChem->GetPercentage();
+
+			}
+			else if (pElChem->GetName().CompareNoCase(STR_SUL) == 0)
+			{
+
+				dSWeight = pElChem->GetPercentage();
+
+			}
+			else if (pElChem->GetName().CompareNoCase(STR_N) == 0)
+			{
+				dNWeight = pElChem->GetPercentage();
+			}
+
+
+
+		}
+
+		auto stdItm = pPartSTDData->GetSTDItemById(incId);
+		INC_CLASSIFY_TYPE claType = INC_CLASSIFY_TYPE::INVALID;
+		this->GetClassifyTypeOfSTDItem(incId, claType);
+
+		if (claType == INC_CLASSIFY_TYPE::COMPLEX_OXIDE || claType == INC_CLASSIFY_TYPE::OXIDE || claType == INC_CLASSIFY_TYPE::SIMPLE_OXIDE)
+		{
+			a_GrpId = IDENTIFIED_INC_GRP_ID::OXIDE;
+			return true;
+		}
+		else if (claType == INC_CLASSIFY_TYPE::SUL)
+		{
+
+			 if (dOWeight >= MIN_ELEMENT_SUM && dSWeight <= 1)
+			{
+				a_GrpId = IDENTIFIED_INC_GRP_ID::SULFIDE_OXIDE;
+			 }
+			 else
+			 {
+				 a_GrpId = IDENTIFIED_INC_GRP_ID::SULFIDE;
+			 }
+		}
+		else if (claType == INC_CLASSIFY_TYPE::NITR)
+		{
+			a_GrpId = IDENTIFIED_INC_GRP_ID::CARBONNITRIDE_NITRIDE;
+		}
+		else
+		{
+			a_GrpId = IDENTIFIED_INC_GRP_ID::Others;
+		}
+
+		return TRUE;
+
+
 	}
 
 	BOOL COTSClassifyEng::GetGroupNameAndColorById(int grpId,std::string& grpName,std::string& grpColor)
@@ -1502,7 +1567,35 @@ namespace OTSClassifyEngine
 		// ok, return TRUE
 		return TRUE;
 	}
+	BOOL COTSClassifyEng::GetClassifyTypeOfSTDItem(int a_nIncId, INC_CLASSIFY_TYPE& a_nClassifyType)
+	{
+
+
+		a_nClassifyType = INC_CLASSIFY_TYPE::INVALID;
+		if (a_nIncId >=(int) OTS_STD_ITEM_VALUE::SYS_SIMPLE_OXIDE_MIN && a_nIncId < (int)OTS_STD_ITEM_VALUE::SYS_SIMPLE_OXIDE_MAX)
+		{
+			a_nClassifyType = INC_CLASSIFY_TYPE::SIMPLE_OXIDE;
+		}else if(a_nIncId >= (int) OTS_STD_ITEM_VALUE::SYS_COMPLEX_OXIDE_MIN && a_nIncId < (int)OTS_STD_ITEM_VALUE::SYS_COMPLEX_OXIDE_MAX)
+		{
+		
+			a_nClassifyType = INC_CLASSIFY_TYPE::COMPLEX_OXIDE;
+		}
+		else if (a_nIncId >= (int)OTS_STD_ITEM_VALUE::SYS_OXIDE_MIN && a_nIncId < (int)OTS_STD_ITEM_VALUE::SYS_OXIDE_MAX)
+		{
+			a_nClassifyType = INC_CLASSIFY_TYPE::OXIDE;
+		}
+		else if (a_nIncId >= (int)OTS_STD_ITEM_VALUE::SYS_SUL_MIN && a_nIncId < (int)OTS_STD_ITEM_VALUE::SYS_SUL_MAX)
+		{
+			a_nClassifyType = INC_CLASSIFY_TYPE::SUL;
+		}
+		else if (a_nIncId >= (int)OTS_STD_ITEM_VALUE::SYS_NITRIDE_MIN && a_nIncId < (int)OTS_STD_ITEM_VALUE::SYS_NITRIDE_MAX)
+		{
+			a_nClassifyType = INC_CLASSIFY_TYPE::NITR;
+		}
+		return true;
 
+		
+	}
 	BOOL COTSClassifyEng::GetSulfildeOxideComplexItemId(CElementChemistriesList& a_listElChemsIncNoFe, double a_dMolarSumNoFe, CString strSulfideBaseName, int& a_nIncId)
 	{
 		int nIncId;

+ 3 - 0
OTSCPP/OTSClassifyEngine/InclutionEngine/OTSClassifyEng.h

@@ -42,6 +42,8 @@ namespace OTSClassifyEngine
 
 		 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 
@@ -123,6 +125,7 @@ namespace OTSClassifyEngine
 			CElementChemistriesList& a_listNomiElChemsInc);
 		// 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(CElementChemistriesList& a_listElChemsIncNoFe,
 			double a_dMolarSumNoFe, CString strSulfideBaseName,
 			int& nIncId);