Преглед изворни кода

Merge branch 'Release2.5' of http://36.129.163.148:10080/gaoshipeng/OTS2_0 into Release2.5

cxs пре 2 година
родитељ
комит
33075f2152

+ 125 - 184
OTSCPP/OTSClassifyEngine/InclutionEngine/OTSClassifyEng.cpp

@@ -21,6 +21,7 @@ namespace OTSClassifyEngine
 	const CString STR_N = _T("N");
 	const CString STR_CR = _T("Cr");
 	const double SIC_MOLAR_CUTOFF = 85.0;
+	const double NBC_MOLAR_CUTOFF = 30.0;
 	const double FEO_MOLAR_CUTOFF = 85.0;
 
 	// key element
@@ -29,7 +30,7 @@ namespace OTSClassifyEngine
 	const double INC_KEY_ELEMENT_TOTAL_100 = 5.0;	// total molar value
 	const CString INC_KEY_ELEMENT_NAMES[INC_KEY_ELEMENT_MAX] =
 	{
-		_T("S"),_T("N"),_T("O"),_T("C")
+		_T("S"),_T("N"),_T("O")
 	};
 
 	// sub element
@@ -191,13 +192,7 @@ namespace OTSClassifyEngine
 			// something wrong
 			LogErrorTrace(__FILE__, __LINE__, _T("COTSClassifyEng::NitrideClassify: failed to call GetClassifySTDItem method."));
 		}
-		// get all nitride STD items
-		
-		if (!GetClassifySTDItem(a_pPartSTDData, INC_CLASSIFY_TYPE::CARBON, listCarbonSTD))
-		{
-			// something wrong
-			LogErrorTrace(__FILE__, __LINE__, _T("CClassifyEng::NitrideClassify: failed to call GetClassifySTDItem method."));
-		}
+
 		
 
 
@@ -289,6 +284,7 @@ namespace OTSClassifyEngine
 		double dSumKeyElements = 0;
 		double dSumSubElements = 0;
 		double dCarbonMolar = 0;
+		double dNbMolar = 0;
 		double dOMolar = 0;
 		double dSiMolar = 0;
 		double dFeMolar = 0;
@@ -320,10 +316,7 @@ namespace OTSClassifyEngine
 				{
 					dOMolar = pElChem->GetMolarPercentage();
 				}
-				else if (pElChem->GetName().CompareNoCase(STR_C) == 0)
-				{
-					dCarbonMolar = pElChem->GetMolarPercentage();
-				}
+				
 			}
 			// sub element?, include Fe
 			else if (IsSubElement(pElChem))
@@ -350,6 +343,10 @@ namespace OTSClassifyEngine
 				{
 					dSiMolar = pElChem->GetMolarPercentage();
 				}
+				else if (pElChem->GetName().CompareNoCase(STR_Nb) == 0)
+				{
+					dNbMolar = pElChem->GetMolarPercentage();
+				}
 					
 				
 			}
@@ -357,7 +354,10 @@ namespace OTSClassifyEngine
 			{
 				dFeMolar = pElChem->GetMolarPercentage();
 			}
-			
+			else if (pElChem->GetName().CompareNoCase(STR_C) == 0)
+			{
+				dCarbonMolar = pElChem->GetMolarPercentage();
+			}
 			
 			
 		}
@@ -369,13 +369,21 @@ namespace OTSClassifyEngine
 		{
 			// calculate molar % of C + Si
 			double dMolarC_Si = Cal100NorValue(dCarbonMolar + dSiMolar, a_dMolarSumNoFe + dCarbonMolar);
-			if (dMolarC_Si > SIC_MOLAR_CUTOFF)
+			if (dMolarC_Si > SIC_MOLAR_CUTOFF && dSiMolar> INC_SUB_ELEMENT_CUT_OFF)
 			{
 				// this is a SiC, not a inclusion, return FALSE
 				a_nIncId =OTS_PARTCLE_TYPE::ISNOT_INCLUTION;
 				notIncId = NOT_INCLUTION_ID::SiC;
 				return TRUE;
 			}
+			double dMolarC_Nb = Cal100NorValue(dCarbonMolar + dNbMolar, a_dMolarSumNoFe + dCarbonMolar);
+			if (dMolarC_Nb > NBC_MOLAR_CUTOFF && dNbMolar > INC_SUB_ELEMENT_CUT_OFF)
+			{
+				// this is a SiC, not a inclusion, return FALSE
+				a_nIncId = OTS_PARTCLE_TYPE::ISNOT_INCLUTION;
+				notIncId = NOT_INCLUTION_ID::NbC;
+				return TRUE;
+			}
 		}
 		//=========================================
 
@@ -480,22 +488,7 @@ namespace OTSClassifyEngine
 			return TRUE;
 		}
 
-		// CarbonClassify classification
-		if (!CarbonClassify(a_listElChemsIncNoFe, a_dMolarSumNoFe, nIncId))
-		{
-			// something wrong
-			LogErrorTrace(__FILE__, __LINE__, _T("COTSClassifyEng::ClassifyXray: failed to call CarbonClassify method."));
-			a_nIncId = (int)OTS_PARTICLE_TYPE::NOT_IDENTIFIED;
-			return FALSE;
-		}
 
-		// inclusion identified?
-		if (nIncId != (int)OTS_PARTICLE_TYPE::INVALID)
-		{
-			// yes, this is a oxide
-			a_nIncId = nIncId;
-			return TRUE;
-		}
 		// can't identify this inclusion
 		a_nIncId = (int)OTS_PARTICLE_TYPE::NOT_IDENTIFIED;
 		return TRUE;
