////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //생성 : //수정 : //목적 : 초기화 //설명 : ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// public override bool HLInitialize(HLDevice.Abstract.CVisionLibraryAbstract.CInitializeParameter objInitializeParameter) { bool bReturn = false; do { m_objInitializeParameter = (HLDevice.Abstract.CVisionLibraryAbstract.CInitializeParameter)objInitializeParameter.Clone(); m_objFindLineTool = new CogFindLineTool[( int )CResultData.enumLine.LINE_FINAL]; m_objResultLine = new CogLine[( int )CResultData.enumLine.LINE_FINAL]; m_objResultLineSegment = new CogLineSegment[( int )CResultData.enumLine.LINE_FINAL]; m_objLineGraphics = new CogCompositeShape[( int )CResultData.enumLine.LINE_FINAL]; m_dLinePositionX = new double[( int )CResultData.enumLine.LINE_FINAL]; m_dLinePositionY = new double[( int )CResultData.enumLine.LINE_FINAL]; m_dLineAngle = new double[( int )CResultData.enumLine.LINE_FINAL]; for (int iLoopCount = 0; iLoopCount < ( int )CResultData.enumLine.LINE_FINAL; iLoopCount++) { m_objFindLineTool[iLoopCount] = new CogFindLineTool(); m_objResultLine[iLoopCount] = new CogLine(); m_objResultLineSegment[iLoopCount] = new CogLineSegment(); m_objLineGraphics[iLoopCount] = new CogCompositeShape(); } m_objIntersectTool = new CogIntersectLineLineTool(); m_iIndex = m_objInitializeParameter.iIndex; m_objInitializeParameter = ( CInitializeParameter )objInitializeParameter.Clone(); HLLoadRecipe(m_objInitializeParameter.strRecipePath, m_objInitializeParameter.strRecipeName); bReturn = true; } while(false); return(bReturn); }
private void BtnRun_Click(object sender, EventArgs e) { var pDocument = CDocument.GetDocument; do { try { m_objFindLineToolTop.Run(); m_objFindLineToolBottom.Run(); m_objCogDisplayMain.InteractiveGraphics.Clear(); m_objCogDisplayMain.StaticGraphics.Clear(); bool bResultTop = false; bool bResultBottom = false; if (null != m_objFindLineToolTop.Results && 0 < m_objFindLineToolTop.Results.Count) { for (int iLoopCount = 0; iLoopCount < m_objFindLineToolTop.Results.Count; iLoopCount++) { m_objCogDisplayMain.StaticGraphics.Add(m_objFindLineToolTop.Results[iLoopCount].CreateResultGraphics(CogFindLineResultGraphicConstants.DataPoint | CogFindLineResultGraphicConstants.TipText), ""); m_objCogDisplayMain.StaticGraphics.Add(m_objFindLineToolTop.Results.GetLine(), ""); } bResultTop = true; } if (null != m_objFindLineToolBottom.Results && 0 < m_objFindLineToolBottom.Results.Count) { for (int iLoopCount = 0; iLoopCount < m_objFindLineToolBottom.Results.Count; iLoopCount++) { m_objCogDisplayMain.StaticGraphics.Add(m_objFindLineToolBottom.Results[iLoopCount].CreateResultGraphics(CogFindLineResultGraphicConstants.DataPoint | CogFindLineResultGraphicConstants.TipText), ""); m_objCogDisplayMain.StaticGraphics.Add(m_objFindLineToolBottom.Results.GetLine(), ""); } bResultBottom = true; } if (false == bResultTop || false == bResultBottom) { break; } CogLine objCogLine = new CogLine(); objCogLine.SelectedSpaceName = "#"; objCogLine.SetXYRotation(m_objListImage[m_iPositionCrop].Width / 2, 0, 90 * (Math.PI / 180)); m_objCogDisplayMain.StaticGraphics.Add(objCogLine, ""); double dPositionXTop = 0; double dPositionYTop = 0; double dPositionXBottom = 0; double dPositionYBottom = 0; CogIntersectLineLineTool objIntersectLine = new CogIntersectLineLineTool(); objIntersectLine.InputImage = m_objListImage[m_iPositionCrop]; objIntersectLine.LineA = m_objFindLineToolTop.Results.GetLine(); objIntersectLine.LineB = objCogLine; objIntersectLine.Run(); dPositionXTop = objIntersectLine.X; dPositionYTop = objIntersectLine.Y; objIntersectLine.LineA = m_objFindLineToolBottom.Results.GetLine(); objIntersectLine.LineB = objCogLine; objIntersectLine.Run(); dPositionXBottom = objIntersectLine.X; dPositionYBottom = objIntersectLine.Y; CogDistancePointPointTool objDistance = new CogDistancePointPointTool(); objDistance.InputImage = m_objListImage[m_iPositionCrop]; objDistance.StartX = dPositionXTop; objDistance.StartY = dPositionYTop; objDistance.EndX = dPositionXBottom; objDistance.EndY = dPositionYBottom; objDistance.Run(); CogGraphicLabel objLabel = new CogGraphicLabel(); objLabel.SelectedSpaceName = "#"; objLabel.Alignment = CogGraphicLabelAlignmentConstants.BottomLeft; double dDistance = objDistance.Distance * pDocument.m_objConfig.GetCameraParameter(( int )CDefine.enumCamera.CAMERA_1).dResolution; objLabel.SetXYText(m_objListImage[m_iPositionCrop].Width / 2, 0, string.Format("DISTANCE : {0:F2}", dDistance)); m_objCogDisplayMain.StaticGraphics.Add(objLabel, ""); } catch (Exception ex) { pDocument.SetUpdateLog(CDefine.enumLogType.LOG_VISION_EXCEPTION_CAMERA_0, "CDialogFindLineSetting - Reload : " + ex.ToString()); } } while(false); }