#pragma once #include using namespace OTSDATA; namespace OTSGBCalculate { enum class GBIncCategory { AT = 1,//A thin AW=2,//A wide AS=3,//A super BT = 4, BW=5, BS=6, CT = 7, CW=8, CS=9, DT=10, DW= 11, DS = 12, DSulfideT = 13, DSulfideW=14, DSulfideS=15 }; class __declspec(dllexport) GBGradeCell { public: int nFldNum = 0; CGBFieldList GBFlds; void AddFld(CGBFieldDataPtr fld) { GBFlds.push_back(fld); nFldNum += 1; } }; class __declspec(dllexport) CGBGradeData { public: static CONST int LEVEL_LENGTH = 11; CGBGradeData(CGBFieldList listCGBField) { GBMeasureArea = listCGBField; for (CGBFieldDataPtr GBFld : listCGBField) { //update the A class grid data GB_GRADE_TYPE levelt = GBFld->GetALevel()->GetThinGrade(); GB_GRADE_TYPE levelw = GBFld->GetALevel()->GetWideGrade(); GB_GRADE_TYPE levels = GBFld->GetALevel()->GetSuperGrade(); ALevel[(int)levelt].AddFld(GBFld); ALevel_w[(int)levelw].AddFld(GBFld); ALevel_s[(int)levels].AddFld(GBFld); //update the B class grid data levelt = GBFld->GetBLevel()->GetThinGrade(); levelw = GBFld->GetBLevel()->GetWideGrade(); levels = GBFld->GetBLevel()->GetSuperGrade(); BLevel[(int)levelt].AddFld(GBFld); BLevel_w[(int)levelw].AddFld(GBFld); BLevel_s[(int)levels].AddFld(GBFld); //update the C class grid data levelt = GBFld->GetCLevel()->GetThinGrade(); levelw = GBFld->GetCLevel()->GetWideGrade(); levels = GBFld->GetCLevel()->GetSuperGrade(); CLevel[(int)levelt].AddFld(GBFld); CLevel_w[(int)levelw].AddFld(GBFld); CLevel_s[(int)levels].AddFld(GBFld); //update the D class grid data levelt = GBFld->GetDLevel()->GetThinGrade(); levelw = GBFld->GetDLevel()->GetWideGrade(); levels = GBFld->GetDLevel()->GetSuperGrade(); DLevel[(int)levelt].AddFld(GBFld); DLevel_w[(int)levelw].AddFld(GBFld); DLevel_s[(int)levels].AddFld(GBFld); //update the DSulfide class grid data levelt = GBFld->GetDSulfideLevel()->GetThinGrade(); levelw = GBFld->GetDSulfideLevel()->GetWideGrade(); levels = GBFld->GetDSulfideLevel()->GetSuperGrade(); DSulfideLevel[(int)levelt].AddFld(GBFld); DSulfideLevel_w[(int)levelw].AddFld(GBFld); DSulfideLevel_s[(int)levels].AddFld(GBFld); } for (CGBFieldDataPtr frame : listCGBField) { auto dsparticles = frame->listDSParticles; for (auto part : dsparticles) { allDSParts.push_back(part); } } } //Definition numbers //use the nXLevel array to memory how many fields in each level. GBGradeCell ALevel[LEVEL_LENGTH]; //nALevelZero, nALevel_0_5, nALevel_1_0, nALevel_1_5, nALevel_2_0, nALevel_2_5, nALevel_3_0, nALevel_3_5, nALevel_4_0, nALevel_4_5, nALevel_5_0 ; GBGradeCell ALevel_w[LEVEL_LENGTH]; //nALevelZero_f, nALevel_0_5_f, nALevel_1_0_f, nALevel_1_5_f, nALevel_2_0_f, nALevel_2_5_f, nALevel_3_0_f, nALevel_3_5_f, nALevel_4_0_f, nALevel_4_5_f, nALevel_5_0_f; GBGradeCell ALevel_s[LEVEL_LENGTH]; GBGradeCell BLevel[LEVEL_LENGTH]; //nBLevelZero, nBLevel_0_5, nBLevel_1_0, nBLevel_1_5, nBLevel_2_0, nBLevel_2_5, nBLevel_3_0, nBLevel_3_5, nBLevel_4_0, nBLevel_4_5, nBLevel_5_0; GBGradeCell BLevel_w[LEVEL_LENGTH]; //nBLevelZero_f, nBLevel_0_5_f, nBLevel_1_0_f, nBLevel_1_5_f, nBLevel_2_0_f, nBLevel_2_5_f, nBLevel_3_0_f, nBLevel_3_5_f, nBLevel_4_0_f, nBLevel_4_5_f, nBLevel_5_0_f; GBGradeCell BLevel_s[LEVEL_LENGTH]; GBGradeCell CLevel[LEVEL_LENGTH]; //nCLevelZero, nCLevel_0_5, nCLevel_1_0, nCLevel_1_5, nCLevel_2_0, nCLevel_2_5, nCLevel_3_0, nCLevel_3_5, nCLevel_4_0, nCLevel_4_5, nCLevel_5_0; GBGradeCell CLevel_w[LEVEL_LENGTH]; //nCLevelZero_f, nCLevel_0_5_f, nCLevel_1_0_f, nCLevel_1_5_f, nCLevel_2_0_f, nCLevel_2_5_f, nCLevel_3_0_f, nCLevel_3_5_f, nCLevel_4_0_f, nCLevel_4_5_f, nCLevel_5_0_f; GBGradeCell CLevel_s[LEVEL_LENGTH]; GBGradeCell DLevel[LEVEL_LENGTH];// nDLevelZero, nDLevel_0_5, nDLevel_1_0, nDLevel_1_5, nDLevel_2_0, nDLevel_2_5, nDLevel_3_0, nDLevel_3_5, nDLevel_4_0, nDLevel_4_5, nDLevel_5_0; GBGradeCell DLevel_w[LEVEL_LENGTH]; //nDLevelZero_f, nDLevel_0_5_f, nDLevel_1_0_f, nDLevel_1_5_f, nDLevel_2_0_f, nDLevel_2_5_f, nDLevel_3_0_f, nDLevel_3_5_f, nDLevel_4_0_f, nDLevel_4_5_f, nDLevel_5_0_f; GBGradeCell DLevel_s[LEVEL_LENGTH]; GBGradeCell DSulfideLevel[LEVEL_LENGTH];// nDLevelZero, nDLevel_0_5, nDLevel_1_0, nDLevel_1_5, nDLevel_2_0, nDLevel_2_5, nDLevel_3_0, nDLevel_3_5, nDLevel_4_0, nDLevel_4_5, nDLevel_5_0; GBGradeCell DSulfideLevel_w[LEVEL_LENGTH]; //nDLevelZero_f, nDLevel_0_5_f, nDLevel_1_0_f, nDLevel_1_5_f, nDLevel_2_0_f, nDLevel_2_5_f, nDLevel_3_0_f, nDLevel_3_5_f, nDLevel_4_0_f, nDLevel_4_5_f, nDLevel_5_0_f; GBGradeCell DSulfideLevel_s[LEVEL_LENGTH]; CGBParticleList allDSParts; private: CGBFieldList GBMeasureArea; }; }