Browse Source

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

zhangjiaxin 2 years ago
parent
commit
8e8bb70d59

BIN
Bin/x64/Debug/Config/SysData/IncSysLib/IncASTDData.db


File diff suppressed because it is too large
+ 551 - 347
OTSCPP/OTSClassifyEngine/InclutionEngine/OTSClassifyEng.cpp


+ 12 - 181
OTSCPP/OTSClassifyEngine/InclutionEngine/OTSClassifyEng.h

@@ -4,163 +4,6 @@
 using namespace OTSDATA;
 namespace OTSClassifyEngine
 {
-	// min sum
-	const double MIN_ELEMENT_SUM = 0.02;
-	const long INC_DEFAULTSIZE = 100;
-	const long INC_ELEMENTSIZE_MIN = 0;
-	const CString STR_CONNECT = _T("-");
-	const CString STR_FE = _T("Fe");
-	const CString STR_C = _T("C");
-	const CString STR_SI = _T("Si");
-	const CString STR_O = _T("O");
-	const CString STR_SUL = _T("S");
-	const CString STR_N = _T("N");
-	const CString STR_CR = _T("Cr");
-	const double SIC_MOLAR_CUTOFF = 85.0;
-	const double FEO_MOLAR_CUTOFF = 85.0;
-
-	// key element
-	const long INC_KEY_ELEMENT_MAX = 4;
-	const double INC_KEY_ELEMENT_CUT_OFF = 0.02;	// weight%
-	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")
-	};
-
-	// sub element
-	const long INC_SUB_ELEMENT_MAX = 12;
-	const double INC_SUB_ELEMENT_CUT_OFF = 0.02;	// weight%
-	const double INC_SUB_ELEMENT_TOTAL_100 = 5.0;	// molar value
-	const CString INC_SUB_ELEMENT_NAMES[INC_SUB_ELEMENT_MAX] =
-	{
-		_T("Mg"),_T("Al"),_T("Si"),_T("Ca"),_T("Ti"),_T("V"),_T("Mn"),_T("Zr"),_T("Nb"),_T("Mo"),_T("Ce"),_T("La")
-	};
-
-	// element 100 % molar value mapping cut off
-	const double ELEMENT_MAPPING_100MOLAR = 2.0;			
-
-	// sulfur classification
-	
-	const double MIN_SUL_MOLAR = ELEMENT_MAPPING_100MOLAR;
-	const double MIN_SUL_SUB_MOLAR = ELEMENT_MAPPING_100MOLAR;
-	const long INC_SUL_SUB_ELEMENT_MAX = 5;
-	const CString INC_SUL_SUB_ELEMENT_NAMES[INC_SUL_SUB_ELEMENT_MAX] =
-	{
-		_T("Mn"),_T("Ca"),_T("Mg"),_T("Ce"),_T("La")
-	};
-	const CString INC_SULFILSES_NAMES[INC_SUL_SUB_ELEMENT_MAX] =
-	{
-		_T("MnS"),_T("CaS"),_T("MgS"),_T("Ce(La)2S3"),_T("Ce(La)2S3")
-	};
-	const double INC_SULFILSES_MAPPING_RATIO[INC_SUL_SUB_ELEMENT_MAX] =
-	{
-		1.0, 1.0, 1.0, 1.5, 1.5
-	};
-	const double SULFIDE_MOLAR_CUTOFF = 5.0;
-	const CString SULFIDE_STR = _T("Sulfide");
-
-	// O classification
-	const long INC_OXIDE_SUB_ELEMENT_MAX = 9;
-	const CString INC_OXIDE_SUB_ELEMENT_NAMES[INC_OXIDE_SUB_ELEMENT_MAX] =
-	{
-		_T("Al"),_T("Mg"),_T("Si"),_T("Mn"),_T("Ca"),_T("Ce"),_T("Cr"),_T("Ti"),_T("La")
-	};
-	const CString INC_OXIDE_NAMES[INC_OXIDE_SUB_ELEMENT_MAX] =
-	{
-		_T("Al2O3"),_T("MgO"),_T("SiO2"),_T("MnO"),_T("CaO"),_T("CeO"),_T("Oxide"),_T("Oxide"),_T("REOxide")
-	};
-	const double SIMPLE_OXIDE_MOLAR_CUTOFF = 90.0;
-	const long REOXIDE_KEY_ELEMENT_MAX = 2;
-	const CString REOXIDE_KEY_ELEMENT_NAMES[REOXIDE_KEY_ELEMENT_MAX] =
-	{
-		_T("Ce"),_T("La")
-	};
-	const CString REOXIDE_STR = _T("REOxide");
-	const long REALOXIDE_SUB_ELEMENT_MAX = 2;
-	const CString REALOXIDE_SUB_ELEMENT_NAMES[REALOXIDE_SUB_ELEMENT_MAX] =
-	{
-		_T("Si"),_T("Al")
-	};
-	const double REALOXIDE_ELEMELTS_MOLAR_CUTOFF = 90.0;
-	const CString REALOXIDE_STR = _T("REAlOxide");
-
-	const long SPINEL_KEY_ELEMENT_MAX = 2;
-	const double REALOXIDE_ELEMENT_MOLAR_LOW_CUTOFF = 20;
-	const CString SPINEL_KEY_ELEMENT_NAMES[SPINEL_KEY_ELEMENT_MAX] =
-	{
-		_T("Mg"),_T("Al")
-	};
-	const double SPINEL_KEY_ELEMENT_MOLAR_TOTAL = 90.0; 
-	const double SPINEL_ELEMENT_RATIO_MIN = 1.6; 
-	const double SPINEL_ELEMENT_RATIO_MAX = 2.4; 
-	const CString SPINEL_STR = _T("Spinel");
-
-	const CString SILICATE_KEY_ELEMENT_NAME = _T("Si");
-	const double SILICATE_KEY_ELEMENT_MOLAR_TOTAL_MIN = 10.0;
-	const double SILICATE_KEY_ELEMENT_MOLAR_TOTAL_MAX = 90.0;
-	const CString SILICATE_STR = _T("Silicate");
-	const long ALUMINATE_KEY_ELEMENT_MAX = 2;
-	const CString ALUMINATE_KEY_ELEMENT_NAME[ALUMINATE_KEY_ELEMENT_MAX] =
-	{
-	  _T("Al"),_T("Ca")
-	};
-	const double ALUMINAT_KEY_ELEMENT_MOLAR_TOTAL_MIN = 10.0;
-	const double ALUMINAT_KEY_ELEMENT_MOLAR_TOTAL_MAX = 90.0;
-	const CString ALUMINATE12CaO_7Al2O3_STR = _T("12CaO-7Al2O3");
-	const CString ALUMINATE3CaO_Al2O3_STR = _T("3CaO-Al2O3");
-	const CString ALUMINATE_STR = _T("Aluminate");
-	const CString Ca_ALUMINATE_STR = _T("Ca-Aluminate");
-
-	const CString STR_OXIDE = _T("O");
-	const double MIN_OXIDE_MOLAR = 5.0;
-	const double MIN_OXIDE_SUB_MOLAR_TOTAL = 5.0;
-	const double MIN_OXIDE_SUB_MOLAR_CUTOFF = ELEMENT_MAPPING_100MOLAR;
-	const CString OXIDE_STR = _T("Oxide");
-
-	// nitrogen classification
-	const long INC_NITR_SUB_ELEMENT_MAX = 8;
-	const CString INC_NITR_SUB_ELEMENT_NAMES[INC_NITR_SUB_ELEMENT_MAX] =
-	{
-		_T("Ti"),_T("V"),_T("Nb"),_T("Al"),_T("Zr"),_T("Cr"),_T("La"),_T("Ce")
-	};
-	const CString INC_NITR_NAMES[INC_NITR_SUB_ELEMENT_MAX] =
-	{
-		_T("TiN"),_T("VN"),_T("NbN"),_T("AlN"),_T("Nitride"),_T("Nitride"),_T("Nitride"),_T("Nitride")
-	};
-	const double INC_NITR_MAPPING_RATIO[INC_NITR_SUB_ELEMENT_MAX] =
-	{
-		1.0, 1.0, 1.0, 1.0, 1.0, 2.0, 1.0, 1.0
-	};
-	const CString STR_NITR = _T("N");
-	const CString STR_Nb = _T("Nb");
-	const double MIN_NITR_MOLAR = ELEMENT_MAPPING_100MOLAR;
-	const double MIN_NITR_SUB_MOLAR = ELEMENT_MAPPING_100MOLAR;
-	const double NITRIDE_MOLAR_CUTOFF = 5.0;
-	const CString NITRIDE_STR = _T("Nitride");
-
-#pragma region ÐÂÌí¼ÓµÄ̼ÄÚÈÝ
-	// carbon classification
-	const long INC_CAR_SUB_ELEMENT_MAX = 1;
-	const CString INC_CAR_SUB_ELEMENT_NAMES[INC_CAR_SUB_ELEMENT_MAX] =
-	{
-		_T("Nb")
-	};
-	const CString INC_CAR_NAMES[INC_CAR_SUB_ELEMENT_MAX] =
-	{
-		_T("NbC")
-	};
-	const double INC_CAR_MAPPING_RATIO[INC_CAR_SUB_ELEMENT_MAX] =
-	{
-		1.0
-	};
-	const CString STR_CAR = _T("C");
-	const double MIN_CAR_MOLAR = ELEMENT_MAPPING_100MOLAR;
-	const double MIN_CAR_SUB_MOLAR = ELEMENT_MAPPING_100MOLAR;
-	const double CARBON_MOLAR_CUTOFF = 5.0;
-	const CString CARBON_STR = _T("Carbon");
-#pragma endregion
-
 	typedef enum class __declspec(dllexport) INC_CLASSIFY_TYPE
 	{
 		INVALID = -1,
@@ -175,19 +18,6 @@ namespace OTSClassifyEngine
 		MAX = 7
 	} INC_CLASSIFY_TYPE;
 