@@ -615,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
 		{
@@ -643,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)
@@ -1269,152 +1327,7 @@ namespace OTSClassifyEngine
 		return TRUE;
 	}
 
-	// nitrides classification
-	BOOL COTSClassifyEng::CarbonClassify(
-		CElementChemistriesList& a_listElChemsIncNoFe,
-		double a_dMolarSumNoFe,
-		int& a_nIncId)
-	{
-		
-
-		// check if element chemistries list contain any nitrogen
-		CElementChemistryPtr pCarElChem = GetNamedElementChemistry(a_listElChemsIncNoFe, STR_CAR);
-		if (!pCarElChem)
-		{
-			// contains no nitrogen, this is not a nitride
-			return TRUE;
-		}
-
-		// check if nitrogen amount enough
-		double dCarMolar100 = Cal100NorValue(pCarElChem->GetMolarPercentage(), a_dMolarSumNoFe);
-		if (dCarMolar100 < MIN_CAR_MOLAR)
-		{
-			// have no enough nitrogen, this is not a nitride
-			return TRUE;
-		}
-
-		// this is a carbon
-
-		// any carbon STD items
-		if (listCarbonSTD.empty())
-		{
-			// no nitrides std items. 
-
-			// can't identify this inclusion
-			a_nIncId = (int)OTS_PARTICLE_TYPE::NOT_IDENTIFIED;
-			return TRUE;
-		}
-
-		// mapping carbon sub elements
-		CString strCarbonName = _T("");
-		BOOL bMapped = FALSE;
-		for (int i = 0; i < INC_CAR_SUB_ELEMENT_MAX; ++i)
-		{
-			CElementChemistryPtr pCarSubElChem = GetNamedElementChemistry(a_listElChemsIncNoFe, INC_CAR_SUB_ELEMENT_NAMES[i]);
-			if (pCarSubElChem)
-			{
-				// this is a nitride sub element chemistry
-
-				// get %molar value of this sub element chemistry
-				double dCar_Sub_Molar = Cal100NorValue(pCarSubElChem->GetMolarPercentage(), a_dMolarSumNoFe);
-
-				// make sure the sub element molar value is over mapping min value
-				if (dCar_Sub_Molar > MIN_CAR_SUB_MOLAR)
-				{
-
-					// try to map Nb
-					BOOL bNbMapped = FALSE;
-
-					// get molar % of the rest nitrogen 
-					dCarMolar100 = Cal100NorValue(pCarElChem->GetMolarPercentage(), a_dMolarSumNoFe);
-
-					// make sure nitrogen amount is enough
-					if (dCarMolar100 > MIN_CAR_MOLAR)
-					{
-						// get element "Nb" 
-						CElementChemistryPtr pElChemNb = GetNamedElementChemistry(a_listElChemsIncNoFe, STR_Nb);
-
-						// is there Nb in the list
-						if (pElChemNb)
-						{
-							// get %molar value of Nb
-							double dNb_Molar = Cal100NorValue(pElChemNb->GetMolarPercentage(), a_dMolarSumNoFe);
-
-							// make sure Nb molar value is over mapping min value
-							double dNbMappingRatio = INC_NITR_MAPPING_RATIO[2];
-							if (dNb_Molar > MIN_CAR_SUB_MOLAR)
-							{
-								if (!ElementsMapping(a_dMolarSumNoFe, dNbMappingRatio, pElChemNb, pCarElChem, bNbMapped))
-								{
-									// something is wrong
-									LogErrorTrace(__FILE__, __LINE__, _T("CClassifyEng::NitrideClassify: failed to call ElementsMapping method."));
-									return FALSE;
-								}
-							}
-						}
-					}
-					// mapped "Nb"
-					if (bNbMapped)
-					{
-						// carbon name is "NbC"
-						strCarbonName = INC_CAR_NAMES[0];
-					}
-					// completed mapping, get out the loop
-					break;
-				}
-			}
-		}
-
-		// mapped?
-		if (a_nIncId >= (int)OTS_PARTICLE_TYPE::IDENTIFIED)
-		{
-			// this is an oxide nitride
-
-			// confirm the oxide nitride id
-			CSTDItemPtr pCarSTDItem = GetSTDItemByName(listCarbonSTD, strCarbonName);
-			// get the STD item of the mapped oxide
-			if (pCarSTDItem)
-			{
-				// found the STD item
-				a_nIncId = pCarSTDItem->GetSTDId();
-				return TRUE;
-			}
-
-			// can't identify this inclusion
-			a_nIncId = (int)OTS_PARTICLE_TYPE::NOT_IDENTIFIED;
-			return TRUE;
-		}
-
-		// confirm the carben id
-
-		// try to find the STD 
-		auto pSTDItem = GetSTDItemByName(listCarbonSTD, strCarbonName);
-		if (pSTDItem)
-		{
-			// found the STD item
-			a_nIncId = pSTDItem->GetSTDId();
-			return TRUE;
-		}
-
-		// rename the Carbon as "Carbon" if it is not
-		if (strCarbonName.CompareNoCase(CARBON_STR) != 0)
-		{
-			strCarbonName = NITRIDE_STR;
-			auto pSTDItem = GetSTDItemByName(listCarbonSTD, strCarbonName);
-			if (pSTDItem)
-			{
-				// found the STD item
-				a_nIncId = pSTDItem->GetSTDId();
-				return TRUE;
-			}
-		}
-
-		// can't identify this inclusion
-		a_nIncId = (int)OTS_PARTICLE_TYPE::NOT_IDENTIFIED;
-		return TRUE;
-	}
-
-
+	
 
 	// nominate element chemistries list 
 	BOOL COTSClassifyEng::NomiNateElChemsList( CElementChemistriesList& a_listElChemsInc, 
@@ -1423,7 +1336,7 @@ namespace OTSClassifyEngine
 		// return FALSE if nothing in the input list
 		if (a_listElChemsInc.empty())
 		{
-			LogErrorTrace(__FILE__, __LINE__, _T("COTSClassifyEng::NomiNateElChemsList: invalid inclusion x-ray data."));
+			//LogErrorTrace(__FILE__, __LINE__, _T("COTSClassifyEng::NomiNateElChemsList: invalid inclusion x-ray data."));
 			return FALSE;
 		}
 
@@ -1654,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;

+ 9 - 10
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 
@@ -63,15 +65,8 @@ namespace OTSClassifyEngine
 									 double a_dMolarSumNoFe,
 									 int& a_nIncId);
 
