private void DataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            UserRegion userRegion = (DataContext as CreateAroundBondRegionModel).SelectedUserRegion;

            if (userRegion == null)
            {
                return;
            }

            int image3index;

            image3index = (DataContext as CreateAroundBondRegionModel).SelectedUserRegion.AroundBondRegionWithPara.AroundBallMeasureAlgoPara.ShiftImageIndex;
            int image2index;

            image2index = (DataContext as CreateAroundBondRegionModel).SelectedUserRegion.AroundBondRegionWithPara.AroundBondLineGaussAlgoPara.TailImageIndex;
            int image0index;

            image0index = (DataContext as CreateAroundBondRegionModel).SelectedUserRegion.AroundBondRegionWithPara.AroundBondAdativeAlgoPara.SurfImageIndex;
            int image1index;

            image1index = (DataContext as CreateAroundBondRegionModel).SelectedUserRegion.AroundBondRegionWithPara.AroundBondGlobalAlgoPara.SurfImageIndex;

            (DataContext as CreateAroundBondRegionModel).ImageIndex0 = image0index;
            (DataContext as CreateAroundBondRegionModel).ImageIndex1 = image1index;
            (DataContext as CreateAroundBondRegionModel).ImageIndex2 = image2index;
            (DataContext as CreateAroundBondRegionModel).ImageIndex3 = image3index;
        }
        private void ComboBox_SelectionChanged_IsInspect(object sender, SelectionChangedEventArgs e)
        {
            //判断该类焊点区域需不需要检测,若不需要直接将检测项目置为“false”
            UserRegion userRegion = (DataContext as CreateAroundBondRegionModel).SelectedUserRegion;

            if (userRegion == null)
            {
                return;
            }

            int IsInspect = (DataContext as CreateAroundBondRegionModel).SelectedUserRegion.IsAroundBondRegInspect;

            if (IsInspect == 0)
            {
                (DataContext as CreateAroundBondRegionModel).SelectedUserRegion.AroundBondRegionWithPara.IsBallShiftInspect = false;
                (DataContext as CreateAroundBondRegionModel).SelectedUserRegion.AroundBondRegionWithPara.IsTailInspect      = false;
                (DataContext as CreateAroundBondRegionModel).SelectedUserRegion.AroundBondRegionWithPara.IsSurfaceInspect   = false;
            }
            else
            {
                (DataContext as CreateAroundBondRegionModel).SelectedUserRegion.AroundBondRegionWithPara.IsBallShiftInspect = true;
                (DataContext as CreateAroundBondRegionModel).SelectedUserRegion.AroundBondRegionWithPara.IsTailInspect      = true;
                (DataContext as CreateAroundBondRegionModel).SelectedUserRegion.AroundBondRegionWithPara.IsSurfaceInspect   = true;
            }
        }
예제 #3
0
        private void SaveUserDependants(User daoObj)
        {
            for (int i = 0; i < daoObj.UserCountryList.Count; i++)
            {
                UserCountry country = (UserCountry)daoObj.UserCountryList[i];
                country.User = daoObj;
                // HibernateTemplate.Save() returns just ID. real new entity lies in the same daoObj after return.
                //daoObj.UserCountryList[i] = HibernateTemplate.Save(country);
                HibernateTemplate.Save(country);
                daoObj.UserCountryList[i] = country;
            }

            for (int i = 0; i < daoObj.UserRegionList.Count; i++)
            {
                UserRegion r = (UserRegion)daoObj.UserRegionList[i];
                r.User = daoObj;
                // HibernateTemplate.Save() returns just ID. real new entity lies in the same daoObj after return.
                //daoObj.UserRegionList[i] = HibernateTemplate.Save(r);
                HibernateTemplate.Save(r);
                daoObj.UserRegionList[i] = r;
            }

            for (int i = 0; i < daoObj.UserStoreList.Count; i++)
            {
                UserStore s = (UserStore)daoObj.UserStoreList[i];
                s.User = daoObj;
                // HibernateTemplate.Save() returns just ID. real new entity lies in the same daoObj after return.
                //daoObj.UserStoreList[i] = HibernateTemplate.Save(s);
                HibernateTemplate.Save(s);
                daoObj.UserStoreList[i] = s;
            }
        }
예제 #4
0
        private object MapGPO_USR_REGION(IDataReader reader, int rowNumber)
        {
            UserRegion _gpo_usr_region = new UserRegion();

            _gpo_usr_region.Id          = Convert.ToString(reader["ID"]);
            _gpo_usr_region.Region_type = Convert.ToString(reader["REGION_TYPE"]);
            _gpo_usr_region.Region_name = Convert.ToString(reader["REGION_NAME"]);
            _gpo_usr_region.Remark      = Convert.ToString(reader["REMARK"]);
            return(_gpo_usr_region);
        }
예제 #5
0
 public JsonUserRegion(UserRegion region)
 {
     // Set...
     if (region != null)
     {
         Id       = region.Id;
         UserId   = region.User?.Id;
         RegionId = region.RegionId;
     }
 }
예제 #6
0
 public static void AddRegionOne(XElement fatherNode, UserRegion userRegion, string name, bool isSaveParameter = false)//
 {
     if (userRegion == null)
     {
         return;
     }
     else
     {
         XElement xElement = new XElement(name);
         xElement.Add(userRegion.ToXElement("Region", isSaveParameter));
         fatherNode.Add(xElement);
     }
 }
예제 #7
0
        void Ready()
        {
            Context.System.EventStream.Subscribe(Self, typeof(UserRegisteredEvent));
            Context.System.EventStream.Subscribe(Self, typeof(SubscribedToUserEvent));

            Receive <RegisterModel>(register =>
            {
                var command  = new RegisterUserCommand(register.UserId, register.Login, register.UserName);
                var envelope = new ShardEnvelope(command.Id.ToString(), command);
                UserRegion.Tell(envelope);
            });

            Receive <CreateChatModel>(x =>
            {
                var command = new CreateChatCommand(x.ChatId, x.UserId, new List <Guid> {
                    x.UserId, x.TargetUserId
                });
                var envelope = new ShardEnvelope(command.Id.ToString(), command);
                ChatRegion.Tell(envelope);
            });

            Receive <UserRegisteredEvent>(evt =>
            {
                SignalrPusher.PlayerJoined(evt.Id, evt.Login, evt.UserName);
            });

            Receive <SubscribeToUserCommand>(mes =>
            {
                var envelope = new ShardEnvelope(mes.UserId.ToString(), mes);
                UserRegion.Tell(envelope);
            });

            Receive <SubscribedToUserEvent>(mes =>
            {
                SignalrPusher.UserAddedToContactList(mes.UserId, mes.ContactUserId, mes.ContactName);
            });

            Receive <AddMessageToChatCommand>(cmd =>
            {
                var envelope = new ShardEnvelope(cmd.ChatId.ToString(), cmd);
                ChatRegion.Tell(envelope);
            });

            Receive <MarkChatMessagesReadCommand>(cmd =>
            {
                var envelope = new ShardEnvelope(cmd.UserId.ToString(), cmd);
                UserRegion.Tell(envelope);
            });
        }
