public void GetDataFromRecipe(MillingList milList)
 {
     try
     {
         Enable       = Convert.ToBoolean(milList.Enable);
         X            = milList.MilRect.X * (g_VisionManager._RecipeVision.ResolutionX / 1000.0);
         Y            = milList.MilRect.Y * (g_VisionManager._RecipeVision.ResolutionY / 1000.0);
         Width        = milList.MilRect.Width * (g_VisionManager._RecipeVision.ResolutionX / 1000.0);
         Height       = milList.MilRect.Height * (g_VisionManager._RecipeVision.ResolutionY / 1000.0);
         PathCount    = milList.PathCount;
         Pitch        = milList.Pitch;
         Cycle        = milList.Cycle;
         Force        = Math.Round(milList.Force * ONEGRAM_TO_NEWTON, 3);
         StartPos     = milList.StartPos;
         Tilt         = milList.Tilt;
         Rpm          = milList.RPM;
         Speed        = milList.Speed;
         ToolChange   = Convert.ToBoolean(milList.ToolChange);
         UtilFill     = Convert.ToBoolean(milList.UtilFill);
         UtilDrain    = Convert.ToBoolean(milList.UtilDrain);
         UtilType     = milList.UtilType;
         MillingImage = Convert.ToBoolean(milList.MillingImage);
         EPD          = Convert.ToBoolean(milList.EPD);
         ToolType     = milList.ToolType;
     }
     catch (Exception ex)
     {
         Console.WriteLine(ex.Message);
     }
 }
        public bool Compare(MillingList milList, List <string> changelist = null)
        {
            bool bRtn = false;

            bRtn |= (Enable != Convert.ToBoolean(milList.Enable));                                                           if (Enable != Convert.ToBoolean(milList.Enable))
            {
                changelist?.Add($"     Milling Enable : {Convert.ToBoolean(milList.Enable)} -> {Enable}");
            }
            // 소수 2째 자리 까지 비교 할 것. (연산 Scale 차이 고려) - 소수점 차이 날 수 있음.
            bRtn |= Math.Round(X / (g_VisionManager._RecipeVision.ResolutionX / 1000.0), 3) != (milList.MilRect.X); if (Math.Round(X / (g_VisionManager._RecipeVision.ResolutionX / 1000.0), 3) != (milList.MilRect.X))
            {
                changelist?.Add($"     MilRect.X : {milList.MilRect.X       } -> {Math.Round(X      / (g_VisionManager._RecipeVision.ResolutionX / 1000.0), 3)}");
            }
            bRtn |= Math.Round(Width / (g_VisionManager._RecipeVision.ResolutionX / 1000.0), 3) != (milList.MilRect.Width); if (Math.Round(Width / (g_VisionManager._RecipeVision.ResolutionX / 1000.0), 3) != (milList.MilRect.Width))
            {
                changelist?.Add($"     MilRect.W : {milList.MilRect.Width   } -> {Math.Round(Width  / (g_VisionManager._RecipeVision.ResolutionX / 1000.0), 3)}");
            }
            bRtn |= Math.Round(Y / (g_VisionManager._RecipeVision.ResolutionY / 1000.0), 3) != (milList.MilRect.Y); if (Math.Round(Y / (g_VisionManager._RecipeVision.ResolutionY / 1000.0), 3) != (milList.MilRect.Y))
            {
                changelist?.Add($"     MilRect.Y : {milList.MilRect.Y       } -> {Math.Round(Y      / (g_VisionManager._RecipeVision.ResolutionY / 1000.0), 3)}");
            }
            bRtn |= Math.Round(Height / (g_VisionManager._RecipeVision.ResolutionY / 1000.0), 3) != (milList.MilRect.Height); if (Math.Round(Height / (g_VisionManager._RecipeVision.ResolutionY / 1000.0), 3) != (milList.MilRect.Height))
            {
                changelist?.Add($"     MilRect.H : {milList.MilRect.Height  } -> {Math.Round(Height / (g_VisionManager._RecipeVision.ResolutionY / 1000.0), 3)}");
            }
            bRtn |= (PathCount != milList.PathCount);                                            if (PathCount != milList.PathCount)
            {
                changelist?.Add($"      PathCount : {      milList.PathCount                               } -> {PathCount      }");
            }
            bRtn |= (Pitch != milList.Pitch);                                            if (Pitch != milList.Pitch)
            {
                changelist?.Add($"      Pitch : {          milList.Pitch                                   } -> {Pitch          }");
            }
            bRtn |= (Cycle != milList.Cycle);                                            if (Cycle != milList.Cycle)
            {
                changelist?.Add($"      Cycle : {          milList.Cycle                                   } -> {Cycle          }");
            }
            bRtn |= (Force != Math.Round(milList.Force * ONEGRAM_TO_NEWTON, 3));                                            if (Force != Math.Round(milList.Force * ONEGRAM_TO_NEWTON, 3))
            {
                changelist?.Add($"      Force : {          Math.Round(milList.Force * ONEGRAM_TO_NEWTON, 3)} -> {Force          }");
            }
            bRtn |= (StartPos != milList.StartPos);
            if (StartPos != milList.StartPos)
            {
                if (StartPos > -1 && StartPos < (int)UserEnumVision.EN_STARTPOS.MemberCount && milList.StartPos > -1 && milList.StartPos < (int)UserEnumVision.EN_STARTPOS.MemberCount)
                {
                    changelist?.Add($"      StartPos : {(UserEnumVision.EN_STARTPOS)milList.StartPos} -> {(UserEnumVision.EN_STARTPOS)StartPos}");
                }
                else
                {
                    changelist?.Add($"      StartPos : {milList.StartPos} -> {StartPos}");
                }
            }
            bRtn |= (Tilt != milList.Tilt);                                            if (Tilt != milList.Tilt)
            {
                changelist?.Add($"      Tilt : {           milList.Tilt                                    } -> {Tilt           }");
            }
            bRtn |= (Rpm != milList.RPM);                                            if (Rpm != milList.RPM)
            {
                changelist?.Add($"      Rpm : {            milList.RPM                                     } -> {Rpm            }");
            }
            bRtn |= (Speed != milList.Speed);                                            if (Speed != milList.Speed)
            {
                changelist?.Add($"      Speed : {          milList.Speed                                   } -> {Speed          }");
            }
            bRtn |= (ToolChange != Convert.ToBoolean(milList.ToolChange));                                            if (ToolChange != Convert.ToBoolean(milList.ToolChange))
            {
                changelist?.Add($"      ToolChange : {     Convert.ToBoolean(milList.ToolChange)           } -> {ToolChange     }");
            }
            bRtn |= (UtilFill != Convert.ToBoolean(milList.UtilFill));                                            if (UtilFill != Convert.ToBoolean(milList.UtilFill))
            {
                changelist?.Add($"      UtilFill : {       Convert.ToBoolean(milList.UtilFill)             } -> {UtilFill       }");
            }
            bRtn |= (UtilDrain != Convert.ToBoolean(milList.UtilDrain));                                            if (UtilDrain != Convert.ToBoolean(milList.UtilDrain))
            {
                changelist?.Add($"      UtilDrain : {      Convert.ToBoolean(milList.UtilDrain)            } -> {UtilDrain      }");
            }
            bRtn |= (UtilType != milList.UtilType);
            if (UtilType != milList.UtilType)
            {
                if (UtilType > -1 && UtilType < (int)UserEnumVision.EN_UTILTYPE.MemberCount && milList.UtilType > -1 && milList.UtilType < (int)UserEnumVision.EN_UTILTYPE.MemberCount)
                {
                    changelist?.Add($"      UtilType : {(UserEnumVision.EN_UTILTYPE)milList.UtilType} -> {(UserEnumVision.EN_UTILTYPE)UtilType}");
                }
                else
                {
                    changelist?.Add($"      UtilType : {milList.UtilType} -> {UtilType}");
                }
            }
            bRtn |= (MillingImage != Convert.ToBoolean(milList.MillingImage));                                            if (MillingImage != Convert.ToBoolean(milList.MillingImage))
            {
                changelist?.Add($"      MillingImage : {   Convert.ToBoolean(milList.MillingImage)         } -> {MillingImage   }");
            }
            bRtn |= (EPD != Convert.ToBoolean(milList.EPD));                                            if (EPD != Convert.ToBoolean(milList.EPD))
            {
                changelist?.Add($"      EPD : {            Convert.ToBoolean(milList.EPD)                  } -> {EPD            }");
            }
            bRtn |= (ToolType != milList.ToolType);
            if (ToolType != milList.ToolType)
            {
                if (ToolType > -1 && ToolType < FormMain.FM.m_stSystemOpt.sToolType.Length && milList.ToolType > -1 && milList.ToolType < FormMain.FM.m_stSystemOpt.sToolType.Length)
                {
                    changelist?.Add($"      ToolType : {FormMain.FM.m_stSystemOpt.sToolType[milList.ToolType]} -> {FormMain.FM.m_stSystemOpt.sToolType[ToolType]}");
                }
                else
                {
                    changelist?.Add($"      ToolType : {milList.ToolType} -> {ToolType}");
                }
            }
            return(bRtn);
        }