-		// carbon classification
-		 BOOL CarbonClassify(
-			CElementChemistriesList& a_listElChemsIncNoFe,
-			double a_dMolarSumNoFe,
-			int& a_nIncId);
-
-		// nominate element chemistries list 
-		 BOOL NomiNateElChemsList( CElementChemistriesList& a_listElChemsInc, 
-										 CElementChemistriesList& a_listNomiElChemsInc);
+		
+	
 	
 	protected:
 		
@@ -124,9 +119,13 @@ namespace OTSClassifyEngine
 		CSTDItemsList listOxideSTD;
 		CSTDItemsList listNitrideSTD;
 		CSTDItemsList listCarbonSTD;
-		//CSTDItemsList listUserSTD;
+	
+		//  nominate element chemistries list 
+		BOOL NomiNateElChemsList(CElementChemistriesList& a_listElChemsInc,
+			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);

+ 3 - 14
OTSCPP/OTSData/otsdataconst.h

@@ -325,19 +325,7 @@ namespace OTSDATA
 	const int RESOLUTION_ID_MAX = 6;
 	const int RESOLUTION_ID_DEFAULT = 4;
 	const int RESOLUTION_ID_FIRST_TIE = 2;
-	/*_512_384 = 0,
-		_1024_684 = 1,
-		_1024_704 = 2,
-		_1024_768 = 3,
-		_1536_1024 = 4,
-		_2048_1408 = 5,
-		_2048_1536 = 6,
-		_3072_2048 = 7,
-		_4096_3072 = 8,*/
-	/*const CSize RESOLUTION_VALUE[RESOLUTION_ID_MAX + 1] = { CSize(512, 384), CSize(1024, 684), CSize(1024, 704), CSize(1024, 768),
-		CSize(1536,1024), CSize(2048, 1408), CSize(2048, 1536) };
-	const CString RESOLUTION_STRINGS[RESOLUTION_ID_MAX + 1] = { _T("64 X 48"), _T("128 X 96"), _T("256 X 192"), _T("512 X 384"),
-		_T("1024 X 768"), _T("2048 X 1536"), _T("4096 X 3072") };*/
+
 
 	// image parameter
 	const int STOP_PARAM_PARTICLE_MIN = 0;
@@ -422,7 +410,8 @@ namespace OTSDATA
 		Min=0,
 		SiC = 20001,
 		FeO = 20002,
-		Max=20002
+		NbC=20003,
+		Max=20003
 	}NOT_INCLUTION_ID;
 
 	typedef enum class __declspec(dllexport) IDENTIFIED_INC_GRP_ID//ʶ±ð¼ÐÔÓÎï·Ö×é

+ 85 - 62
OTSCPP/OTSRptCalculate/GBCal/CGBCalculate.cpp

@@ -806,76 +806,32 @@ namespace OTSGBCalculate
 				break;
 			}
 		}
+		COTSParticleList allDSParts;
 		for (CGBFieldDataPtr frame : listCGBField)
