Browse Source

add new function: classify particles on molar percentage in the expression classify mode.

gsp 1 year ago
parent
commit
546497cd46

+ 1 - 1
Bin/x64/Debug/Config/ProData/HardwareConfig.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <XMLData PathName="HardwareConfig.xml" ID="1">
   <Member RegName="SemControllerName" Value="OffLine" ImageInputSources="SE" />
-  <Member RegName="EDSName" Value="OffLine" DelayQuantify="true" />
+  <Member RegName="EDSName" Value="OffLine" DelayQuantify="true" WeightPercentageToAtomicPercentage="false"/>
   <Member RegName="BrukerDllVersion" Version="Bruker.API.Esprit64.dll" />
   <Member RegName="FEIIP" Value="192.168.0.1" />
   <Member RegName="FEIPORT" Value="7520" />

+ 2 - 0
OTSCPP/OTSData/Element.h

@@ -104,6 +104,8 @@ namespace OTSDATA
 		double GetMolarPercentage();
 		void SetMolarPercentage(double a_dMolarPer);
 
+		
+
 	protected:
 
 		// cleanup 

+ 22 - 1
OTSIncAMeasureApp/ServiceCenter/CClassifyEngine.cs

@@ -14,7 +14,7 @@ namespace OTSModelSharp.ServiceCenter
    public class CClassifyEngine : IClassifyEngine
     {
         COTSClassifyEngineClr myEng;
-        
+        bool ifWeightPercentageToAtomicPercentage;
 
         public bool ClassifyIncA(COTSParticleClr particle, int steelTech)
         {
@@ -48,6 +48,9 @@ namespace OTSModelSharp.ServiceCenter
                 libName = libName + ".db";
             }
             myEng = new COTSClassifyEngineClr(EngineType.ExpressionClassifyEng, libName);
+            ifWeightPercentageToAtomicPercentage = FileHelper.GetIfTranslateWeightPercentageToAtomicPercentage();
+
+
             return this;
         }
 
@@ -68,6 +71,24 @@ namespace OTSModelSharp.ServiceCenter
 
         public bool ClassifyByExpression(COTSParticleClr particle)
         {
+            if (ifWeightPercentageToAtomicPercentage==true)
+            {
+                double sumMolar=0;
+
+                foreach (var ele in particle.GetXray().GetElementQuantifyData())
+                {
+                    sumMolar += ele.GetMolarPercentage();
+                
+                }
+                foreach (var ele in particle.GetXray().GetElementQuantifyData())
+                {
+                    ele.SetPercentage(ele.GetMolarPercentage() / sumMolar);
+
+                }
+
+            }
+
+
             return myEng.ClassifyByExpression(particle);
         }
     }

+ 46 - 0
OTSIncAMeasureApp/ServiceCenter/FileHelper.cs

@@ -117,6 +117,52 @@ namespace OTSModelSharp.ServiceCenter
                 return "false";
             }
         }
+        public static bool GetIfTranslateWeightPercentageToAtomicPercentage()
+        {
+            try
+            {
+                XmlDocument doc;
+                string value = string.Empty;
+                if (Hardwareconfigdoc == null)
+                {
+                    string xmlFilePath = System.Configuration.ConfigurationManager.ConnectionStrings["XMLFileName"].ConnectionString;
+
+
+                    Hardwareconfigdoc = new XmlDocument();
+
+                    Hardwareconfigdoc.Load(xmlFilePath);    //加载Xml文件 
+                    doc = Hardwareconfigdoc;
+
+                }
+                else
+                {
+                    doc = Hardwareconfigdoc;
+                }
+
+
+                XmlElement root = doc.DocumentElement;   //获取根节点  
+
+                XmlNodeList mainNodes = root.GetElementsByTagName("Member"); //获取子节点集合  
+
+                foreach (XmlNode node in mainNodes)
+                {
+                    //获取Name属性值
+                    string name = ((XmlElement)node).GetAttribute("RegName");
+                    if (name.Equals("EDSName"))
+                    {
+
+                        value = ((XmlElement)node).GetAttribute("WeightPercentageToAtomicPercentage");
+
+                        break;
+                    }
+                }
+                return Convert.ToBoolean(value);
+            }
+            catch (Exception)
+            {
+                return false;
+            }
+        }
         public static string GetOxfordInputSourceType()
         {
             try