|
@@ -0,0 +1,242 @@
|
|
|
+using OTSCLRINTERFACE;
|
|
|
+using OTSDataType;
|
|
|
+using System;
|
|
|
+using System.Collections.Generic;
|
|
|
+using System.Linq;
|
|
|
+using System.Text;
|
|
|
+using System.Threading.Tasks;
|
|
|
+namespace OTSModelSharp
|
|
|
+{
|
|
|
+ //public double DEFAULT_RADIO = 1.0;
|
|
|
+ using CMsrResultItemsList = List<CMsrResultItem>;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public class CMsrResultItem
|
|
|
+ { // Type ID
|
|
|
+ private int m_nTypeId;
|
|
|
+ // area (micros)
|
|
|
+ private double m_nArea;
|
|
|
+ // particle number
|
|
|
+ private System.UInt32 m_nNumber;
|
|
|
+ private string m_sName;
|
|
|
+ //---------------------public----------------------
|
|
|
+ public CMsrResultItem()//constructor
|
|
|
+ {
|
|
|
+ Init();
|
|
|
+ }
|
|
|
+ public CMsrResultItem(CMsrResultItem a_oSource)
|
|
|
+ {
|
|
|
+
|
|
|
+ Duplicate(a_oSource);
|
|
|
+ }
|
|
|
+
|
|
|
+ public bool Equals(CMsrResultItem a_oSource)
|
|
|
+ {
|
|
|
+ return m_nTypeId == a_oSource.m_nTypeId &&
|
|
|
+ m_nArea == a_oSource.m_nArea &&
|
|
|
+ m_nNumber == a_oSource.m_nNumber&&
|
|
|
+ m_sName == a_oSource.m_sName;
|
|
|
+ }
|
|
|
+ //serialization
|
|
|
+ // Type ID
|
|
|
+ public int GetTypeId()
|
|
|
+ {
|
|
|
+ return m_nTypeId;
|
|
|
+ }
|
|
|
+ public void SetTypeId(int a_nTypeId)
|
|
|
+ {
|
|
|
+ m_nTypeId = a_nTypeId;
|
|
|
+ }
|
|
|
+ // area (micros)
|
|
|
+ public double GetArea()
|
|
|
+ {
|
|
|
+ return m_nArea;
|
|
|
+ }
|
|
|
+ public void SetArea(double a_nArea)
|
|
|
+ {
|
|
|
+ m_nArea = a_nArea;
|
|
|
+ }
|
|
|
+ // particle number
|
|
|
+ public System.UInt32 GetNumber()
|
|
|
+ {
|
|
|
+ return m_nNumber;
|
|
|
+ }
|
|
|
+ public void SetNumber(System.UInt32 a_nNumber)
|
|
|
+ {
|
|
|
+ m_nNumber = a_nNumber;
|
|
|
+ }
|
|
|
+ public string GetName()
|
|
|
+ {
|
|
|
+ return m_sName;
|
|
|
+ }
|
|
|
+ public void SetName(string val)
|
|
|
+ {
|
|
|
+ m_sName = val;
|
|
|
+ }
|
|
|
+ //---------------------protected---------------------
|
|
|
+ // initialization
|
|
|
+ protected void Init()
|
|
|
+ {
|
|
|
+ m_nTypeId = -1;
|
|
|
+ m_nArea = 0;
|
|
|
+ m_nNumber = 0;
|
|
|
+ m_sName = "";
|
|
|
+ }
|
|
|
+ //duplication
|
|
|
+ protected void Duplicate(CMsrResultItem a_oSource)
|
|
|
+ {
|
|
|
+ // initialization
|
|
|
+ Init();
|
|
|
+ // copy data over
|
|
|
+ m_nTypeId = a_oSource.m_nTypeId;
|
|
|
+ m_nArea = a_oSource.m_nArea;
|
|
|
+ m_nNumber = a_oSource.m_nNumber;
|
|
|
+ m_sName = a_oSource.m_sName;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // CMsrResults command target
|
|
|
+ public class CMsrResultItems
|
|
|
+ {
|
|
|
+ public double DEFAULT_RADIO = 1.0;
|
|
|
+ // radio
|
|
|
+ double m_dRadio;
|
|
|
+ // measured area (micros)
|
|
|
+ double m_nMeasuredArea;
|
|
|
+ // result items list
|
|
|
+ List<CMsrResultItem> m_listResultItems;
|
|
|
+
|
|
|
+ //-----------------public-----------------
|
|
|
+ public CMsrResultItems()
|
|
|
+ {
|
|
|
+ // initialization
|
|
|
+ Init();
|
|
|
+ }
|
|
|
+ public CMsrResultItems(CMsrResultItems a_oSource)
|
|
|
+ {
|
|
|
+ // copy data over
|
|
|
+ Duplicate(a_oSource);
|
|
|
+ }
|
|
|
+
|
|
|
+ public double GetRatio()
|
|
|
+ {
|
|
|
+ return m_dRadio;
|
|
|
+ }
|
|
|
+ public void SetRatio(double a_dRadio)
|
|
|
+ {
|
|
|
+ m_dRadio = a_dRadio;
|
|
|
+ }
|
|
|
+ // measured area (micros)
|
|
|
+ public double GetMeasuredArea()
|
|
|
+ {
|
|
|
+ return m_nMeasuredArea;
|
|
|
+ }
|
|
|
+ public void SetMeasuredArea(double a_nMeasuredArea)
|
|
|
+ {
|
|
|
+ m_nMeasuredArea = a_nMeasuredArea;
|
|
|
+ }
|
|
|
+ public void CumulateMeasuredArea(double a_nMeasuredArea)
|
|
|
+ {
|
|
|
+ m_nMeasuredArea += a_nMeasuredArea;
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<CMsrResultItem> GetResultItems()
|
|
|
+ {
|
|
|
+ return m_listResultItems;
|
|
|
+ }
|
|
|
+ public void SetResultItems(List<CMsrResultItem> a_listResultItems)
|
|
|
+ {
|
|
|
+ // set results item list
|
|
|
+ m_listResultItems.Clear();
|
|
|
+ foreach (CMsrResultItem poResultItem in a_listResultItems)
|
|
|
+ {
|
|
|
+ CMsrResultItem cMsrResultItem = poResultItem;
|
|
|
+ m_listResultItems.Add(cMsrResultItem);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ public double GetTotalParticleArea()
|
|
|
+ {
|
|
|
+ double nArea = 0;
|
|
|
+ foreach (CMsrResultItem poResultItem in m_listResultItems)
|
|
|
+ {
|
|
|
+ nArea += poResultItem.GetArea();
|
|
|
+ }
|
|
|
+ return nArea;
|
|
|
+ }
|
|
|
+
|
|
|
+ public System.UInt32 GetTotalParticleNumber()
|
|
|
+ {
|
|
|
+ System.UInt32 nParticleNum = 0;
|
|
|
+ foreach (CMsrResultItem poResultItem in m_listResultItems)
|
|
|
+ {
|
|
|
+ nParticleNum += poResultItem.GetNumber();
|
|
|
+ }
|
|
|
+ return nParticleNum;
|
|
|
+ }
|
|
|
+
|
|
|
+ // cumulate measure results
|
|
|
+ public void CumulateMeasureResult(COTSParticleClr a_poResultItem)
|
|
|
+ {
|
|
|
+
|
|
|
+ var itr= m_listResultItems.Find((item) => { return a_poResultItem.GetClassifyId() == item.GetTypeId(); });
|
|
|
+ if (itr != null)
|
|
|
+ {
|
|
|
+
|
|
|
+ itr.SetArea(a_poResultItem.GetActualArea() + itr.GetArea());
|
|
|
+ itr.SetNumber(itr.GetNumber() + 1);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ CMsrResultItem pMsrResultItem = new CMsrResultItem();
|
|
|
+ pMsrResultItem.SetTypeId(a_poResultItem.GetClassifyId());
|
|
|
+
|
|
|
+ pMsrResultItem.SetArea(a_poResultItem.GetActualArea() + 0.5);
|
|
|
+ pMsrResultItem.SetNumber(1);
|
|
|
+ pMsrResultItem.SetName(a_poResultItem.GetTypeName());
|
|
|
+ m_listResultItems.Add(pMsrResultItem);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ //-----------------protected---------------
|
|
|
+ protected bool GetID (CMsrResultItem poResultItem ,int a_TypeId)
|
|
|
+ {
|
|
|
+ if (poResultItem.GetTypeId() == a_TypeId)
|
|
|
+ {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // initialization
|
|
|
+ protected void Init()
|
|
|
+ {
|
|
|
+ m_dRadio = DEFAULT_RADIO;
|
|
|
+ m_nMeasuredArea = 0;
|
|
|
+ if (m_listResultItems != null)
|
|
|
+ {
|
|
|
+ m_listResultItems.Clear();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ m_listResultItems = new CMsrResultItemsList();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // duplication
|
|
|
+ protected void Duplicate(CMsrResultItems a_oSource)
|
|
|
+ {
|
|
|
+ // initialization
|
|
|
+ Init();
|
|
|
+ // copy data over
|
|
|
+ m_dRadio = a_oSource.m_dRadio;
|
|
|
+ m_nMeasuredArea = a_oSource.m_nMeasuredArea;
|
|
|
+ foreach (CMsrResultItem poResultItem in a_oSource.m_listResultItems)
|
|
|
+ {
|
|
|
+ CMsrResultItem cMsrResultItem = poResultItem;
|
|
|
+ m_listResultItems.Add(cMsrResultItem);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|