-	typedef enum class __declspec(dllexport) INC_COMMON_CLASSIFY_TYPE
-	{
-		INVALID = -1,
-		MIN = 0,
-		SULFIDE_OXIDE = 0,
-		OXIDE = 1,
-		SULFIDE = 2,
-		NITRIDE = 3,
-		SPINEL = 4,
-		CARBON = 5,
-		MAX = 5
-	} INC_COMMON_CLASSIFY_TYPE;
-
 	class __declspec(dllexport) COTSClassifyEng
 	{
 	public:
@@ -199,10 +29,8 @@ namespace OTSClassifyEngine
 
 		
 		// check if the x-ray is an inc x-ray
-		 BOOL IsAnValidIncXRay( CElementChemistriesList& a_listElementChemistries, 
-								 CElementChemistriesList& a_listElChemsInc, 
-								 CElementChemistriesList& a_listElChemsIncNoFe, 
-								 double& a_dMolarSum,
+		 BOOL FilterInvalidIncXRay( CElementChemistriesList a_listElementChemistries,							
+								 CElementChemistriesList& a_listElChemsIncNoFe,							
 								 double& a_dMolarSumNoFe,
 			OTS_PARTICLE_TYPE& a_nIncId,NOT_INCLUTION_ID& notIncId);
 
@@ -241,13 +69,6 @@ namespace OTSClassifyEngine
 			double a_dMolarSumNoFe,
 			int& a_nIncId);
 
-
-		// user STD items classification
-		/* BOOL UserClassify(
-								  CElementChemistriesList& a_listEltChemsInc,
-								  double a_dSum,
-								  int& a_nIncId);*/
-
 		// nominate element chemistries list 
 		 BOOL NomiNateElChemsList( CElementChemistriesList& a_listElChemsInc, 
 										 CElementChemistriesList& a_listNomiElChemsInc);
@@ -306,5 +127,15 @@ namespace OTSClassifyEngine
 		//CSTDItemsList listUserSTD;
 		// get classify STD items
 		BOOL GetClassifySTDItem(CInclutionSTDDataPtr a_pPartSTDDataPtr, INC_CLASSIFY_TYPE a_nClassifyType, CSTDItemsList& a_listSTDItems);
+		BOOL GetSulfildeOxideComplexItemId(CElementChemistriesList& a_listElChemsIncNoFe,
+			double a_dMolarSumNoFe, CString strSulfideBaseName,
+			int& nIncId);
+		BOOL GetSulfildeNitrideComplexItemId(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);
 	};
 }   

