123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 |
-
- using OTSCLRINTERFACE;
- using OTSIncAReportApp.DataOperation.Model;
- using OTSIncAReportApp.SysMgrTools;
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Drawing;
- using System.Linq;
- namespace OTSIncAReportGrids.OTSIncAReportGridsFuncation
- {
- public class OTSIncAReportGridsFun
- {
- #region 枚举定义
- ////切换窗体枚举定义
-
- #endregion
- #region 定义变量
- //电镜设置对象
- public OTSCLRINTERFACE.COTSControlFunExport m_cfun = null;
- //为了加快颗粒列表抠图的速度,这里保存一个全局变量
- public List<Field> m_list_COTSFieldMgrClr = null;
- //是否已经连接到了电镜
- public bool m_SEMConnectionState = false;
- //连接到电镜的ID号
- public int m_SEM_ID = 0;
- //国际化
- Language lan = new Language();
- Hashtable table;
- OTSIncAReportApp.frmReportApp m_frmReportApp = null;
- //public COTSControlFunExport m_cfun = null;
- #endregion
- #region 构造函数
- /// <summary>
- /// 需传入,主窗体对象,与要获取数据窗体的对象
- /// </summary>
- /// <param name="in_frmReportApp"></param>
- /// <param name="form"></param>
- public OTSIncAReportGridsFun(OTSIncAReportApp.frmReportApp in_frmReportApp, System.Windows.Forms.UserControl form)
- {
- //国际化
- lan = new Language(form);
- table = lan.GetNameTable(form.Name);
- m_frmReportApp = in_frmReportApp;
- m_cfun = OTSCLRINTERFACE.COTSControlFunExport.GetControllerInstance();//重新new一下试试呢,不new不好使 It's better to reinitialize, but it's not good to uninitialize
- }
- #endregion
- #region 自定义方法封装
- /// <summary>
- /// 传入颗粒的tagid和fieldid,来获取该颗粒下对应的xray数据
- /// </summary>
- /// <param name="in_clr_tagid"></param>
- /// <param name="in_clr_fieldid"></param>
- /// <param name="Search_xray"></param>
- /// <param name="Analysis_xray"></param>
- public void GetXrayByParticleTagIDAndFieldID_ForDrawDistrbutionImageAndBSE(int in_clr_tagid, int in_clr_fieldid, out uint[] Search_xray, out uint[] Analysis_xray, out int xray_id, out List<Element> list_celementchemistryclr)
- {
- Search_xray = new uint[2000];
- Analysis_xray = new uint[2000];
- xray_id = 0;
- list_celementchemistryclr = new List<Element>();
- //防止为空校验判断
- if (m_list_COTSFieldMgrClr == null)
- return;
- Particle particle = m_list_COTSFieldMgrClr.Find(x => x.FieldID == in_clr_fieldid).ParticleList.Find(x => x.ParticleId == in_clr_tagid);
- if (particle.XrayId > -1)
- {
- for (int i = 0; i < 2000; i++)
- {
- Analysis_xray[i] = BitConverter.ToUInt32(particle.XRayData, i * 4);
- }
- Search_xray = Analysis_xray;
- xray_id = particle.XrayId;
- list_celementchemistryclr = particle.ElementList;
- }
- }
- /// <summary>
- /// 临时创建一个用于组建particle类的小segment类结构
- /// </summary>
- class ShowSegment
- {
- Rectangle m_rect = new Rectangle();
- List<Color> m_list_color = new List<Color>();
- public Rectangle Rect
- {
- get { return m_rect; }
- set { m_rect = value; }
- }
- public List<Color> List_Color
- {
- get { return m_list_color; }
- set { m_list_color = value; }
- }
- /// <summary>
- /// 传入showsegment的list对象列表,返回从该对象列表计算出的外边rect矩形[目前宽度计算错误]
- /// </summary>
- /// <param name="in_list_showsegment"></param>
- /// <returns></returns>
- public Rectangle GetRectByListRectangle(List<ShowSegment> in_list_showsegment)
- {
- int x = 10000, y = 10000;
- int width = 0, height = 0;
- for (int i = 0; i < in_list_showsegment.Count(); i++)
- {
- if (x > in_list_showsegment[i].Rect.X)
- x = in_list_showsegment[i].Rect.X;
- if (y > in_list_showsegment[i].Rect.Y)
- y = in_list_showsegment[i].Rect.Y;
- if (width < in_list_showsegment[i].Rect.X + in_list_showsegment[i].Rect.Width)
- width = in_list_showsegment[i].Rect.X + in_list_showsegment[i].Rect.Width;
- if (height < in_list_showsegment[i].Rect.Height)
- height = in_list_showsegment[i].Rect.Height;
- }
- width = width - x;//计算时已增加了x在里面,计算完成后,再将x的值去掉
- //height就是线的数量
- return new Rectangle(x, y, width + 3, in_list_showsegment.Count() + 3);
- }
- }
- #endregion
- #region 连接电镜相关
- /// <summary>
- /// 连接电镜,颗粒列表使用
- /// </summary>
- public void Connection_ForParticlesGrid()
- {
- if (m_cfun == null)
- {
- m_cfun = COTSControlFunExport.GetControllerInstance();
- }
-
- if (!m_SEMConnectionState)
- {
-
- m_SEMConnectionState = m_cfun.ConncetSem();
-
- }
-
- }
- /// <summary>
- /// 移动电镜到指定的X,Y坐标上,R坐标使用原先的值进行移动
- /// </summary>
- /// <param name="PositionX"></param>
- /// <param name="PositionY"></param>
- public void MoveSemToPointXY_ForParticlesGrid(double in_PositionX, double in_PositionY)
- {
- //首先获取电镜当前的位置,并记录原R值
- double ls_PositionX = 0;
- double ls_PositionY = 0;
- double ls_PositionR = 0;
- if (m_SEMConnectionState)
- {
- m_cfun.GetSemPositionXY(ref ls_PositionX, ref ls_PositionY, ref ls_PositionR);
- }
-
- if (m_SEMConnectionState)
- {
- m_cfun.MoveSEMToPoint(in_PositionX, in_PositionY, ls_PositionR);
- }
-
- }
- /// <summary>
- /// 断开电镜连接
- /// </summary>
- public void DisConnectSEM_ForParticlesGrid()
- {
- m_cfun.DisconnectSem();
- //if (m_cfun.DisConnectSem() == true)
- m_SEMConnectionState = false;
- }
- #endregion
- #region 获取数据_测量结果概况
- #endregion
- #region 保留国标Clr部份代码
- #endregion
- }
- }
|