示例#1
0
        private void SetGridViewLeadMeasurementValue(CogLeadTrimResult _Result)
        {
            if (_Result == null || _Result.LeadLength == null)
            {
                return;
            }
            InitializeQuickGridView(_Result.LeadLength.Length);

            for (int iLoopCount = 0; iLoopCount < _Result.LeadLength.Length; ++iLoopCount)
            {
                QuickGridViewLeadSetting[1, iLoopCount].Value = _Result.LeadLength[iLoopCount].ToString("F4");
                //QuickGridViewLeadSetting[3, iLoopCount].Value = _Result.LeadWidth[iLoopCount].ToString("F4");
                //if (iLoopCount > 0) QuickGridViewLeadSetting[2, iLoopCount].Value = _Result.LeadPitchLength[iLoopCount - 1].ToString("F4");
                if (iLoopCount < _Result.LeadLength.Length - 1)
                {
                    QuickGridViewLeadSetting[2, iLoopCount].Value = _Result.LeadPitchLength[iLoopCount].ToString("F4");
                }

                if (iLoopCount % 2 == 0)
                {
                    QuickGridViewLeadSetting[1, iLoopCount].Style.BackColor = Color.DarkCyan;
                    QuickGridViewLeadSetting[2, iLoopCount].Style.BackColor = Color.DarkCyan;
                    //QuickGridViewLeadSetting[3, iLoopCount].Style.BackColor = Color.DarkCyan;
                }
                else
                {
                    QuickGridViewLeadSetting[1, iLoopCount].Style.BackColor = Color.CadetBlue;
                    QuickGridViewLeadSetting[2, iLoopCount].Style.BackColor = Color.CadetBlue;
                    //QuickGridViewLeadSetting[3, iLoopCount].Style.BackColor = Color.CadetBlue;
                }
            }
        }
示例#2
0
        private void btnLeadLengthAreaCheck_Click(object sender, EventArgs e)
        {
            if (false == IsLeadBodyCheck)
            {
                MessageBox.Show("Check [Lead Body] first!!"); return;
            }

            CogRectangle _InspRegion = new CogRectangle();

            _InspRegion.SetCenterWidthHeight(LeadMeasureArea.CenterX, LeadMeasureArea.CenterY, LeadMeasureArea.Width, LeadMeasureArea.Height);

            CogLeadTrimResult _CogLeadTrimResult = new CogLeadTrimResult();

            var _ApplyLeadTrimValueEvent = ApplyLeadTrimValueEvent;

            _ApplyLeadTrimValueEvent?.Invoke(CogLeadTrimAlgo.eAlgoMode.LEAD_MEASURE, _InspRegion, CogLeadTrimAlgoRcp, ref _CogLeadTrimResult);

            //CogLeadTrimAlgoRcp.LeadCount = _CogLeadTrimResult.LeadCount;
            //LJH 2019.07.30 Lead Count를 잘 못 입력하지 않도록 수동으로 입력하게 수정
            //SaveAlgo에서 확인하도록 수정
            numUpDownLeadCount.Value = Convert.ToDecimal(_CogLeadTrimResult.LeadCount);
            if (LEAD_COUNT != _CogLeadTrimResult.LeadCount)
            {
                MessageBox.Show("Lead 수가 맞지 않습니다.");
                return;
            }

            SetLeadMeasurementValue(_CogLeadTrimResult);
            SetGridViewLeadMeasurementValue(LeadLengthArrayNew, LeadPitchArrayNew);
            //SetGridViewLeadMeasurementValue(_CogLeadTrimResult);
        }
示例#3
0
        private void btnGateRemainingAreaCheck_Click(object sender, EventArgs e)
        {
            CogRectangle _InspRegion = new CogRectangle();

            _InspRegion.SetCenterWidthHeight(GateRemainingArea.CenterX, GateRemainingArea.CenterY, GateRemainingArea.Width, GateRemainingArea.Height);

            CogLeadTrimResult _CogLeadTrimResult = new CogLeadTrimResult();
            CogLeadTrimAlgo   _LeadGateAlgoDest  = new CogLeadTrimAlgo(ResolutionX, ResolutionY);

            _LeadGateAlgoDest.GateRemainingThreshold  = Convert.ToInt32(gradientLabelGateRemainingThresholdValue.Text);
            _LeadGateAlgoDest.GateRemainingSpec       = Convert.ToDouble(numUpDownGateRemainingSpec.Value);
            _LeadGateAlgoDest.GateRemainingForeground = CogLeadTrimAlgoRcp.GateRemainingForeground;

            var _ApplyLeadTrimValueEvent = ApplyLeadTrimValueEvent;

            _ApplyLeadTrimValueEvent?.Invoke(CogLeadTrimAlgo.eAlgoMode.GATE_REMAIN, _InspRegion, _LeadGateAlgoDest, ref _CogLeadTrimResult);
        }
