예제 #1
0
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //생성 :
        //수정 :
        //목적 : 초기화
        //설명 :
        //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        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);
        }
예제 #2
0
        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);
        }