private void ApplySettingValue() { CogNeedleFindResult _CogNeedleFindResult = new CogNeedleFindResult(); CogNeedleFindAlgo _CogNeedleFindAlgoRcp = new CogNeedleFindAlgo(); _CogNeedleFindAlgoRcp.CaliperNumber = Convert.ToInt32(numUpDownCaliperNumber.Value); _CogNeedleFindAlgoRcp.CaliperSearchLength = Convert.ToDouble(numUpDownSearchLength.Value); _CogNeedleFindAlgoRcp.CaliperProjectionLength = Convert.ToDouble(numUpDownProjectionLength.Value); _CogNeedleFindAlgoRcp.CaliperSearchDirection = Convert.ToInt32(graLabelSearchDirection.Text); _CogNeedleFindAlgoRcp.CaliperIgnoreNumber = Convert.ToInt32(numUpDownIgnoreNumber.Value); _CogNeedleFindAlgoRcp.CaliperPolarity = Convert.ToInt32(graLabelPolarity.Text); _CogNeedleFindAlgoRcp.ArcCenterX = Convert.ToDouble(numUpDownArcCenterX.Value); _CogNeedleFindAlgoRcp.ArcCenterY = Convert.ToDouble(numUpDownArcCenterY.Value); _CogNeedleFindAlgoRcp.ArcRadius = Convert.ToDouble(numUpDownArcRadius.Value); _CogNeedleFindAlgoRcp.ArcAngleStart = Convert.ToDouble(numUpDownAngleStart.Value); _CogNeedleFindAlgoRcp.ArcAngleSpan = Convert.ToDouble(numUpDownAngleSpan.Value); var _ApplyNeedleCircleFindValueEvent = ApplyNeedleCircleFindValueEvent; if (_ApplyNeedleCircleFindValueEvent != null) { _ApplyNeedleCircleFindValueEvent(_CogNeedleFindAlgoRcp, ref _CogNeedleFindResult); } if (_CogNeedleFindResult.IsGood) { textBoxCenterX.Text = (_CogNeedleFindResult.CenterXReal).ToString("F3"); textBoxCenterY.Text = (_CogNeedleFindResult.CenterYReal).ToString("F3"); textBoxRadius.Text = (_CogNeedleFindResult.RadiusReal).ToString("F3"); OriginX = _CogNeedleFindResult.CenterX; OriginY = _CogNeedleFindResult.CenterY; } else { textBoxCenterX.Text = "-"; textBoxCenterY.Text = "-"; textBoxRadius.Text = "-"; _CogNeedleFindAlgoRcp.OriginX = 0; _CogNeedleFindAlgoRcp.OriginY = 0; } }
private void ApplyNeedleCircleFindValueFunction(CogNeedleFindAlgo _CogNeedleFindAlgo, ref CogNeedleFindResult _CogNeedleFindResult) { if (eTeachStep.ALGO_SET != CurrentTeachStep) { MessageBox.Show("Not select \"Algorithm Set\" button"); return; } AlgorithmAreaDisplayRefresh(); bool _Result = InspNeedleCircleFindProcess.Run(InspectionImage, _CogNeedleFindAlgo, ref _CogNeedleFindResult); _CogNeedleFindResult.CenterXReal = (_CogNeedleFindResult.CenterX - (InspectionImage.Width / 2)) * ResolutionX; _CogNeedleFindResult.CenterYReal = (_CogNeedleFindResult.CenterY - (InspectionImage.Height / 2)) * ResolutionY; _CogNeedleFindResult.OriginXReal = (_CogNeedleFindResult.OriginX - (InspectionImage.Width / 2)) * ResolutionX; _CogNeedleFindResult.OriginYReal = (_CogNeedleFindResult.OriginY - (InspectionImage.Height / 2)) * ResolutionY; _CogNeedleFindResult.RadiusReal = _CogNeedleFindResult.Radius * ResolutionX; CogCircle _CogCircle = new CogCircle(); if (_CogNeedleFindResult.Radius <= 0) { return; } _CogCircle.SetCenterRadius(_CogNeedleFindResult.CenterX, _CogNeedleFindResult.CenterY, _CogNeedleFindResult.Radius); CogPointMarker _CogCenterPoint = new CogPointMarker(); _CogCenterPoint.SetCenterRotationSize(_CogNeedleFindResult.CenterX, _CogNeedleFindResult.CenterY, 0, 2); kpTeachDisplay.DrawStaticShape(_CogCircle, "Circle", CogColorConstants.Green, 3); kpTeachDisplay.DrawStaticShape(_CogCenterPoint, "CirclePoint", CogColorConstants.Green); string _CenterName = string.Format("X = {0:F2}mm, Y = {1:F2}mm, R = {2:F2}mm", _CogNeedleFindResult.CenterXReal, _CogNeedleFindResult.CenterYReal, _CogNeedleFindResult.RadiusReal); kpTeachDisplay.DrawText(_CenterName, _CogNeedleFindResult.CenterX, _CogNeedleFindResult.CenterY + 150, CogColorConstants.Green, 10, CogGraphicLabelAlignmentConstants.BaselineCenter); }
//public void SetOffsetValue(double _OffsetX, double _OffsetY) //{ // CircleCenterOffsetX = _OffsetX; // CircleCenterOffsetY = _OffsetY; //} public bool Run(CogImage8Grey _SrcImage, CogNeedleFindAlgo _CogNeedleFindAlgo, ref CogNeedleFindResult _CogNeedleFindResult, double _OffsetX = 0, double _OffsetY = 0, int _NgNumber = 0) { bool _Result = true; SetCaliperDirection(_CogNeedleFindAlgo.CaliperSearchDirection, _CogNeedleFindAlgo.CaliperPolarity); SetCaliper(_CogNeedleFindAlgo.CaliperNumber, _CogNeedleFindAlgo.CaliperSearchLength, _CogNeedleFindAlgo.CaliperProjectionLength, _CogNeedleFindAlgo.CaliperIgnoreNumber); SetCircularArc(_CogNeedleFindAlgo.ArcCenterX - _OffsetX, _CogNeedleFindAlgo.ArcCenterY - _OffsetY, _CogNeedleFindAlgo.ArcRadius, _CogNeedleFindAlgo.ArcAngleStart, _CogNeedleFindAlgo.ArcAngleSpan); if (true == Inspection(_SrcImage)) { GetResult(); } if (FindCircleResults != null && FindCircleResults.Count > 0) { _CogNeedleFindResult.IsGood = true; } else { _CogNeedleFindResult.IsGood = false; } if (!_CogNeedleFindResult.IsGood) { CLogManager.AddInspectionLog(CLogManager.LOG_TYPE.INFO, " - Needle Find Fail!!", CLogManager.LOG_LEVEL.MID); _CogNeedleFindResult.CenterX = _CogNeedleFindAlgo.ArcCenterX; _CogNeedleFindResult.CenterY = _CogNeedleFindAlgo.ArcCenterY; _CogNeedleFindResult.Radius = _CogNeedleFindAlgo.ArcRadius; _CogNeedleFindResult.OriginX = 0; _CogNeedleFindResult.OriginY = 0; } else { if (FindCircleResults.GetCircle() != null) { CLogManager.AddInspectionLog(CLogManager.LOG_TYPE.INFO, " - Needle Find Complete", CLogManager.LOG_LEVEL.MID); _CogNeedleFindResult.PointFoundCount = FindCircleResults.NumPointsFound; _CogNeedleFindResult.CenterX = FindCircleResults.GetCircle().CenterX; _CogNeedleFindResult.CenterY = FindCircleResults.GetCircle().CenterY; _CogNeedleFindResult.Radius = FindCircleResults.GetCircle().Radius; _CogNeedleFindResult.OriginX = FindCircleResults.GetCircle().CenterX; _CogNeedleFindResult.OriginY = FindCircleResults.GetCircle().CenterY; _CogNeedleFindResult.PointPosXInfo = new double[FindCircleResults.Count]; _CogNeedleFindResult.PointPosYInfo = new double[FindCircleResults.Count]; _CogNeedleFindResult.PointStatusInfo = new bool[FindCircleResults.Count]; for (int iLoopCount = 0; iLoopCount < FindCircleResults.Count; ++iLoopCount) { if (true == FindCircleResults[iLoopCount].Found) { _CogNeedleFindResult.PointPosXInfo[iLoopCount] = FindCircleResults[iLoopCount].X; _CogNeedleFindResult.PointPosYInfo[iLoopCount] = FindCircleResults[iLoopCount].Y; } _CogNeedleFindResult.PointStatusInfo[iLoopCount] = FindCircleResults[iLoopCount].Used; } CLogManager.AddInspectionLog(CLogManager.LOG_TYPE.INFO, String.Format(" - Center X : {0}, Y : {1}", _CogNeedleFindResult.CenterX.ToString("F2"), _CogNeedleFindResult.CenterY.ToString("F2")), CLogManager.LOG_LEVEL.MID); CLogManager.AddInspectionLog(CLogManager.LOG_TYPE.INFO, String.Format(" - Radius : {0}", _CogNeedleFindResult.Radius.ToString("F2")), CLogManager.LOG_LEVEL.MID); } else { CLogManager.AddInspectionLog(CLogManager.LOG_TYPE.INFO, " - Needle Find Fail!!", CLogManager.LOG_LEVEL.MID); _CogNeedleFindResult.CenterX = 0; _CogNeedleFindResult.CenterY = 0; _CogNeedleFindResult.Radius = 0; _CogNeedleFindResult.OriginX = 0; _CogNeedleFindResult.OriginY = 0; _CogNeedleFindResult.IsGood = false; } } CLogManager.AddInspectionLog(CLogManager.LOG_TYPE.INFO, " - Result : " + _CogNeedleFindResult.IsGood.ToString(), CLogManager.LOG_LEVEL.MID); return(_Result); }