-        {
+		{
 			auto dsparticles = frame->listDSParticles;
+
+
 			for (auto part : dsparticles)
 			{
-				for (int i = 0; i < columnNum; i++)
-				{
-					CString strName;
-					CGridRowsList listRows;
-					CGridRowPtr pRow;
-					CString strWidthName1, strWidthName2, strWidthName3;
-					CString idstr;
-					int fldid;
-					int partId;
-					switch (i)
-					{
-					case 0:
-						pColumn = listCol.at(0);
-						pRow = CGridRowPtr(new CGridRow());
-						pRow->SetDataType(REPORT_GRID_DATA_TYPE::STRING);
-						 fldid = part->GetFieldId();
-						 partId = part->GetTagId();
-					
-						idstr.Format("%d_%d", fldid,partId);
-						
-						pRow->SetStringValue(idstr);
-						pColumn->AddGridRow(pRow);
+			
+				allDSParts.push_back(part);
 
-						break;
-					case 1:
-						pColumn = listCol.at(1);
-						pRow = CGridRowPtr(new CGridRow());
-						pRow->SetDataType(REPORT_GRID_DATA_TYPE::INT);
-						pRow->SetIntValue(part->GetActualArea());
-						pColumn->AddGridRow(pRow);
-						break;
-					case 2:
-						pColumn = listCol.at(2);
-						pRow = CGridRowPtr(new CGridRow());
-						pRow->SetDataType(REPORT_GRID_DATA_TYPE::FLOAT);
-						pRow->SetDoubleValue(part->GetFeretDiameter());
-						pColumn->AddGridRow(pRow);
-						break;
-					case 3:
-						pColumn = listCol.at(3);
-						pRow = CGridRowPtr(new CGridRow());
-						pRow->SetDataType(REPORT_GRID_DATA_TYPE::INT);
-						pRow->SetIntValue(part->GetAbsolutPos().x);
-						pColumn->AddGridRow(pRow);
-						break;
-					case 4:
-						pColumn = listCol.at(4);
-						pRow = CGridRowPtr(new CGridRow());
-						pRow->SetDataType(REPORT_GRID_DATA_TYPE::INT);
-						pRow->SetIntValue(part->GetAbsolutPos().y);
-						pColumn->AddGridRow(pRow);
-						break;
-					case 5:
-						pColumn = listCol.at(5);
-						pRow = CGridRowPtr(new CGridRow());
-						pRow->SetDataType(REPORT_GRID_DATA_TYPE::INT);
-						pRow->SetIntValue((int)OTSGBCalculate::GetDSGrade(part->GetFeretDiameter()));
-						pColumn->AddGridRow(pRow);
-						break;
-					}
-				}
+			}
+
+		}
+		  
+	
+			
+
+			for (auto part : allDSParts)
+			{
+				DisplayDSPartRow(part, listCol);
+				
 
 			}
 			
-		}
+		
 		pGridData->SetGridColumnList(listCol);
 
 		return pGridData;
@@ -1375,6 +1331,73 @@ namespace OTSGBCalculate
 		PixSize = p;
 	}
 
+	void CGBCalculate::DisplayDSPartRow(COTSParticlePtr part, CGridColumnsList listCol)
+	{
+		int columnNum = 6;
+		CGridColumnPtr pColumn;
+		for (int i = 0; i < columnNum; i++)
+		{
+			CString strName;
+			CGridRowsList listRows;
+			CGridRowPtr pRow;
+			CString strWidthName1, strWidthName2, strWidthName3;
+			CString idstr;
+			int fldid;
+			int partId;
+			switch (i)
+			{
+			case 0:
+				pColumn = listCol.at(0);
+				pRow = CGridRowPtr(new CGridRow());
+				pRow->SetDataType(REPORT_GRID_DATA_TYPE::STRING);
+				fldid = part->GetFieldId();
+				partId = part->GetTagId();
+
+				idstr.Format("%d_%d", fldid, partId);
+
+				pRow->SetStringValue(idstr);
+				pColumn->AddGridRow(pRow);
+
+				break;
+			case 1:
+				pColumn = listCol.at(1);
+				pRow = CGridRowPtr(new CGridRow());
+				pRow->SetDataType(REPORT_GRID_DATA_TYPE::INT);
+				pRow->SetIntValue(part->GetActualArea());
+				pColumn->AddGridRow(pRow);
+				break;
+			case 2:
+				pColumn = listCol.at(2);
+				pRow = CGridRowPtr(new CGridRow());
+				pRow->SetDataType(REPORT_GRID_DATA_TYPE::FLOAT);
+				pRow->SetDoubleValue(part->GetFeretDiameter());
+				pColumn->AddGridRow(pRow);
+				break;
+			case 3:
+				pColumn = listCol.at(3);
+				pRow = CGridRowPtr(new CGridRow());
+				pRow->SetDataType(REPORT_GRID_DATA_TYPE::INT);
+				pRow->SetIntValue(part->GetAbsolutPos().x);
+				pColumn->AddGridRow(pRow);
+				break;
+			case 4:
+				pColumn = listCol.at(4);
+				pRow = CGridRowPtr(new CGridRow());
+				pRow->SetDataType(REPORT_GRID_DATA_TYPE::INT);
+				pRow->SetIntValue(part->GetAbsolutPos().y);
+				pColumn->AddGridRow(pRow);
+				break;
+			case 5:
+				pColumn = listCol.at(5);
+				pRow = CGridRowPtr(new CGridRow());
+				pRow->SetDataType(REPORT_GRID_DATA_TYPE::INT);
+				pRow->SetIntValue((int)OTSGBCalculate::GetDSGrade(part->GetFeretDiameter()));
+				pColumn->AddGridRow(pRow);
+				break;
+			}
+		}
+	}
+
 
 }
 

+ 2 - 0
OTSCPP/OTSRptCalculate/GBCal/CGBCalculate.h

@@ -52,6 +52,8 @@ namespace OTSGBCalculate
 		DOUBLE PixSize;
 		//pointer to the whole reportprojfilemgr
 		CReportMgr* m_rptMgrPtr;
+	private:
+		void DisplayDSPartRow(COTSParticlePtr part, CGridColumnsList listCol);
 	};
 	
 

+ 1 - 0
OTSCPP/OTSRptCalculate/GBCal/GBFieldData.cpp

@@ -366,6 +366,7 @@ namespace OTSGBCalculate
 
 
 		}