예제 #8
0
        public static HObject ConcatRegion(UserRegion region1, UserRegion region2)
        {
            HObject concatRegion = null;

            HOperatorSet.GenEmptyObj(out concatRegion);

            if (region2.IsAccept == true)
            {
                HOperatorSet.ConcatObj(region1.CalculateRegion, region2.CalculateRegion, out concatRegion);
            }
            else if (region2.IsAccept == false)
            {
                HOperatorSet.Difference(region1.CalculateRegion, region2.CalculateRegion, out concatRegion);
            }

            return(concatRegion);
        }
예제 #9
0
        public static HObject Union1DisplayRegion(HObject region, UserRegion userRegion)//DisplayRegion
        {
            HOperatorSet.GenEmptyObj(out HObject UnionRegion);
            HOperatorSet.GenEmptyObj(out HObject unionRegion);

            if (userRegion.IsEnable)
            {
                if (userRegion.IsAccept)
                {
                    HOperatorSet.ConcatObj(region, userRegion.DisplayRegion, out unionRegion);
                }
                else if (!userRegion.IsAccept)
                {
                    HOperatorSet.Difference(region, userRegion.DisplayRegion, out unionRegion);
                }
            }
            HOperatorSet.Union1(unionRegion, out UnionRegion);
            return(UnionRegion);
        }
예제 #10
0
        public static void ReadRegionOne(XElement fatherNode,
                                         UserRegion userRegion,
                                         string name,
                                         double rowOffset     = 0,
                                         double columnOffset  = 0,
                                         bool isReadParameter = false)//
        {
            XElement node = fatherNode.Element(name);

            if (node == null)
            {
                return;
            }
            foreach (var element in node.Elements())
            {
                userRegion = (UserRegion.FromXElement(element, isReadParameter, rowOffset, columnOffset));
            }
            return;
        }
예제 #11
0
        private void CommitRegions()
        {
            if (_RegionsModified)
            {
                List <Domain.Region> removed = _RegionBindList.GetRemoveList();
                foreach (Domain.Region rc in removed)
                {
                    IList ucs = UserEntity.UserRegionList;
                    foreach (UserRegion uc in ucs)
                    {
                        if (uc.RegionID == rc.ID)
                        {
                            ucs.Remove(uc);
                            break;
                        }
                    }
                }

                List <Domain.Region> newc = _RegionBindList.GetNewItemList();
                foreach (Domain.Region nc in newc)
                {
                    bool  found = false;
                    IList ucs   = UserEntity.UserRegionList;
                    for (int i = 0; i < ucs.Count; i++)
                    {
                        UserRegion uc = (UserRegion)ucs[i];
                        if (uc.RegionID == nc.ID)
                        {
                            found = true;
                            break;
                        }
                    }
                    if (!found)
                    {
                        UserRegion uc = new UserRegion();
                        uc.User     = UserEntity;
                        uc.RegionID = nc.ID;
                        UserEntity.UserRegionList.Add(uc);
                    }
                }
            }
        }
        /// <summary>
        /// 联动选择焊盘测量类型,相应的改变测量类型的测量大小
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ComboBox_SelectionChanged_Pad(object sender, SelectionChangedEventArgs e)
        {
            UserRegion userRegion = (DataContext as CreateAroundBondRegionModel).SelectedUserRegion;

            if (userRegion == null)
            {
                return;
            }

            (DataContext as CreateAroundBondRegionModel).SelectedUserRegion.AroundBondRegionWithPara.AroundBallMeasureAlgoPara.PadItemSelectIndex = SelectMeasureType_Pad.SelectedIndex;
            //判断选择的项目索引号后需要保存的测量
            if (SelectMeasureType_Pad.SelectedIndex == 1)
            {
                (DataContext as CreateAroundBondRegionModel).SelectedUserRegion.AroundBondRegionWithPara.AroundBallMeasureAlgoPara.PadIsCircle = true;
            }
            else
            {
                (DataContext as CreateAroundBondRegionModel).SelectedUserRegion.AroundBondRegionWithPara.AroundBallMeasureAlgoPara.PadIsCircle = false;
            }
        }
예제 #13
0
        public static HObject ConcatRegion(UserRegion regions)
        {
            HObject concatRegion = null;

            HOperatorSet.GenEmptyObj(out concatRegion);

            if (regions.IsEnable)
            {
                if (regions.IsAccept)
                {
                    HOperatorSet.ConcatObj(concatRegion, regions.CalculateRegion, out concatRegion);
                }
                else
                {
                    HOperatorSet.Difference(concatRegion, regions.CalculateRegion, out concatRegion);
                }
            }

            return(concatRegion);
        }
예제 #14
0
        public static void ReadRegion(XElement fatherNode,
                                      IList <UserRegion> userRegions,
                                      string name,
                                      double rowOffset              = 0,
                                      double columnOffset           = 0,
                                      bool isReadParameter          = false,
                                      bool isReadAlgoParameter      = false,
                                      bool isReadModelAlgoParameter = false,
                                      bool isReadRegAlgoParameter   = false, //读取AroundBond检测参数
                                      bool IsReadBondAlgoParameter  = false) //读取Bond检测参数
        {
            XElement node = fatherNode.Element(name);

            if (node == null)
            {
                return;
            }
            foreach (var element in node.Elements())
            {
                userRegions.Add(UserRegion.FromXElement(element, isReadParameter, rowOffset, columnOffset, isReadAlgoParameter, isReadModelAlgoParameter, isReadRegAlgoParameter, IsReadBondAlgoParameter));
            }
            return;
        }