示例#4
0
        private void SetLeadMeasurementValue(CogLeadTrimResult _Result)
        {
            if (_Result.LeadLength != null)
            {
                LeadLengthArrayNew = new double[_Result.LeadLength.Length];
                for (int iLoopCount = 0; iLoopCount < _Result.LeadLength.Length; ++iLoopCount)
                {
                    LeadLengthArrayNew[iLoopCount] = _Result.LeadLength[iLoopCount];
                }
            }

            if (_Result.LeadPitchLength != null)
            {
                LeadPitchArrayNew = new double[_Result.LeadPitchLength.Length];
                for (int iLoopCount = 0; iLoopCount < _Result.LeadPitchLength.Length; ++iLoopCount)
                {
                    LeadPitchArrayNew[iLoopCount] = _Result.LeadPitchLength[iLoopCount];
                }
            }
        }
示例#5
0
        private void btnLeadTipAreaCheck_Click(object sender, EventArgs e)
        {
            CogRectangle _InspRegion = new CogRectangle();

            _InspRegion.SetCenterWidthHeight(LeadTipInspArea.CenterX, LeadTipInspArea.CenterY, LeadTipInspArea.Width, LeadTipInspArea.Height);

            CogLeadTrimResult _CogLeadTrimResult = new CogLeadTrimResult();
            CogLeadTrimAlgo   _LeadTipAlgoDest   = new CogLeadTrimAlgo(ResolutionX, ResolutionY);

            _LeadTipAlgoDest.LeadCount         = CogLeadTrimAlgoRcp.LeadCount;
            _LeadTipAlgoDest.LeadTipEdgeWidth  = Convert.ToInt32(numUpDownLeadTipEdgeWidth.Text);
            _LeadTipAlgoDest.LeadTipForeground = CogLeadTrimAlgoRcp.LeadTipForeground;
            //_LeadTipAlgoDest.LeadTipThreshold = CogLeadTrimAlgoRcp.LeadTipThreshold;
            _LeadTipAlgoDest.LeadTipThreshold     = Convert.ToInt32(graLabelLeadTipBurrThresholdValue.Text);
            _LeadTipAlgoDest.LeadTipBurrThreshold = Convert.ToInt32(graLabelLeadTipBurrThresholdValue.Text);
            _LeadTipAlgoDest.LeadTipBurrSpec      = Convert.ToDouble(numUpDownLeadTipBurrSpec.Value);

            var _ApplyLeadTrimValueEvent = ApplyLeadTrimValueEvent;

            _ApplyLeadTrimValueEvent?.Invoke(CogLeadTrimAlgo.eAlgoMode.LEADTIP_CHECK, _InspRegion, _LeadTipAlgoDest, ref _CogLeadTrimResult);
        }
示例#6
0
        private void btnBodyAreaCheck_Click(object sender, EventArgs e)
        {
            CogRectangle _InspRegion = new CogRectangle();

            _InspRegion.SetCenterWidthHeight(BodyArea.CenterX, BodyArea.CenterY, BodyArea.Width, BodyArea.Height);

            CogLeadTrimResult _CogLeadTrimResult = new CogLeadTrimResult();
            CogLeadTrimAlgo   _LeadTrimAlgoDest  = new CogLeadTrimAlgo(ResolutionX, ResolutionY);

            _LeadTrimAlgoDest.BodyCenterOrigin.X = CogLeadTrimAlgoRcp.BodyCenterOrigin.X;
            _LeadTrimAlgoDest.BodyCenterOrigin.Y = CogLeadTrimAlgoRcp.BodyCenterOrigin.Y;

            _LeadTrimAlgoDest.BodyMaskingAreaList = new List <RectangleD>();
            //for (int iLoopCount = 0; iLoopCount < CogLeadTrimAlgoRcp.BodyMaskingAreaList.Count; ++iLoopCount)
            //{
            //    RectangleD _Area = new RectangleD();
            //    _Area.SetCenterWidthHeight(CogLeadTrimAlgoRcp.BodyMaskingAreaList[iLoopCount].CenterX, CogLeadTrimAlgoRcp.BodyMaskingAreaList[iLoopCount].CenterY, CogLeadTrimAlgoRcp.BodyMaskingAreaList[iLoopCount].Width, CogLeadTrimAlgoRcp.BodyMaskingAreaList[iLoopCount].Height);
            //    _LeadTrimAlgoDest.BodyMaskingAreaList.Add(_Area);
            //}
            for (int iLoopCount = 0; iLoopCount < CogLeadTrimAlgoRcp.BodyMaskingAreaList.Count; ++iLoopCount)
            {
                RectangleD _Area = new RectangleD();
                _Area.SetCenterWidthHeight(BodyMaskingAreaList[iLoopCount].CenterX, BodyMaskingAreaList[iLoopCount].CenterY, BodyMaskingAreaList[iLoopCount].Width, BodyMaskingAreaList[iLoopCount].Height);
                _LeadTrimAlgoDest.BodyMaskingAreaList.Add(_Area);
            }

            var _ApplyLeadTrimValueEvent = ApplyLeadTrimValueEvent;

            _ApplyLeadTrimValueEvent?.Invoke(CogLeadTrimAlgo.eAlgoMode.BODY_CHECK, _InspRegion, _LeadTrimAlgoDest, ref _CogLeadTrimResult);
            //_ApplyLeadTrimValueEvent?.Invoke(CogLeadTrimAlgo.eAlgoMode.BODY_CHECK, _InspRegion, CogLeadTrimAlgoRcp, ref _CogLeadTrimResult);

            BodyCenterOriginX = _CogLeadTrimResult.LeadBodyOriginX;
            BodyCenterOriginY = _CogLeadTrimResult.LeadBodyOriginY;
            BodyCenterOffsetX = _CogLeadTrimResult.LeadBodyOffsetX;
            BodyCenterOffsetY = _CogLeadTrimResult.LeadBodyOffsetY;

            IsLeadBodyCheck = true;
        }