+		int n = listDSParticles.size();
 		
 			for (auto pGBParticle : listBAndDParticles)
 			{

+ 6 - 1
OTSIncAReportApp/1-UI/GBCalculate/ChineseStandardABCDDS.cs

@@ -367,6 +367,10 @@ namespace OTSIncAReportGB
                 m_dt_C = ChineseStandardABCD_GetDataTable_Total(m_list_cgriddataclr_C, out m_oneresult_columnscount_C);
                 m_dt_D = ChineseStandardABCD_GetDataTable_Total(m_list_cgriddataclr_D, out m_oneresult_columnscount_D);
                 m_dt_DS = ChineseStandardABCD_GetDataTable_Total(m_list_cgriddataclr_DS, out m_oneresult_columnscount_DS);
+
+                DataView dv = m_dt_DS.DefaultView;
+                dv.Sort = "Grade desc";
+                DataTable dt_DS_data = dv.ToTable();
                 Gview_gzA.DataSource = m_dt_A;
                 for (int i = 0; i < 13; i++)
                 {
@@ -387,7 +391,8 @@ namespace OTSIncAReportGB
                 {
                     Gview_gzD.Columns[i].Width = 68;
                 }
-                Gview_gzDS.DataSource = m_dt_DS;
+                //Gview_gzDS.DataSource = m_dt_DS;
+                Gview_gzDS.DataSource = dt_DS_data;
 
                 Gview_gzA.Width = panel1.Width;
                 Gview_gzB.Width = panel1.Width;

+ 7 - 1
OTSIncAReportApp/1-UI/GBCalculate/NationalStandardMethodTwo.cs

@@ -390,6 +390,11 @@ namespace OTSIncAReportGB
                 m_dt_D = ChineseStandardABCD_GetDataTable_Total(m_list_cgriddataclr_D, out m_oneresult_columnscount_D);
                 m_dt_sulfide = ChineseStandardABCD_GetDataTable_Total(m_list_cgriddataclr_sulfide, out m_oneresult_columnscount_sulfide);
                 m_dt_DS = ChineseStandardABCD_GetDataTable_Total(m_list_cgriddataclr_DS, out m_oneresult_columnscount_DS);
+
+                DataView dv = m_dt_DS.DefaultView;
+                dv.Sort = "Grade desc";
+                DataTable dt_DS_data = dv.ToTable();
+
                 Gview_gzA.DataSource = m_dt_A;
                 for (int i = 0; i < 13; i++)
                 {
@@ -415,7 +420,8 @@ namespace OTSIncAReportGB
                 {
                     sulfide.Columns[i].Width = 68;
                 }
-                Gview_gzDS.DataSource = m_dt_DS;
+                //Gview_gzDS.DataSource = m_dt_DS;
+                Gview_gzDS.DataSource = dt_DS_data;
 
                 Gview_gzA.Width = panel1.Width;
                 Gview_gzB.Width = panel1.Width;

+ 69 - 0
OTSIncAReportApp/1-UI/OTSTemplateDesigner/Export_ReportTemplate.cs

@@ -973,6 +973,27 @@ namespace OTSIncAReportApp.OTSTemplateDesigner
 
             }
 
+            //去除物质分类(非夹杂物分类)
+
+            for (int a = 0; a < m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass.Count; a++)
+            {
+                for (int i = dt.Rows.Count-1; i >=0; i--)
+                {
+                    if (dt.Rows[i]["TypeName"].ToString() == m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass[a].ToString())
+                    {
+                        dt.Rows.RemoveAt(i);
+                    
+                    }
+                }
+            }
+
+
+
+
+
+
+
+
             //将颗粒大小排序(从大到小)
             DataView dv = dt.DefaultView;
             dv.Sort = m_mbszclass.M_KLLBXX.str_cb_kllb_sort_p1.ToString() + " DESC";
@@ -1213,6 +1234,27 @@ namespace OTSIncAReportApp.OTSTemplateDesigner
                     }
                 }
             }
+
+
+
+            //去除物质分类(非夹杂物分类)
+
+            for (int a = 0; a < m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass.Count; a++)
+            {
+                for (int i = dt.Rows.Count - 1; i >= 0; i--)
+                {
+                    if (dt.Rows[i]["TypeName"].ToString() == m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass[a].ToString())
+                    {
+                        dt.Rows.RemoveAt(i);
+
+                    }
+                }
+            }
+
+
+
+
+
             //将颗粒大小排序(从大到小)
             DataView dv = dt.DefaultView;
             dv.Sort = m_mbszclass.M_KLLBXX.str_cb_kllb_sort_p1.ToString() + " DESC";
