using Aurora.View; using System.Windows.Input; using VisionCommon; using VisionCommonUI.Resources; namespace VisionUI.Inspector { /// /// 어태치 검사 레시피 세팅 뷰 모델 /// public class AttachInspRecipeSettingViewModel : NotifyPropertyChangedBase, IUpdateRecipe { private SubSysInfo _SubSysInfo; private SubSysRecipe _SubSysRecipe; #region Binding Properties private AttachInspRecipe _AttachInspRecipe; /// 어태치 검사 레시피 public AttachInspRecipe AttachInspRecipe { get => _AttachInspRecipe; set { SetProperty(ref _AttachInspRecipe, value); } } #endregion /// /// 생성자 /// /// 서브시스템 정보 public AttachInspRecipeSettingViewModel(SubSysInfo subSysInfo) { _SubSysInfo = subSysInfo; _SubSysRecipe = VisionRecipeManager.GetSubSysRecipe(subSysInfo); AttachInspRecipe = VisionRecipeManager.GetAttachInspRecipe(_SubSysInfo); } public void RefreshVisionRecipes() { AttachInspRecipe = VisionRecipeManager.GetAttachInspRecipe(_SubSysInfo); _SubSysRecipe = VisionRecipeManager.GetSubSysRecipe(_SubSysInfo); } public void UpdateRecipeFromFile() { var attachInspRecipe = VisionRecipeManager.GetAttachInspRecipe(_SubSysInfo); AttachInspRecipe = attachInspRecipe.Clone(); } public void UpdateRecipeFromUI() { var attachInspRecipe = VisionRecipeManager.GetAttachInspRecipe(_SubSysInfo); var clonedAttachInspRecipe = AttachInspRecipe.Clone(); // IList 파라미터 사용시, CoordUnitAttachInspParamsConverter에서 ConvertBack이 동작하지 않으므로, 여기서 처리 if (VisionSettingManager.VisionSetting.CoordUnit == eCoordUnit.UM) { foreach (var attachInspParam in clonedAttachInspRecipe.AttachInspParams) { attachInspParam.SpecW = MathUtil.ConvertUnitMicroToMilli(attachInspParam.SpecW); attachInspParam.ErrRangeW = MathUtil.ConvertUnitMicroToMilli(attachInspParam.ErrRangeW); attachInspParam.SpecH = MathUtil.ConvertUnitMicroToMilli(attachInspParam.SpecH); attachInspParam.ErrRangeH = MathUtil.ConvertUnitMicroToMilli(attachInspParam.ErrRangeH); } clonedAttachInspRecipe.CopyTo(attachInspRecipe); } else { AttachInspRecipe.CopyTo(attachInspRecipe); } } } }