public override void Close()
 {
     try
     {
         base.Close();
         MCreateShapeModel.Close();
         MCreateShapeModel = null;
         MFindShapeMode.Close();
         MFindShapeMode = null;
         MGrabPointSetting.Close();
         MGrabPointSetting = null;
         MPZT_Detection.Close();
         MPZT_Detection = null;
         MGrab_Intervene.Close();
         MGrab_Intervene = null;
         MLM_DP.Close();
         MLM_DP = null;
         MFangDai.Close();
         MFangDai = null;
         MLanQuan.Close();
         MLanQuan      = null;
         NotifyExcInfo = null;
     }
     catch (Exception ex)
     {
         Util.WriteLog(this.GetType(), ex);
         Util.Notify("工具删除异常");
     }
 }
 //序列化
 public override void SerializeCheck()
 {
     NotifyExcInfo = null;
     MCreateShapeModel.SerializeCheck();
     MFindShapeMode.SerializeCheck();
     MGrabPointSetting.SerializeCheck();
     using (Stream objectStream = new MemoryStream())
     {
         System.Runtime.Serialization.IFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
         formatter.Serialize(objectStream, this);
     }
 }
        public void SetGrabPoint(double x, double y)
        {
            //转换camera 、 projection
            MGrabPointSetting.X = x;
            MGrabPointSetting.Y = y;
            HTuple Cx, Cy, Cz, homMat3d;

            HOperatorSet.PoseToHomMat3d(worldPose, out homMat3d);
            HOperatorSet.AffineTransPoint3d(homMat3d, x, y, 0, out Cx, out Cy, out Cz);
            HTuple row, column;

            HOperatorSet.Project3dPoint(Cx, Cy, Cz, cameraParam, out row, out column);
            MGrabPointSetting.SetGrabPoint(row.D, column.D);
        }
        public override void ShowResult(HWndCtrl viewCtrl)
        {
            if (!bFindShapeMode)
            {
                return;
            }
            if (MFindShapeMode.row == null || MFindShapeMode.row.Length < 1)
            {
                return;
            }
            if (RuningFinish == false)
            {
                return;
            }
            MFindShapeMode.ShowResult(viewCtrl);
            if (bGrabPointSetting)
            {
                MGrabPointSetting.ShowGrabPoint(viewCtrl);
            }

            if (bFangDai_Enable && bFangDai_Result)
            {
                MFangDai.Show(viewCtrl);
            }

            if (NotifyExcInfo != null)
            {
                string temp = GetSendResult();
                NotifyExcInfo("发送结果:" + temp);
            }

            if (row_Send != null && row_Send.Length > 0)
            {
                for (int i = 0; i < row_Send.Length; i++)
                {
                    if (id_Send[i].I == 1)
                    {
                        viewCtrl.AddText("OK", (int)(row_Send[i].D), (int)(col_Send[i].D), 80, "green");
                    }
                    else
                    {
                        viewCtrl.AddText("NG", (int)(row_Send[i].D), (int)(col_Send[i].D), 80, "green");
                    }
                }
            }
        }
        public override void ShowResult(HWndCtrl viewCtrl)
        {
            if (!bFindShapeMode)
            {
                return;
            }
            if (MFindShapeMode.row == null || MFindShapeMode.row.Length < 1)
            {
                return;
            }
            if (RuningFinish == false)
            {
                return;
            }
            MFindShapeMode.ShowResult(viewCtrl);
            if (bGrabPointSetting)
            {
                MGrabPointSetting.ShowGrabPoint(viewCtrl);
            }
            if (bPZT_Detection_Result && bPZT_Detection_Enble)
            {
                MPZT_Detection.Show(viewCtrl);
            }

            if (bLM_DP_Enble && bLM_DP_Result)
            {
                MLM_DP.Show(viewCtrl);
            }

            if (bGrab_Intervene_Result && bGrab_Intervene_Enble)
            {
                MGrab_Intervene.Show(viewCtrl);
            }
            if (bFangDai_Enable && bFangDai_Result)
            {
                MFangDai.Show(viewCtrl);
            }
            if (bLanQuan_Enable && bLanQuan_Result)
            {
                MLanQuan.Show(viewCtrl);
            }

            string temp = GetSendResult();

            if (NotifyExcInfo != null)
            {
                NotifyExcInfo("发送结果:" + temp);
            }

            if (row_Send != null && row_Send.Length > 0)
            {
                for (int i = 0; i < row_Send.Length; i++)
                {
                    if (id_Send[i].I == 1)
                    {
                        viewCtrl.AddText("OK", (int)(row_Send[i].D), (int)(col_Send[i].D), 80, "green");
                    }
                }
            }

            if (row_NG == null || row_NG.Length < 1)
            {
                return;
            }
            for (int i = 0; i < row_NG.Length; i++)
            {
                viewCtrl.AddText("NG:" + NG_Reason[i].S, (int)(row_NG[i].D), (int)(col_NG[i].D), 40, "red");
            }
        }