@@ -2552,6 +2594,19 @@ namespace OTSIncAReportApp.OTSTemplateDesigner
             if (gb_1)
             {
                 List<DataTable> GB1 = InsertReportTemplateTable_ChineseStandardABCDDS(clr_prop, datasourcelist, Index, (int)CALCULATE_TABLE_TYPE.GB_Method1);
+
+                DataView dv_gb1 = GB1[4].DefaultView;
+                dv_gb1.Sort = "Grade desc";
+                DataTable dt_gb1 = dv_gb1.ToTable();
+                for (int i=0; i < GB1[4].Rows.Count;i++)
+                {
+                    for(int a=0;a< GB1[4].Columns.Count;a++)
+                    {
+                        GB1[4].Rows[i][a] = dt_gb1.Rows[i][a];
+                    }
+                    
+                }
+
                 List<string> GB1NameList = new List<string>();
                 GB1NameList.Add("A类");
                 GB1NameList.Add("B类");
@@ -2564,6 +2619,20 @@ namespace OTSIncAReportApp.OTSTemplateDesigner
             if (gb_2)
             {
                 List<DataTable> GB2 = InsertReportTemplateTable_ChineseStandardABCDDS(clr_prop, datasourcelist, Index, (int)CALCULATE_TABLE_TYPE.GB_Method2);
+
+                DataView dv_gb1 = GB2[5].DefaultView;
+                dv_gb1.Sort = "Grade desc";
+                DataTable dt_gb1 = dv_gb1.ToTable();
+                for (int i = 0; i < GB2[5].Rows.Count; i++)
+                {
+                    for (int a = 0; a < GB2[5].Columns.Count; a++)
+                    {
+                        GB2[5].Rows[i][a] = dt_gb1.Rows[i][a];
+                    }
+
+                }
+
+
                 List<string> GB2NameList = new List<string>();
                 GB2NameList.Add("A类");
                 GB2NameList.Add("B类");

+ 24 - 0
OTSIncAReportApp/1-UI/OTSTemplateDesigner/OTSReport_Export.cs

@@ -135,6 +135,7 @@ namespace OTSIncAReportApp
                 M_JZWZB = new JZWZB();
                 M_KLLBXX.list_str_tb_lllb_sxys = new List<string>();
                 M_KLLBXX.list_str_kllb_qcys = new List<string>();
+                M_KLLBXX.list_str_kllb_DeleteClass = new List<string>();
                 M_DZ = new DZ();
             }
             #endregion
@@ -568,6 +569,14 @@ namespace OTSIncAReportApp
                 /// </summary>
                 public List<string> list_str_kllb_qcys { get; set; }
 
+                /// <summary>
+                /// 颗粒列表去除不要的物质分类
+                /// </summary>
+                public string str_kllb_DeleteClass { get; set; }
+                /// <summary>
+                /// 颗粒列表去除不要的物质分类
+                /// </summary>
+                public List<string> list_str_kllb_DeleteClass { get; set; }
             }
             #endregion
             #region 夹杂物占比
@@ -785,6 +794,21 @@ namespace OTSIncAReportApp
                     m_mbszclass.M_KLLBXX.list_str_kllb_qcys.Add(str);
                 }
             }
+            m_mbszclass.M_KLLBXX.str_kllb_DeleteClass = Convert.ToString(xmlutil2.Read("M_KLLBXX", "str_kllb_DeleteClass"));
+            m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass.Clear();
+            for (int i = 0; i < 100; i++)                              //取得所有元素列表
+            {
+                string str = xmlutil2.Read("M_KLLBXX", "list_str_kllb_DeleteClass", "YS" + i.ToString());
+                if (str == null)
+                {
+                    break;
+                }
+                else
+                {
+                    m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass.Add(str);
+                }
+            }
+
 
             //夹杂物占比
             m_mbszclass.M_JZWZB.b_ck_surface = Convert.ToBoolean(xmlutil2.Read("M_JZWZB", "b_ck_surface"));//夹杂物占比表

+ 52 - 30
OTSIncAReportApp/1-UI/OTSTemplateDesigner/OTSReport_TemplateDesignerRM.Designer.cs

@@ -76,6 +76,9 @@
             this.label33 = new System.Windows.Forms.Label();
             this.label42 = new System.Windows.Forms.Label();
             this.groupBox8 = new System.Windows.Forms.GroupBox();
+            this.label11111 = new System.Windows.Forms.Label();
+            this.button5 = new System.Windows.Forms.Button();
+            this.tb_RemoveElements = new System.Windows.Forms.TextBox();
             this.ck_kllb_fjzt = new System.Windows.Forms.CheckBox();
             this.label111 = new System.Windows.Forms.Label();
             this.groupBox_zt = new System.Windows.Forms.GroupBox();
@@ -118,9 +121,8 @@
             this.groupBox9 = new System.Windows.Forms.GroupBox();
             this.label39 = new System.Windows.Forms.Label();
             this.cb_ParticleRange = new System.Windows.Forms.ComboBox();
-            this.tb_RemoveElements = new System.Windows.Forms.TextBox();
-            this.button5 = new System.Windows.Forms.Button();
-            this.label11111 = new System.Windows.Forms.Label();
+            this.delete_Class = new System.Windows.Forms.TextBox();
+            this.label_delete_Class = new System.Windows.Forms.Label();
             this.groupBox1.SuspendLayout();
             this.groupBox4.SuspendLayout();
             this.groupBox6.SuspendLayout();
@@ -634,6 +636,8 @@
             // 
             // groupBox8
             // 
+            this.groupBox8.Controls.Add(this.label_delete_Class);
+            this.groupBox8.Controls.Add(this.delete_Class);
             this.groupBox8.Controls.Add(this.label11111);
             this.groupBox8.Controls.Add(this.button5);
             this.groupBox8.Controls.Add(this.tb_RemoveElements);
@@ -653,11 +657,39 @@
             this.groupBox8.Margin = new System.Windows.Forms.Padding(2);
             this.groupBox8.Name = "groupBox8";
             this.groupBox8.Padding = new System.Windows.Forms.Padding(2);
-            this.groupBox8.Size = new System.Drawing.Size(263, 464);
+            this.groupBox8.Size = new System.Drawing.Size(263, 501);
             this.groupBox8.TabIndex = 6;
             this.groupBox8.TabStop = false;
             this.groupBox8.Text = "颗粒列表";
             // 