示例#7
0
        private void btnShoulderAreaCheck_Click(object sender, EventArgs e)
        {
            CogRectangle _InspRegion = new CogRectangle();

            _InspRegion.SetCenterWidthHeight(ShoulderInspArea.CenterX, ShoulderInspArea.CenterY, ShoulderInspArea.Width, ShoulderInspArea.Height);

            CogLeadTrimResult _CogLeadTrimResult = new CogLeadTrimResult();
            CogLeadTrimAlgo   _ShoulderAlgoDest  = new CogLeadTrimAlgo(ResolutionX, ResolutionY);

            _ShoulderAlgoDest.LeadCount          = CogLeadTrimAlgoRcp.LeadCount;
            _ShoulderAlgoDest.ShoulderForeground = CogLeadTrimAlgoRcp.ShoulderForeground;
            //_ShoulderAlgoDest.ShoulderThreshold = CogLeadTrimAlgoRcp.ShoulderThreshold;
            _ShoulderAlgoDest.ShoulderThreshold     = Convert.ToInt32(graLabelBurrThresholdValue.Text);
            _ShoulderAlgoDest.LeadEdgeWidth         = Convert.ToInt32(numUpDownShoulderEdgeWidth.Value);
            _ShoulderAlgoDest.ShoulderBurrThreshold = Convert.ToInt32(graLabelBurrThresholdValue.Text);
            _ShoulderAlgoDest.ShoulderNickThreshold = Convert.ToInt32(graLabelNickThresholdValue.Text);
            _ShoulderAlgoDest.ShoulderBurrSpec      = Convert.ToDouble(numUpDownShoulderBurrSpec.Value);
            _ShoulderAlgoDest.ShoulderNickSpec      = Convert.ToDouble(numUpDownShoulderNickSpec.Value);

            var _ApplyLeadTrimValueEvent = ApplyLeadTrimValueEvent;

            _ApplyLeadTrimValueEvent?.Invoke(CogLeadTrimAlgo.eAlgoMode.SHOULDER_CHECK, _InspRegion, _ShoulderAlgoDest, ref _CogLeadTrimResult);
        }
示例#8
0
        private void btnChipOutAreaCheck_Click(object sender, EventArgs e)
        {
            CogRectangle _InspRegion = new CogRectangle();

            _InspRegion.SetCenterWidthHeight(ChipOutArea.CenterX, ChipOutArea.CenterY, ChipOutArea.Width, ChipOutArea.Height);

            CogLeadTrimResult _CogLeadTrimResult = new CogLeadTrimResult();
            CogLeadTrimAlgo   _LeadTrimAlgoDest  = new CogLeadTrimAlgo(ResolutionX, ResolutionY);

            _LeadTrimAlgoDest.ChipOutThreshold   = Convert.ToInt32(graLabelChipOutThresholdValue.Text);
            _LeadTrimAlgoDest.ChipOutBlobAreaMin = Convert.ToDouble(textBoxChipOutBlobAreaMin.Text);
            _LeadTrimAlgoDest.ChipOutBlobAreaMax = Convert.ToDouble(textBoxChipOutBlobAreaMax.Text);
            _LeadTrimAlgoDest.ChipOutWidthMin    = Convert.ToDouble(textBoxChipOutWidthSizeMin.Text);
            _LeadTrimAlgoDest.ChipOutWidthMax    = Convert.ToDouble(textBoxChipOutWidthSizeMax.Text);
            _LeadTrimAlgoDest.ChipOutHeightMin   = Convert.ToDouble(textBoxChipOutHeightSizeMin.Text);
            _LeadTrimAlgoDest.ChipOutHeightMax   = Convert.ToDouble(textBoxChipOutHeightSizeMax.Text);
            _LeadTrimAlgoDest.ChipOutSpec        = Convert.ToDouble(numUpDownChipOutSpec.Value);

            var _ApplyLeadTrimValueEvent = ApplyLeadTrimValueEvent;

            _ApplyLeadTrimValueEvent?.Invoke(CogLeadTrimAlgo.eAlgoMode.CHIPOUT_CHECK, _InspRegion, _LeadTrimAlgoDest, ref _CogLeadTrimResult);
            //_ApplyLeadTrimValueEvent?.Invoke(CogLeadTrimAlgo.eAlgoMode.CHIPOUT_CHECK, _InspRegion, CogLeadTrimAlgoRcp, ref _CogLeadTrimResult);
        }