+ 39 - 1
OTSIncAMeasureApp/BaseFunctionTest.Designer.cs

@@ -30,6 +30,9 @@ namespace OTSMeasureApp
         private void InitializeComponent()
         {
             this.button1 = new System.Windows.Forms.Button();
+            this.label1 = new System.Windows.Forms.Label();
+            this.button2 = new System.Windows.Forms.Button();
+            this.label2 = new System.Windows.Forms.Label();
             this.SuspendLayout();
             // 
             // button1
@@ -38,24 +41,59 @@ namespace OTSMeasureApp
             this.button1.Name = "button1";
             this.button1.Size = new System.Drawing.Size(130, 24);
             this.button1.TabIndex = 0;
-            this.button1.Text = "ClassificationTest";
+            this.button1.Text = "silicate-MnS";
             this.button1.UseVisualStyleBackColor = true;
             this.button1.Click += new System.EventHandler(this.button1_Click);
             // 
+            // label1
+            // 
+            this.label1.AutoSize = true;
+            this.label1.Location = new System.Drawing.Point(192, 31);
+            this.label1.Name = "label1";
+            this.label1.Size = new System.Drawing.Size(47, 12);
+            this.label1.TabIndex = 1;
+            this.label1.Text = "Result1";
+            // 
+            // button2
+            // 
+            this.button2.Location = new System.Drawing.Point(47, 70);
+            this.button2.Name = "button2";
+            this.button2.Size = new System.Drawing.Size(130, 22);
+            this.button2.TabIndex = 2;
+            this.button2.Text = "MnS-TiN";
+            this.button2.UseVisualStyleBackColor = true;
+            this.button2.Click += new System.EventHandler(this.button2_Click);
+            // 
+            // label2
+            // 
+            this.label2.AutoSize = true;
+            this.label2.Location = new System.Drawing.Point(192, 75);
+            this.label2.Name = "label2";
+            this.label2.Size = new System.Drawing.Size(47, 12);
+            this.label2.TabIndex = 3;
+            this.label2.Text = "Result2";
+            // 
             // BaseFunctionTest
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
             this.ClientSize = new System.Drawing.Size(800, 450);
+            this.Controls.Add(this.label2);
+            this.Controls.Add(this.button2);
+            this.Controls.Add(this.label1);
             this.Controls.Add(this.button1);
             this.Name = "BaseFunctionTest";
             this.Text = "BaseFunctionTest";
             this.ResumeLayout(false);
+            this.PerformLayout();
 
         }
 
         #endregion
 
         private System.Windows.Forms.Button button1;