+            // label11111
+            // 
+            this.label11111.AutoSize = true;
+            this.label11111.Location = new System.Drawing.Point(14, 382);
+            this.label11111.Name = "label11111";
+            this.label11111.Size = new System.Drawing.Size(77, 12);
+            this.label11111.TabIndex = 61;
+            this.label11111.Text = "去除元素信息";
+            // 
+            // button5
+            // 
+            this.button5.Location = new System.Drawing.Point(202, 403);
+            this.button5.Name = "button5";
+            this.button5.Size = new System.Drawing.Size(55, 23);
+            this.button5.TabIndex = 60;
+            this.button5.Text = "选取";
+            this.button5.UseVisualStyleBackColor = true;
+            this.button5.Click += new System.EventHandler(this.button5_Click);
+            // 
+            // tb_RemoveElements
+            // 
+            this.tb_RemoveElements.Location = new System.Drawing.Point(11, 405);
+            this.tb_RemoveElements.Margin = new System.Windows.Forms.Padding(2);
+            this.tb_RemoveElements.Name = "tb_RemoveElements";
+            this.tb_RemoveElements.ReadOnly = true;
+            this.tb_RemoveElements.Size = new System.Drawing.Size(181, 21);
+            this.tb_RemoveElements.TabIndex = 59;
+            // 
             // ck_kllb_fjzt
             // 
             this.ck_kllb_fjzt.AutoSize = true;
@@ -1002,7 +1034,7 @@
             this.groupBox211.Controls.Add(this.label1311);
             this.groupBox211.Controls.Add(this.label1211);
             this.groupBox211.Controls.Add(this.ck_jzwzb_surface);
-            this.groupBox211.Location = new System.Drawing.Point(3, 1706);
+            this.groupBox211.Location = new System.Drawing.Point(3, 1749);
             this.groupBox211.Name = "groupBox211";
             this.groupBox211.Size = new System.Drawing.Size(263, 81);
             this.groupBox211.TabIndex = 8;
@@ -1049,7 +1081,7 @@
             // groupBZ
             // 
             this.groupBZ.Controls.Add(this.textBox_strBZ);
-            this.groupBZ.Location = new System.Drawing.Point(5, 1793);
+            this.groupBZ.Location = new System.Drawing.Point(5, 1838);
             this.groupBZ.Name = "groupBZ";
             this.groupBZ.Size = new System.Drawing.Size(263, 139);
             this.groupBZ.TabIndex = 7;
@@ -1106,33 +1138,21 @@
             this.cb_ParticleRange.Size = new System.Drawing.Size(121, 20);
             this.cb_ParticleRange.TabIndex = 76;
             // 
-            // tb_RemoveElements
+            // delete_Class
             // 
-            this.tb_RemoveElements.Location = new System.Drawing.Point(11, 405);
-            this.tb_RemoveElements.Margin = new System.Windows.Forms.Padding(2);
-            this.tb_RemoveElements.Name = "tb_RemoveElements";
-            this.tb_RemoveElements.ReadOnly = true;
-            this.tb_RemoveElements.Size = new System.Drawing.Size(181, 21);
-            this.tb_RemoveElements.TabIndex = 59;
+            this.delete_Class.Location = new System.Drawing.Point(11, 464);
+            this.delete_Class.Name = "delete_Class";
+            this.delete_Class.Size = new System.Drawing.Size(181, 21);
+            this.delete_Class.TabIndex = 62;
             // 
-            // button5
+            // label_delete_Class
             // 
-            this.button5.Location = new System.Drawing.Point(202, 403);
-            this.button5.Name = "button5";
-            this.button5.Size = new System.Drawing.Size(55, 23);
-            this.button5.TabIndex = 60;
-            this.button5.Text = "选取";
-            this.button5.UseVisualStyleBackColor = true;
-            this.button5.Click += new System.EventHandler(this.button5_Click);
-            // 
-            // label11111
-            // 
-            this.label11111.AutoSize = true;
-            this.label11111.Location = new System.Drawing.Point(14, 382);
-            this.label11111.Name = "label11111";
-            this.label11111.Size = new System.Drawing.Size(77, 12);
-            this.label11111.TabIndex = 61;
-            this.label11111.Text = "去除元素信息";
+            this.label_delete_Class.AutoSize = true;
+            this.label_delete_Class.Location = new System.Drawing.Point(12, 440);
+            this.label_delete_Class.Name = "label_delete_Class";
+            this.label_delete_Class.Size = new System.Drawing.Size(101, 12);
+            this.label_delete_Class.TabIndex = 63;
+            this.label_delete_Class.Text = "去除指定物质分类";
             // 
             // OTSReport_TemplateDesignerRM
             // 
@@ -1282,5 +1302,7 @@
         private System.Windows.Forms.Button button5;
         private System.Windows.Forms.TextBox tb_RemoveElements;
         private System.Windows.Forms.Label label11111;
+        private System.Windows.Forms.Label label_delete_Class;
+        private System.Windows.Forms.TextBox delete_Class;
     }
 }

+ 38 - 1
OTSIncAReportApp/1-UI/OTSTemplateDesigner/OTSReport_TemplateDesignerRM.cs

@@ -595,6 +595,29 @@ namespace OTSIncAReportApp.OTSTemplateDesigner
                 }
 
 