예제 #15
0
 public static HObject BondRegionOffset(UserRegion userRegion, RegionType regionType, double dieImageRowOffset, double dieImageColumnOffset)
 {
     HOperatorSet.GenRectangle1(out HObject calculateRegion, userRegion.RegionParameters[0] + dieImageRowOffset, userRegion.RegionParameters[1] + dieImageColumnOffset, userRegion.RegionParameters[2] + dieImageRowOffset, userRegion.RegionParameters[3] + dieImageColumnOffset);
예제 #16
0
        public override void SaveXML()
        {
            try
            {
                Directory.GetFiles(ModelsRecipeDirectory).ToList().ForEach(File.Delete);
                UserRegion userRegion = (cutOutDie as CutOutDie).UserRegionForCutOut;
                if (userRegion != null)
                {
                    goldenModelParameter.UserRegionForCutOutIndex = userRegion.Index;
                }

                XElement root = new XElement("Recipe");
                XMLHelper.AddIdentifier(root, IdentifyString);
                XElement goldenModelParameterNode        = new XElement("GoldenModelParameter");
                XElement goldenModelInspectParameterNode = new XElement("GoldenModelInspectParameter");

                XMLHelper.AddRegion(root, dieUserRegions, "Die_Regions");
                XMLHelper.AddRegion(root, matchUserRegions, "Match_Region");
                XMLHelper.AddRegion(root, inspectUserRegions, "Inspect_Region");
                XMLHelper.AddRegion(root, subUserRegions, "Sub_Regions");
                XMLHelper.AddRegion(root, rejectUserRegions, "Reject_Region");
                if (goldenModelObject.RejectRegion != null)
                {
                    //当拒绝区是不规则区域时,拒绝区域保存在Models下
                    HOperatorSet.WriteRegion(goldenModelObject.RejectRegion, $"{ModelsRecipeDirectory}" + "Reject_FreeRegion.reg");
                }

                XMLHelper.AddParameters(goldenModelParameterNode, goldenModelParameter, IdentifyString);
                XMLHelper.AddParameters(goldenModelInspectParameterNode, goldenModelInspectParameter, IdentifyString);

                root.Add(goldenModelParameterNode);
                root.Add(goldenModelInspectParameterNode);
                root.Save(XmlPath);

                if (goldenModelParameter.OnRecipesIndexs.Length > 0)
                {
                    HOperatorSet.WriteTuple(goldenModelParameter.OnRecipesIndexs?[goldenModelParameter.OnRecipesIndex], ModelsRecipeDirectory + "OnWhat.tup");
                }
                HOperatorSet.WriteTuple(goldenModelInspectParameter.AngleStart, ModelsRecipeDirectory + "AngleStart.tup");
                HOperatorSet.WriteTuple(goldenModelInspectParameter.AngleExt, ModelsRecipeDirectory + "AngleExt.tup");
                HOperatorSet.WriteTuple(goldenModelInspectParameter.MinMatchScore, ModelsRecipeDirectory + "MinMatchScore.tup");
                HOperatorSet.WriteTuple(goldenModelInspectParameter.MatchNum, ModelsRecipeDirectory + "MatchNum.tup");
                HOperatorSet.WriteTuple(goldenModelInspectParameter.DilationSize, ModelsRecipeDirectory + "DilationSize.tup");
                HOperatorSet.WriteRegion(Algorithm.Region.Union1Region(matchUserRegions), ModelsRecipeDirectory + "Match_Region.reg");
                HOperatorSet.WriteRegion(Algorithm.Region.Union1Region(inspectUserRegions), ModelsRecipeDirectory + "Inspect_Region.reg");
                HOperatorSet.WriteRegion(Algorithm.Region.Union1Region(rejectUserRegions), ModelsRecipeDirectory + "Reject_Region.reg");
                HOperatorSet.WriteRegion(Algorithm.Region.Union1Region(subUserRegions), ModelsRecipeDirectory + "Sub_Region.reg");

                if (goldenModelParameter.ImageCountChannels == 1)
                {
                    HOperatorSet.WriteTuple((new HTuple(1)).TupleConcat(new HTuple(1)).TupleConcat(new HTuple(1)), ModelsRecipeDirectory + "Image_Index.tup");
                }
                else if (goldenModelParameter.ImageCountChannels > 1)
                {
                    // 1122-lw
                    HOperatorSet.WriteTuple((new HTuple(goldenModelParameter.ImageChannelIndex + 1))
                                            .TupleConcat(new HTuple(goldenModelParameter.ImageGoldChannelIndex + 1))
                                            .TupleConcat(new HTuple(goldenModelInspectParameter.ImageChannelIndex_IcExist + 1)),
                                            ModelsRecipeDirectory + "Image_Index.tup");
                }

                HOperatorSet.WriteTuple(new HTuple(goldenModelInspectParameter.IsICExist == false ? 0 : 1)
                                        .TupleConcat(new HTuple(goldenModelInspectParameter.IsICLocate == false ? 0 : 1))
                                        .TupleConcat(new HTuple(goldenModelInspectParameter.IsICOffSet == false ? 0 : 1))
                                        .TupleConcat(new HTuple(goldenModelInspectParameter.IsICSurfaceInspect == false ? 0 : 1)),
                                        ModelsRecipeDirectory + "TaskEnable.tup");

                if (goldenModelParameter.ModelType == 0)
                {
                    HOperatorSet.WriteTuple(new HTuple("ncc"), $"{ModelsRecipeDirectory}Model_Type.tup");
                }
                else if (goldenModelParameter.ModelType == 1)
                {
                    HOperatorSet.WriteTuple(new HTuple("shape"), $"{ModelsRecipeDirectory}Model_Type.tup");
                }
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }

            try
            {
                if (File.Exists($"{RecipeDirectory}PosModel.dat") || goldenModelObject.PosModelID != null)
                {
                    if (goldenModelParameter.ModelIdPath.Split(',').Length == 1)
                    {
                        if (File.Exists($"{RecipeDirectory}PosModel.dat") || goldenModelObject.PosModelID != null)
                        {
                            if (goldenModelObject.PosModelID != null)
                            {
                                Algorithm.File.SaveModel(ModelsRecipeDirectory + "PosModel.dat", goldenModelParameter.ModelType, goldenModelObject.PosModelID);
                            }
                            else if (File.Exists($"{RecipeDirectory}PosModel.dat"))
                            {
                                HTuple PosModelId = Algorithm.File.ReadModel($"{RecipeDirectory}PosModel.dat", goldenModelParameter.ModelType);
                                Algorithm.File.SaveModel(ModelsRecipeDirectory + "PosModel.dat", goldenModelParameter.ModelType, PosModelId);
                                // 清除模板 lw 0121
                                Algorithm.Model_RegionAlg.HTV_clear_model_recipe(PosModelId, goldenModelParameter.ModelType);
                            }
                        }
                        else
                        {
                            MessageBox.Show("请创建定位模板!");
                        }
                    }
                    else
                    {
                        if (goldenModelObject.PosModelID != null)
                        {
                            String[] ModelIdPathArry = new string[goldenModelObject.PosModelID.TupleLength()];
                            for (int i = 0; i < goldenModelObject.PosModelID.TupleLength(); i++)
                            {
                                ModelIdPathArry[i] = $"{ModelsRecipeDirectory}PosModel_" + i + ".dat";
                            }
                            goldenModelParameter.ModelIdPath = String.Join(",", ModelIdPathArry);
                            Algorithm.File.SaveModel(ModelIdPathArry, goldenModelParameter.ModelType, goldenModelObject.PosModelID);
                        }
                        else if (File.Exists($"{RecipeDirectory}PosModel.dat"))
                        {
                            HTuple   ModelId         = Algorithm.File.ReadModel($"{RecipeDirectory}PosModel.dat".Split(','), goldenModelParameter.ModelType);
                            String[] ModelIdPathArry = new string[ModelId.TupleLength()];
                            for (int i = 0; i < ModelId.TupleLength(); i++)
                            {
                                ModelIdPathArry[i] = $"{ModelsRecipeDirectory}PosModel_" + i + ".dat";
                            }
                            Algorithm.File.SaveModel(ModelIdPathArry, goldenModelParameter.ModelType, ModelId);
                            // 清除模板 lw 0121
                            Algorithm.Model_RegionAlg.HTV_clear_model_recipe(ModelId, goldenModelParameter.ModelType);
                        }
                    }
                }

                if (goldenModelObject.MeadImage != null && goldenModelObject.StdImage != null)
                {
                    HOperatorSet.WriteImage(goldenModelObject.MeadImage, "tiff", 0, ModelsRecipeDirectory + "Mean_Image.tiff");
                    //HOperatorSet.WriteImage(goldenModelObject.StdImage, "tiff", 0, ModelsRecipeDirectory + "Std_Image.tiff");
                }
                else if (File.Exists($"{RecipeDirectory}Mean_Image.tiff") /*&& File.Exists($"{RecipeDirectory}Std_Image.tiff")*/)
                {
                    HOperatorSet.ReadImage(out HObject Mean_Image, $"{RecipeDirectory}Mean_Image.tiff");
                    //HOperatorSet.ReadImage(out HObject Std_Image, $"{RecipeDirectory}Std_Image.tiff"); // 1206
                    HOperatorSet.WriteImage(Mean_Image, "tiff", 0, ModelsRecipeDirectory + "Mean_Image.tiff");
                    //HOperatorSet.WriteImage(Std_Image, "tiff", 0, ModelsRecipeDirectory + "Std_Image.tiff");
                }
                else
                {
                    MessageBox.Show("请生成均值方差图!");
                }


                if (goldenModelObject.LightImage != null && goldenModelObject.DarkImage != null)
                {
                    HOperatorSet.WriteImage(goldenModelObject.LightImage, "tiff", 0, ModelsRecipeDirectory + "Light_Image.tiff");
                    HOperatorSet.WriteImage(goldenModelObject.DarkImage, "tiff", 0, ModelsRecipeDirectory + "Dark_Image.tiff");
                }
                else if (File.Exists($"{RecipeDirectory}Light_Image.tiff") && File.Exists($"{RecipeDirectory}Dark_Image.tiff"))
                {
                    HOperatorSet.ReadImage(out HObject Light_Image, $"{RecipeDirectory}Light_Image.tiff");
                    HOperatorSet.ReadImage(out HObject Dark_Image, $"{RecipeDirectory}Dark_Image.tiff");
                    HOperatorSet.WriteImage(Light_Image, "tiff", 0, ModelsRecipeDirectory + "Light_Image.tiff");
                    HOperatorSet.WriteImage(Dark_Image, "tiff", 0, ModelsRecipeDirectory + "Dark_Image.tiff");
                }
                else
                {
                    MessageBox.Show("请生成亮图像、暗图像!");
                }
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
예제 #17
0
        public JsonResult Create(long?id, UserModel model)
        {
            if (!HasContextRole(new string[] { "CRO" }))
            {
                return(Json(new { Status = Constant.RESPONSE_ERROR, Description = "Unauthorized." }));
            }
            if (id == null || id == 0)
            {
                return(Json(new { Status = Constant.RESPONSE_ERROR, Description = "Invalid ID Specification." }));
            }


            if (ModelState.IsValid)
            {
                using (var transaction = _dataContext.Database.BeginTransaction())
                {
                    var entity = _dataContext.Users.Where(p => p.UserId == id && p.Deleted == false).SingleOrDefault();
                    if (entity == null)
                    {
                        return(Json(new { Status = Constant.RESPONSE_ERROR, Description = "User not found. Invalid User." }));
                    }

                    entity.Contact.Phone  = model.Phone;
                    entity.Contact.Mobile = model.Mobile;
                    entity.Enabled        = true;
                    _dataContext.SaveChanges();

                    long userId         = id.Value;
                    long userRoleTypeId = _dataContext.UserRoleTypes.Where(p => p.Name == model.UserRole.RoleName && p.Deleted == false).Single().UserRoleTypeId;
                    var  userRole       = _dataContext.UserRoles.Where(p => p.UserId == userId && p.Deleted == false).Take(1).SingleOrDefault();

                    ClearRoles(userId);
                    _dataContext.SaveChanges();

                    if (userRole == null)
                    {
                        userRole = new UserRole();
                        userRole.UserRoleTypeId = userRoleTypeId;
                        userRole.UserId         = userId;
                        _dataContext.UserRoles.Add(userRole);
                    }
                    else
                    {
                        userRole.UserRoleTypeId = userRoleTypeId;
                    }

                    _dataContext.SaveChanges();

                    if (model.UserRole.RoleName == "SLH")
                    {
                        if (model.UserRole.Services == null || model.UserRole.Services.Where(p => p.Selected == true).Count() <= 0)
                        {
                            return(Json(new { Status = Constant.RESPONSE_ERROR, Description = "At least one service must be selected for the service line head." }));
                        }

                        foreach (var service in model.UserRole.Services.Where(p => p.Selected == true))
                        {
                            UserService userService = new UserService();
                            userService.UserId        = userId;
                            userService.ServiceTypeId = service.ServiceTypeId;
                            _dataContext.UserServices.Add(userService);
                        }
                    }
                    _dataContext.SaveChanges();


                    if (model.UserRole.RoleName == "AVP")
                    {
                        if (model.UserRole.RegionServices == null || model.UserRole.RegionServices.Where(p => p.Selected == true).Count() <= 0)
                        {
                            return(Json(new { Status = Constant.RESPONSE_ERROR, Description = "At least one service region must be selected for the AVP." }));
                        }

                        foreach (var service in model.UserRole.RegionServices.Where(p => p.Selected == true).Select(p => p.ServiceTypeId).Distinct())
                        {
                            UserService userService = new UserService();
                            userService.UserId        = userId;
                            userService.ServiceTypeId = service;
                            _dataContext.UserServices.Add(userService);
                        }

                        foreach (var region in model.UserRole.RegionServices.Where(p => p.Selected == true).Select(p => p.RegionTypeId).Distinct())
                        {
                            UserRegion userRegion = new UserRegion();
                            userRegion.UserId       = userId;
                            userRegion.RegionTypeId = region;
                            _dataContext.UserRegions.Add(userRegion);
                        }
                    }

                    _dataContext.SaveChanges();


                    if (model.UserRole.RoleName == "CEO" || model.UserRole.RoleName == "DBD" || model.UserRole.RoleName == "CL" || model.UserRole.RoleName == "NCM")
                    {
                        if (model.UserRole.Sites == null || model.UserRole.Sites.Where(p => p.Selected == true).Count() <= 0)
                        {
                            return(Json(new { Status = Constant.RESPONSE_ERROR, Description = "At least one site must be selected for a " + model.UserRole.RoleName + "." }));
                        }

                        foreach (var service in model.UserRole.Sites.Where(p => p.Selected == true).Select(p => p.ServiceTypeId).Distinct())
                        {
                            UserService userService = new UserService();
                            userService.UserId        = userId;
                            userService.ServiceTypeId = service;
                            _dataContext.UserServices.Add(userService);
                        }


                        foreach (var region in model.UserRole.Sites.Where(p => p.Selected == true).Select(p => p.RegionTypeId).Distinct())
                        {
                            UserRegion userRegion = new UserRegion();
                            userRegion.UserId       = userId;
                            userRegion.RegionTypeId = region;
                            _dataContext.UserRegions.Add(userRegion);
                        }


                        foreach (var site in model.UserRole.Sites.Where(p => p.Selected == true).Select(p => p.CHGSiteId).Distinct())
                        {
                            UserCHGSite userCHGSite = new UserCHGSite();
                            userCHGSite.UserId    = userId;
                            userCHGSite.CHGSiteId = site;
                            _dataContext.UserCHGSites.Add(userCHGSite);
                        }
                    }

                    _dataContext.SaveChanges();


                    if (model.UserRole.RoleName == "CL")
                    {
                        if (model.UserRole.PreScreenTypeId == null)
                        {
                            return(Json(new { Status = Constant.RESPONSE_ERROR, Description = "Pre-screen type must be selected for the liaison." }));
                        }


                        UserPreScreen userPreScreeen = new UserPreScreen();
                        userPreScreeen.UserId          = userId;
                        userPreScreeen.PreScreenTypeId = model.UserRole.PreScreenTypeId.Value;
                        _dataContext.UserPreScreens.Add(userPreScreeen);
                    }
                    _dataContext.SaveChanges();

                    transaction.Commit();

                    return(Json(new { Status = Constant.RESPONSE_OK, Description = "User saved successfully.", ContextId = entity.UserId }));
                }
            }

            return(Json(new { Status = Constant.RESPONSE_ERROR, Description = "One or more fields failed validation." }));
        }
예제 #18
0
        //加载
        public void LoadXML(string xmlPath)
        {
            /*
             * await Task.Run(() =>
             * {
             *  while (htWindow.HTWindow.HalconWindow.Handle == (IntPtr)0xffffffffffffffff)
             *  {
             *      Thread.Sleep(500);
             *  }
             * });
             */
            try
            {
                XElement root = XElement.Load(xmlPath);
                XElement bond2ModelParameterNode = root.Element("Bond2ModelParameter");
                if (bond2ModelParameterNode == null)
                {
                    return;
                }
                XElement bond2ModelNode = root.Element("Bond2Models");
                if (bond2ModelNode == null)
                {
                    return;
                }
                XMLHelper.ReadParameters(bond2ModelParameterNode, bond2ModelParameter);
                (createBond2Model as CreateBond2Model).LoadReferenceData();

                bond2Models.Clear();
                bondWireRegionGroups.Clear();
                Groups.Clear();
                XElement bondWireParameterNode = root.Element("BondWireParameter");
                XMLHelper.ReadParameters(bondWireParameterNode, bondWireParameter);

                XElement bondAutoRegionsParameterNode = root.Element("BondAutoRegionsParameter"); //自动
                XMLHelper.ReadParameters(bondAutoRegionsParameterNode, bondAutoRegionsParameter); //自动

                //bond2Models.Clear();放前面
                foreach (var modelNode in bond2ModelNode.Elements("Model"))
                {
                    Bond2Model model = new Bond2Model();
                    model.ModelIdPath          = modelNode.Attribute("ModelIDPath")?.Value;
                    model.Index                = (int.Parse)(modelNode.Attribute("Index")?.Value);
                    model.RotatedImagePath     = modelNode.Element("RotatedImagePath")?.Value;
                    model.Bond2UserRegion      = UserRegion.FromXElement(modelNode.Element("Bond2ModelRegion"));
                    model.RotateLineUserRegion = UserRegion.FromXElement(modelNode.Element("RotateLineRegion"));
                    model.Bond2UserRegionDiff  = UserRegion.FromXElement(modelNode.Element("Bond2ModelRegionDiff"));//
                    XMLHelper.ReadRegion(modelNode, model.RefineUserRegions, "RefineRegions");
                    bond2Models.Add(model);
                    model.Index = bond2Models.Count;
                }
                (createBond2Model as CreateBond2Model).ModelsCount = bond2Models.Count;

                // 自动焊点区域部分
                XElement GenGroupsNode = root.Element("GenGroups");
                if (GenGroupsNode != null)
                {
                    foreach (var groupNode in GenGroupsNode.Elements("GenGroup"))
                    {
                        BondMatchAutoRegionGroup group = new BondMatchAutoRegionGroup();
                        group.Bond2UserRegion = UserRegion.FromXElement(groupNode.Element("Bond2Region"), false, bond2ModelParameter.DieImageRowOffset, bond2ModelParameter.DieImageColumnOffset);
                        group.WireUserRegion  = UserRegion.FromXElement(groupNode.Element("WireRegion"), false, bond2ModelParameter.DieImageRowOffset, bond2ModelParameter.DieImageColumnOffset);
                        //XMLHelper.ReadParameters(groupNode, group.Parameter);
                        Groups.Add(group);
                        group.Index          = Groups.Count;
                        group.Bond2_BallNums = int.Parse(groupNode.Attribute("Bond2Numbers")?.Value);
                    }
                }

                XElement bondWireGroupNode = root.Element("BondWireGroups");
                if (bondWireGroupNode == null)
                {
                    return;
                }

                foreach (var groupNode in bondWireGroupNode.Elements("BondWireGroup"))
                {
                    BondWireRegionGroup group = new BondWireRegionGroup();
                    group.Bond2UserRegion = UserRegion.FromXElement(groupNode.Element("Bond2Region"), false, bond2ModelParameter.DieImageRowOffset, bond2ModelParameter.DieImageColumnOffset);
                    group.WireUserRegion  = UserRegion.FromXElement(groupNode.Element("WireRegion"), false, bond2ModelParameter.DieImageRowOffset, bond2ModelParameter.DieImageColumnOffset);                                                                                                                                                                                         //XMLHelper.ReadParameters(groupNode, group.Parameter);
                    bondWireRegionGroups.Add(group);
                    group.Index          = bondWireRegionGroups.Count;
                    group.Bond2_BallNums = int.Parse(groupNode.Attribute("Bond2Numbers")?.Value);
                }

                (bondMatchAutoRegions as BondMatchAutoRegions).GroupsCount = Groups.Count;
                (addBondMatchRegions as AddBondMatchRegions).GroupsCount   = bondWireRegionGroups.Count;

                (createBond2Model as CreateBond2Model).Initial();

                //加载焊点检测区域及其参数
                XMLHelper.ReadRegion(root, BondVerifyUserRegions, "BondVerifyUserRegions", bond2ModelParameter.DieImageRowOffset, bond2ModelParameter.DieImageColumnOffset, false, false, false, false, true);
                //
                XElement BondVerifyModelParaNode = root.Element("BondVerifyModelPara");
                XMLHelper.ReadParameters(BondVerifyModelParaNode, BondVerifyModelPara);
                // 兼容老产品打开参数不保留 2021-0105 by wj
                if (BondVerifyUserRegions.Count() != 0)
                {
                    //更新PadUserRegions
                    for (int i = 0; i < BondVerifyUserRegions.Count; i++)
                    {
                        //检测区域内通道值设置
                        if (BondVerifyUserRegions.ElementAt(i).ChannelNames.Count() == 0)
                        {
                            BondVerifyUserRegions.ElementAt(i).ChannelNames = bond2ModelParameter.ChannelNames;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
예제 #19
0
        //加载
        public void LoadXML(string xmlPath)
        {
            // 1216 lw 此处保存产品会出错

            /*await Task.Run(() =>
             * {
             *  while (htWindow.HTWindow.HalconWindow.Handle == (IntPtr)0xffffffffffffffff)
             *  {
             *      Thread.Sleep(500);
             *  }
             * });*/

            IsLoadXML = true;

            try
            {
                XElement root = XElement.Load(xmlPath);
                XElement wireParameterNode = root.Element("WireParameter");
                if (wireParameterNode == null)
                {
                    return;
                }
                XMLHelper.ReadParameters(wireParameterNode, wireParameter);

                //从金线自动生成区域加载参考信息
                (wireAddAutoRegion as WireAddAutoRegion).LoadReferenceData();

                //-----------------------------------------------------------------------------------------------------------------------------
                XElement wireRegionsGroupNode = root.Element("WireRegionsGroup");
                if (wireRegionsGroupNode == null)
                {
                    return;
                }

                wireRegionsGroup.Clear();
                foreach (var groupNode in wireRegionsGroupNode.Elements("Group"))
                {
                    WireRegionsGroup group = new WireRegionsGroup();
                    group.BondOnICUserRegions    = UserRegion.FromXElement(groupNode.Element("BondOnICUserRegions"), false, wireParameter.DieImageRowOffset, wireParameter.DieImageColumnOffset, false, false, false);
                    group.BondOnFrameUserRegions = UserRegion.FromXElement(groupNode.Element("BondOnFrameUserRegions"), false, wireParameter.DieImageRowOffset, wireParameter.DieImageColumnOffset, false, false, false);
                    //group.RefLineUserRegions = UserRegion.FromXElement(groupNode.Element("RefLineUserRegions"), false, wireParameter.DieImageRowOffset, wireParameter.DieImageColumnOffset);
                    XMLHelper.ReadRegion(groupNode, group.LineUserRegions, "LineUserRegions", wireParameter.DieImageRowOffset, wireParameter.DieImageColumnOffset, false, true, false, false);

                    //1212 金线检测区域的通道值设置-生成线
                    for (int i = 0; i < group.LineUserRegions.Count(); i++)
                    {
                        if (group.LineUserRegions.ElementAt(i).ChannelNames.Count() == 0)
                        {
                            group.LineUserRegions.ElementAt(i).ChannelNames = wireParameter.ChannelNames; // currentChannelName
                            int tmp_ind;
                            tmp_ind = group.LineUserRegions.ElementAt(i).ImageIndex;
                        }
                    }
                    wireRegionsGroup.Add(group);
                    group.Index = wireRegionsGroup.Count;
                }
                (wireAddRegion as WireAddRegion).GroupsCount = wireRegionsGroup.Count;

                //-----加载自动生成金线界面
                //加载起始焊点区域归属
                startBondOnRecipes.Clear();
                XMLHelper.ReadOnRecipes(root, startBondOnRecipes, "StartBondOnRecipes");
                XMLHelper.ReadRegion(root, startBallAutoUserRegion, "StartBallAutoUserRegion", wireParameter.DieImageRowOffset,
                                     wireParameter.DieImageColumnOffset, false, false, false, false);

                // add lw
                HTuple hv__filePath = new HTuple(), hv_FileExists = new HTuple();
                HTuple Startreg_index_after_sort = new HTuple();
                hv__filePath = ModelsDirectory + "Startreg_index_after_sort.tup";
                HOperatorSet.FileExists(hv__filePath, out hv_FileExists);
                if ((int)(hv_FileExists) != 0)
                {
                    HOperatorSet.ReadTuple(hv__filePath, out Startreg_index_after_sort);
                }
                else
                {
                    Startreg_index_after_sort = HTuple.TupleGenSequence(1, startBallAutoUserRegion.Count, 1);
                }

                for (int i = 0; i < Startreg_index_after_sort.Length; i++)
                {
                    startBallAutoUserRegion[i].Index_ini = Startreg_index_after_sort[i];
                }

                if (startBondOnRecipes.Count == 0)
                {
                    IsLoadXML = false;
                    if (wireParameter.IsEnableStartVirtualBond == true)
                    {
                        wireParameter.IsEnableStartVirtualBond = false;
                        wireParameter.IsEnableStartVirtualBond = true;
                    }
                    if (wireParameter.IsEnableStartVirtualBond == false)
                    {
                        wireParameter.IsEnableStartVirtualBond = true;
                        wireParameter.IsEnableStartVirtualBond = false;
                    }
                }

                //加载结束焊点归属
                endBondOnRecipes.Clear();
                XMLHelper.ReadOnRecipes(root, endBondOnRecipes, "EndBondOnRecipes");
                XMLHelper.ReadRegion(root, stopBallAutoUserRegion, "StopBallAutoUserRegion", wireParameter.DieImageRowOffset,
                                     wireParameter.DieImageColumnOffset, false, false, false, false);

                // add lw
                HTuple Stopreg_index_after_sort  = new HTuple();
                hv__filePath = ModelsDirectory + "Stopreg_index_after_sort.tup";
                HOperatorSet.FileExists(hv__filePath, out hv_FileExists);
                if ((int)(hv_FileExists) != 0)
                {
                    HOperatorSet.ReadTuple(hv__filePath, out Stopreg_index_after_sort);
                }
                else
                {
                    Stopreg_index_after_sort = HTuple.TupleGenSequence(1, stopBallAutoUserRegion.Count, 1);
                }

                for (int i = 0; i < Stopreg_index_after_sort.Length; i++)
                {
                    stopBallAutoUserRegion[i].Index_ini = Stopreg_index_after_sort[i];
                }

                if (endBondOnRecipes.Count == 0)
                {
                    IsLoadXML = false;
                    if (wireParameter.IsEnableEndVirtualBond == true)
                    {
                        wireParameter.IsEnableEndVirtualBond = false;
                        wireParameter.IsEnableEndVirtualBond = true;
                    }
                    if (wireParameter.IsEnableEndVirtualBond == false)
                    {
                        wireParameter.IsEnableEndVirtualBond = true;
                        wireParameter.IsEnableEndVirtualBond = false;
                    }
                }

                //---------------生成界面中金线
                (wireAddAutoRegion as WireAddAutoRegion).UpdateStartandStopLineRegions(true);

                //金线模板Model
                XElement wireRegionsModelGroupNode = root.Element("WireRegionsModelGroup");
                if (wireRegionsModelGroupNode == null)
                {
                    return;
                }
                wireRegionsModelGroup.Clear();

                foreach (var modelGroupNode in wireRegionsModelGroupNode.Elements("ModelGroup"))
                {
                    WireAutoRegionGroup modelGroup = new WireAutoRegionGroup();
                    modelGroup.ModelStartUserRegions = UserRegion.FromXElement(modelGroupNode.Element("ModelStartUserRegions"),
                                                                               false, wireParameter.DieImageRowOffset, wireParameter.DieImageColumnOffset, false, false, false);
                    modelGroup.ModelStopUserRegions = UserRegion.FromXElement(modelGroupNode.Element("ModelStopUserRegions"),
                                                                              false, wireParameter.DieImageRowOffset, wireParameter.DieImageColumnOffset, false, false, false);
                    modelGroup.RefLineModelRegions = UserRegion.FromXElement(modelGroupNode.Element("RefLineModelRegions"), false,
                                                                             wireParameter.DieImageRowOffset, wireParameter.DieImageColumnOffset, false, false, false);
                    XMLHelper.ReadRegion(modelGroupNode, modelGroup.LineModelRegions, "LineModelRegions", wireParameter.DieImageRowOffset,
                                         wireParameter.DieImageColumnOffset, false, false, true, false);
                    //1212 金线检测区域的通道值设置-模板线
                    for (int i = 0; i < modelGroup.LineModelRegions.Count(); i++)
                    {
                        if (modelGroup.LineModelRegions.ElementAt(i).ChannelNames.Count() == 0)
                        {
                            modelGroup.LineModelRegions.ElementAt(i).ChannelNames = wireParameter.ChannelNames;
                            int tmp_ind;
                            tmp_ind = modelGroup.LineModelRegions.ElementAt(i).ImageIndex;
                        }
                    }
                    wireRegionsModelGroup.Add(modelGroup);
                    modelGroup.Index = wireRegionsModelGroup.Count;

                    modelGroup.SelectModelNumber = (int)modelGroupNode.FirstAttribute.NextAttribute;
                }
                (wireAddAutoRegion as WireAddAutoRegion).ModelGroupsCount = wireRegionsModelGroup.Count;

                //恢复自动生成金线起始区域金线ModelType  add by wj
                for (int i = 0; i < wireParameter.WireRegModelType.Length; i++)
                {
                    startBallAutoUserRegion[i].ModelGroups       = wireRegionsModelGroup;
                    startBallAutoUserRegion[i].CurrentModelGroup = wireRegionsModelGroup.ElementAt(wireParameter.WireRegModelType[i] - 1);
                }

                //1109 赋值初始排序
                if (wireParameter.WireAutoIndex_sorted_start.Length == startBallAutoUserRegion.Count)
                {
                    for (int i = 0; i < wireParameter.WireAutoIndex_sorted_start.Length; i++)
                    {
                        startBallAutoUserRegion[i].Index_ini = wireParameter.WireAutoIndex_sorted_start[i];
                    }
                }
                if (wireParameter.WireAutoIndex_sorted_stop.Length == stopBallAutoUserRegion.Count)
                {
                    for (int i = 0; i < wireParameter.WireAutoIndex_sorted_stop.Length; i++)
                    {
                        stopBallAutoUserRegion[i].Index_ini = wireParameter.WireAutoIndex_sorted_stop[i];
                    }
                }

                //1029 default model setting
                if (wireRegionsModelGroup.Count > 0)
                {
                    (wireAddAutoRegion as WireAddAutoRegion).CurrentModelGroup = (wireAddAutoRegion as WireAddAutoRegion).ModelGroups.ElementAt(0);
                }

                if ((wireAddAutoRegion as WireAddAutoRegion).StartBallAutoUserRegion.Count > 0)
                {
                    (wireAddAutoRegion as WireAddAutoRegion).WireParameter.IsStartPickUp = true;
                }
                if ((wireAddAutoRegion as WireAddAutoRegion).StopBallAutoUserRegion.Count > 0)
                {
                    (wireAddAutoRegion as WireAddAutoRegion).WireParameter.IsStopPickUp = true;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
예제 #20
0
        //加载
        public void LoadXML(string xmlPath)
        {
            /*
             * await Task.Run(() =>
             * {
             *  while (htWindow.HTWindow.HalconWindow.Handle == (IntPtr)0xffffffffffffffff)
             *  {
             *      Thread.Sleep(500);
             *  }
             * });
             */
            try
            {
                XElement root = XElement.Load(xmlPath);
                XElement bondMeasureParameterNode      = root.Element("BondMeasureParameter");
                XElement bond1AutoRegionsParameterNode = root.Element("Bond1AutoRegionsParameter");//自动
                if (bondMeasureParameterNode == null)
                {
                    return;
                }
                XMLHelper.ReadParameters(bondMeasureParameterNode, bondMeasureParameter);
                XMLHelper.ReadParameters(bond1AutoRegionsParameterNode, bond1AutoRegionsParameter);//自动
                (createBondMeasureModel as CreateBondMeasureModel).LoadReferenceData();
                XMLHelper.ReadRegion(root, bondModelUserRegions, "BondModelUserRegions", 0, 0, true);

                //XMLHelper.ReadRegion(root, BondVerifyUserRegions, "BondVerifyUserRegions", bondMeasureParameter.DieImageRowOffset, bondMeasureParameter.DieImageColumnOffset);

                XMLHelper.ReadRegion(root, PadUserRegions, "PadUserRegions", bondMeasureParameter.DieImageRowOffset, bondMeasureParameter.DieImageColumnOffset, false, false, false, false, true);
                //
                XElement BondVerifyModelParaNode = root.Element("BondVerifyModelPara");
                XMLHelper.ReadParameters(BondVerifyModelParaNode, bondVerifyModelPara);
                // 兼容老产品打开参数不保留 2021-0105 by wj
                if (PadUserRegions.Count() != 0)
                {
                    //add by wj 2021-01-05
                    string regionPathName;
                    string regionName = "Pad_Regions";
                    regionPathName = $"\\{regionName}.reg";

                    HOperatorSet.ReadRegion(out HObject freeRegion, $"{ModelsBondDirectory}\\{ regionPathName}");

                    //更新PadUserRegions
                    for (int i = 0; i < PadUserRegions.Count; i++)
                    {
                        //检测区域内通道值设置
                        if (PadUserRegions.ElementAt(i).ChannelNames.Count() == 0)
                        {
                            PadUserRegions.ElementAt(i).ChannelNames = bondMeasureParameter.ChannelNames;
                        }
                        if (PadUserRegions[i].RegionType == RegionType.Region)
                        {
                            HOperatorSet.SelectObj(freeRegion, out HObject padFreeRegion, i + 1);
                            PadUserRegions[i].CalculateRegion = padFreeRegion;
                            HOperatorSet.MoveRegion(padFreeRegion, out HObject _padFreeRegion, -bondMeasureParameter.DieImageRowOffset, -bondMeasureParameter.DieImageColumnOffset);
                            PadUserRegions[i].DisplayRegion = _padFreeRegion;
                        }
                    }
                }

                XMLHelper.ReadRegion(root, Bond2UserRegion, "Bond2UserRegion", 0, 0, true);
                XMLHelper.ReadRegion(root, Bond2UserRegionDiff, "Bond2UserRegionDiff", 0, 0, true);
                XMLHelper.ReadRegion(root, RotateLineUserRegion, "RotateLineUserRegion", 0, 0, true);

                XElement BondMeasureVerifyParameterNode = root.Element("BondMeasureVerifyParameter");
                XMLHelper.ReadParameters(BondMeasureVerifyParameterNode, bondMeasureVerifyParameter);
                (createBondMeasureModel as CreateBondMeasureModel).Initial();

                bondWireRegionGroups.Clear();
                XElement bondWireGroupNode = root.Element("BondWireGroups");
                if (bondWireGroupNode == null)
                {
                    return;
                }
                //自动生成焊点区域部分
                foreach (var groupNode in bondWireGroupNode.Elements("BondWireGroup"))
                {
                    BondWireRegionGroup group = new BondWireRegionGroup();
                    group.Bond2UserRegion = UserRegion.FromXElement(groupNode.Element("Bond2Region"), false);
                    group.WireUserRegion  = UserRegion.FromXElement(groupNode.Element("WireRegion"), false);                                                                                                                                                                                         //XMLHelper.ReadParameters(groupNode, group.Parameter);
                    bondWireRegionGroups.Add(group);
                    group.Index          = bondWireRegionGroups.Count;
                    group.Bond2_BallNums = int.Parse(groupNode.Attribute("Bond2Numbers")?.Value);
                }
                (createAutoBondMeasureModel as CreateAutoBondMeasureModel).GroupsCount = bondWireRegionGroups.Count;
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.ToString());
                return;
            }
        }