public void Display(HWindow windowHandle) { windowHandle.SetColor("magenta"); LineRegions?.DispObj(windowHandle); windowHandle.SetColor("green"); CrossedUsed?.DispObj(windowHandle); windowHandle.SetDraw("margin"); windowHandle.SetColor("orange"); FindLineRects?.DispObj(windowHandle); windowHandle.SetColor("green"); windowHandle.SetDraw("fill"); windowHandle.SetLineWidth(3); Edges?.DispObj(windowHandle); windowHandle.SetLineWidth(1); windowHandle.SetDraw("margin"); windowHandle.SetColor("red"); Line.DisplayGraphics(windowHandle); windowHandle.SetColor("firebrick"); DisplayPointMarkers(windowHandle); }
public FindLineManager(ISnackbarMessageQueue messageQueue = null) { CrossesIgnored.GenEmptyObj(); LineRegions.GenEmptyObj(); FindLineRects.GenEmptyObj(); Edges.GenEmptyObj(); MessageQueue = messageQueue; }
public FindLineManager(Dictionary <string, FindLineFeeding> findLineFeedings, ISnackbarMessageQueue messageQueue = null) { FindLineFeedings = findLineFeedings; CrossesIgnored.GenEmptyObj(); LineRegions.GenEmptyObj(); FindLineRects.GenEmptyObj(); Edges.GenEmptyObj(); MessageQueue = messageQueue; }
private void DisplayCrosses(HWindow windowHandle) { windowHandle.SetDraw("margin"); windowHandle.SetLineWidth(1); windowHandle.SetColor("red"); CrossesIgnored?.DispObj(windowHandle); windowHandle.SetColor("magenta"); windowHandle.SetLineWidth(3); FindLineRects?.DispObj(windowHandle); windowHandle.SetColor("blue"); LineRegions?.DispObj(windowHandle); }
public void SaveXML() { try { Directory.GetFiles(ModelsDirectory).ToList().ForEach(File.Delete); XElement root = new XElement("Recipe"); XMLHelper.AddIdentifier(root, IdentifyString); // XElement wireParameterNode = new XElement("WireParameter"); XMLHelper.AddParameters(wireParameterNode, wireParameter, IdentifyString); //保存起始焊点归属 XMLHelper.AddOnRecipes(root, startBondOnRecipes, "StartBondOnRecipes"); XMLHelper.AddRegion(root, startBallAutoUserRegion, "StartBallAutoUserRegion", false, false, false, false); //保存结束焊点归属 XMLHelper.AddOnRecipes(root, endBondOnRecipes, "EndBondOnRecipes"); XMLHelper.AddRegion(root, stopBallAutoUserRegion, "StopBallAutoUserRegion", false, false, false, false); //金线模板组合 XElement wireRegionsModelGroupNode = new XElement("WireRegionsModelGroup"); foreach (var modelGroup in wireRegionsModelGroup) { XElement modelGroupNode = new XElement("ModelGroup"); //组号索引 modelGroupNode.Add(new XAttribute("Index", modelGroup.Index.ToString())); //金线模板序号选择 modelGroupNode.Add(new XAttribute("SelectModelNumber", modelGroup.SelectModelNumber.ToString())); //模板起始焊点,结束焊点,焊点点金线,金线检测区域带参数 modelGroupNode.Add(modelGroup.ModelStartUserRegions?.ToXElement("ModelStartUserRegions")); modelGroupNode.Add(modelGroup.ModelStopUserRegions?.ToXElement("ModelStopUserRegions")); modelGroupNode.Add(modelGroup.RefLineModelRegions?.ToXElement("RefLineModelRegions")); XMLHelper.AddRegion(modelGroupNode, modelGroup.LineModelRegions, "LineModelRegions", false, false, true, false); wireRegionsModelGroupNode.Add(modelGroupNode); } //-----金线检测区域精修及保存区域 XElement wireRegionsGroupNode = new XElement("WireRegionsGroup"); foreach (var group in wireRegionsGroup) { XElement groupNode = new XElement("Group"); groupNode.Add(new XAttribute("Index", group.Index.ToString())); groupNode.Add(group.BondOnICUserRegions?.ToXElement("BondOnICUserRegions")); groupNode.Add(group.BondOnFrameUserRegions?.ToXElement("BondOnFrameUserRegions")); //groupNode.Add(group.RefLineUserRegions?.ToXElement("RefLineUserRegions")); XMLHelper.AddRegion(groupNode, group.LineUserRegions, "LineUserRegions", false, true, false, false); wireRegionsGroupNode.Add(groupNode); } root.Add(wireParameterNode); root.Add(wireRegionsModelGroupNode); root.Add(wireRegionsGroupNode); root.Save(XmlPath); HOperatorSet.GenEmptyObj(out HObject LineRegions); HTuple LineRegionsNumbers = new HTuple(); HOperatorSet.WriteRegion(Algorithm.Region.ConcatRegion(wireRegionsGroup.Select(r => r.BondOnFrameUserRegions).Where(r => r.IsEnable).Select(r => r.CalculateRegion)), ModelsDirectory + "Start_Regions.reg"); HOperatorSet.WriteRegion(Algorithm.Region.ConcatRegion(wireRegionsGroup.Select(r => r.BondOnICUserRegions).Where(r => r.IsEnable).Select(r => r.CalculateRegion)), ModelsDirectory + "Stop_Regions.reg"); foreach (var group in wireRegionsGroup) { LineRegions = LineRegions.ConcatObj(Algorithm.Region.ConcatRegion((group.LineUserRegions).Where(r => r.IsEnable).Select(r => r.CalculateRegion))); LineRegionsNumbers = LineRegionsNumbers.TupleConcat(group.LineUserRegions.Count); } if (wireParameter.ImageCountChannels == 1) { HOperatorSet.WriteTuple(new HTuple(1), ModelsDirectory + "Image_Index.tup"); } else if (wireParameter.ImageCountChannels > 1) { HOperatorSet.WriteTuple(wireParameter.ImageIndex + 1, ModelsDirectory + "Image_Index.tup"); } HOperatorSet.WriteRegion(LineRegions, ModelsDirectory + "Inspect_Regions.reg"); HOperatorSet.WriteTuple(LineRegionsNumbers, RecipeDirectory + "InspectRegNum.tup"); HOperatorSet.WriteTuple(LineRegionsNumbers, ModelsDirectory + "InspectRegNum.tup");//Recipe下 HOperatorSet.WriteTuple(wireParameter.IsTailInspect == false ? 0 : 1, ModelsDirectory + "IsInspectTail.tup"); //保存起始焊点区域归属 HTuple StartRegBelongToWhat = new HTuple(); foreach (var StartonRecipe in startBondOnRecipes) { if (StartonRecipe.IsSelected) { HOperatorSet.TupleConcat(StartRegBelongToWhat, new HTuple(StartonRecipe.Name), out StartRegBelongToWhat); } } HOperatorSet.WriteTuple(StartRegBelongToWhat, ModelsDirectory + "StartRegBelongToWhat.tup"); //1104 改成存带拾取顺序的组合焊点 HOperatorSet.WriteTuple(new HTuple(wireParameter.StartBondonRecipesIndexs), ModelsDirectory + "StartRegBelongToWhat.tup"); //保存结束焊点区域归属 HTuple StopRegBelongToWhat = new HTuple(); foreach (var StoponRecipe in endBondOnRecipes) { if (StoponRecipe.IsSelected) { HOperatorSet.TupleConcat(StopRegBelongToWhat, new HTuple(StoponRecipe.Name), out StopRegBelongToWhat); } } HOperatorSet.WriteTuple(StopRegBelongToWhat, ModelsDirectory + "StopRegBelongToWhat.tup"); //1104 改成存带拾取顺序的组合焊点 HOperatorSet.WriteTuple(new HTuple(wireParameter.StopBondonRecipesIndexs), ModelsDirectory + "StopRegBelongToWhat.tup"); //1104 存储焊点组合后的重新排序信息 HTuple Startreg_index_after_sort = new HTuple(); HTuple ni; ni = 0; bool start_group_sort = false; foreach (var start_reg in startBallAutoUserRegion) { //HOperatorSet.TupleConcat(Startreg_index_after_sort, new HTuple(start_reg.Index), out Startreg_index_after_sort); Startreg_index_after_sort[ni] = start_reg.Index_ini; ni++; if (ni != start_reg.Index_ini) { start_group_sort = true; } } HOperatorSet.WriteTuple(Startreg_index_after_sort, ModelsDirectory + "Startreg_index_after_sort.tup"); HOperatorSet.WriteTuple(start_group_sort == false ? 0 : 1, ModelsDirectory + "Startreg_need_sort.tup"); HTuple Stopreg_index_after_sort = new HTuple(); ni = 0; bool stop_group_sort = false; foreach (var stop_reg in stopBallAutoUserRegion) { //HOperatorSet.TupleConcat(Stopreg_index_after_sort, new HTuple(stop_reg.Index), out Stopreg_index_after_sort); Stopreg_index_after_sort[ni] = stop_reg.Index_ini; ni++; if (ni != stop_reg.Index_ini) { stop_group_sort = true; } } HOperatorSet.WriteTuple(Stopreg_index_after_sort, ModelsDirectory + "Stopreg_index_after_sort.tup"); HOperatorSet.WriteTuple(stop_group_sort == false ? 0 : 1, ModelsDirectory + "Stopreg_need_sort.tup"); HOperatorSet.WriteTuple(new HTuple(wireParameter.IsEnableStartVirtualBond).TupleConcat(new HTuple(wireParameter.IsEnableEndVirtualBond)), ModelsDirectory + "IsEnableVirtualBond.tup"); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }