using OTSCLRINTERFACE; using System.Collections.Generic; namespace OTSModelSharp { //public double DEFAULT_RADIO = 1.0; using CMsrResultItemsList = List; 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 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 GetResultItems() { return m_listResultItems; } public void SetResultItems(List 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()); 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); } } } }