+                xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_KLLBXX.str_kllb_DeleteClass.ToString(), "M_KLLBXX", "str_kllb_DeleteClass");
+
+                for (int i = 0; i < m_OTSReport_Export.m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass.Count; i++)                              //去除元素列表
+                {
+                    xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass[i].ToString(), "M_KLLBXX", "list_str_kllb_DeleteClass", "YS" + i.ToString());
+                }
+
+                //然后判断一下xml中是否还存在之前比现有长度长的节点存在,存在则删除,防止后面再进行读取
+                for (int i = m_OTSReport_Export.m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass.Count; i < 1000; i++)
+                {
+                    string strxh = i.ToString();
+                    if (null != xmlutil.Read("M_KLLBXX", "list_str_kllb_DeleteClass", "YS" + strxh))
+                    {
+                        //删除该节点
+                        xmlutil.RemoveNode("M_KLLBXX", "list_str_kllb_DeleteClass", "YS" + strxh);
+                    }
+                    else
+                    {
+                        break;
+                    }
+                }
+
+
                 //夹杂物占比
                 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_JZWZB.b_ck_surface.ToString(), "M_JZWZB", "b_ck_surface");//夹杂物占比表
                 xmlutil.Write(m_OTSReport_Export.m_mbszclass.M_JZWZB.b_ck_chart.ToString(), "M_JZWZB", "b_ck_chart");//夹杂物占比图
@@ -671,7 +694,9 @@ namespace OTSIncAReportApp.OTSTemplateDesigner
             m_OTSReport_Export.m_mbszclass.M_KLLBXX.str_cb_kllb_chartSort_p2 = cb_FrameChart_p2.Text;//颗粒帧图表行第二个字段的可选参数
             m_OTSReport_Export.m_mbszclass.M_KLLBXX.index_cb_kllb_chartSort_p2 = cb_FrameChart_p2.SelectedIndex;
 
-            m_OTSReport_Export.m_mbszclass.M_KLLBXX.str_kllb_qcys = tb_RemoveElements.Text;
+            m_OTSReport_Export.m_mbszclass.M_KLLBXX.str_kllb_qcys = tb_RemoveElements.Text;//去除不要的物质元素
+
+            m_OTSReport_Export.m_mbszclass.M_KLLBXX.str_kllb_DeleteClass = delete_Class.Text;//去除不要的物质分类
 
             if (ck_kllb_xsmk.Checked)
             {
@@ -682,6 +707,7 @@ namespace OTSIncAReportApp.OTSTemplateDesigner
                 m_OTSReport_Export.m_mbszclass.M_KLLBXX.int_tb_kllb_ylsx = Convert.ToInt32("1");
             }
 
+
             //m_OTSReport_Export.m_mbszclass.M_KLLBXX.str_tb_kllb_sxys = tb_kllb_sxys.Text;//显示元素
             m_OTSReport_Export.m_mbszclass.M_KLLBXX.b_ck_kllb_ystx = ck_kllb_ystx.Checked;//原始图像
             m_OTSReport_Export.m_mbszclass.M_KLLBXX.b_ck_kllb_fdtx = ck_kllb_fdtx.Checked;//放大图像
@@ -771,6 +797,8 @@ namespace OTSIncAReportApp.OTSTemplateDesigner
             cb_FrameChart_p2.SelectedIndex = m_OTSReport_Export.m_mbszclass.M_KLLBXX.index_cb_kllb_chartSort_p2;
             //cb_FrameChart_p3.SelectedIndex = m_OTSReport_Export.m_mbszclass.M_KLLBXX.index_cb_kllb_chartSort_p3;
 
+            delete_Class.Text = m_OTSReport_Export.m_mbszclass.M_KLLBXX.str_kllb_DeleteClass;
+
             //夹杂物占比
             ck_jzwzb_surface.Checked = m_OTSReport_Export.m_mbszclass.M_JZWZB.b_ck_surface;//夹杂物占比表
             ck_jzwzb_chart.Checked = m_OTSReport_Export.m_mbszclass.M_JZWZB.b_ck_chart;//夹杂物占比图
@@ -890,6 +918,15 @@ namespace OTSIncAReportApp.OTSTemplateDesigner
             {
                 m_OTSReport_Export.m_mbszclass.M_YSFXJG.list_str_tb_ysfx_xsys.Add(after[i]);
             }
+            //拆分,物质分类
+            m_OTSReport_Export.m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass.Clear();
+            for (int i=0;i< delete_Class.Text.Split(',').Length;i++)
+            {
+                if (delete_Class.Text.Split(',')[i]!="")
+                m_OTSReport_Export.m_mbszclass.M_KLLBXX.list_str_kllb_DeleteClass.Add(delete_Class.Text.Split(',')[i]);
+            }
+            
+
 
             SaveTemplateParameters();
 

+ 4 - 1
OTSIncAReportApp/ReportTemplate/OTS_DEVReport.cs

@@ -652,7 +652,10 @@ namespace OTSIncAReportApp._1_UI.OTSTemplateDesigner
             //     Export_ReportTemplate export_ReportTemplate = new Export_ReportTemplate(m_otsreport_export);
             DataTable dataTable = export_ReportTemplate.Get_dev_kllb_data(TemplateClass);
 
-            for (int i=0;i<dataTable.Rows.Count;i++)
+           
+
+
+            for (int i = 0; i < dataTable.Rows.Count; i++)
             {
                 dataTable.Rows[i]["Class"] = subscript.Getsubscriptstring(dataTable.Rows[i]["Class"].ToString());
             }