+        private System.Windows.Forms.Label label1;
+        private System.Windows.Forms.Button button2;
+        private System.Windows.Forms.Label label2;
     }
 }

+ 33 - 0
OTSIncAMeasureApp/BaseFunctionTest.cs

@@ -29,10 +29,21 @@ namespace OTSMeasureApp
             eles.Add(GetEleChem("C", 5.51));
             eles.Add(GetEleChem("Si", 4.06));
             eles.Add(GetEleChem("Al", 2.34));
+
+
+
+            //eles.Add(GetEleChem("Mn", 15.92));
+            //eles.Add(GetEleChem("S", 10.73));
+
+            //eles.Add(GetEleChem("C", 13.26));
+            //eles.Add(GetEleChem("Ti", 40.06));
+            //eles.Add(GetEleChem("N", 20.03));
             var xray = part.GetXray();
             xray.SetElementQuantifyData(eles);
             part.SetXray(xray);
             engine.Classify(part, 1);
+            label1.Text = part.GetTypeName();
+
         }
         private CElementChemistryClr GetEleChem(string name, double percent)
         {
@@ -42,5 +53,27 @@ namespace OTSMeasureApp
             ele.SetPercentage(percent);
             return ele;
         }
+
+        private void button2_Click(object sender, EventArgs e)
+        {
+            COTSClassifyEngineClr engine = new COTSClassifyEngineClr(EngineType.InclutionEng, "NoSTDDB");
+            COTSParticleClr part = new COTSParticleClr();
+            List<CElementChemistryClr> eles = new List<CElementChemistryClr>();
+
+
+
+
+            eles.Add(GetEleChem("Mn", 15.92));
+            eles.Add(GetEleChem("S", 10.73));
+
+            eles.Add(GetEleChem("C", 13.26));
+            eles.Add(GetEleChem("Ti", 40.06));
+            eles.Add(GetEleChem("N", 20.03));
+            var xray = part.GetXray();
+            xray.SetElementQuantifyData(eles);
+            part.SetXray(xray);
+            engine.Classify(part, 1);
+            label2.Text = part.GetTypeName();
+        }
     }
 }

+ 6 - 3
OTSIncAReportApp/2-CommonFunction/CommonClass/DisplayField.cs

@@ -35,7 +35,7 @@ namespace OTSIncAReportGraph
         private Color m_color;
         private GraphicsPath m_GPath;
         private Bitmap m_originalImage;
-
+        const int INVALIDPARTICLE= -1;
         /// <summary>
         /// 构造函数
         /// </summary>
@@ -60,8 +60,11 @@ namespace OTSIncAReportGraph
             //再循环计算所有的Particle对象
             foreach (Particle particle in list_particle)
             {
-
-
+                //分布图排列图无效颗粒不显示
+                if (particle.TypeId == INVALIDPARTICLE)
+                {
+                    continue;
+                }
                 //创建DParticle颗粒
                 DisplayParticle dp = new DisplayParticle(particle);
 

Some files were not shown because too many files changed in this diff