private static bool IsLadderGraphOpen(LadderNetworkViewModel ladderNetwork) { ladderNetwork.ClearSearchedFlag(); //首先检查元素的基本性质 if (!Assert(ladderNetwork)) { return(true); } var rootElements = ladderNetwork.GetElements().Where(x => { return(x.Type == ElementType.Output); }); //检查上并联错误 int MinY = rootElements.First().Y; foreach (var ele in rootElements) { if (ele.Y < MinY) { MinY = ele.Y; } } var tempQueue = new Queue <BaseViewModel>(rootElements); while (tempQueue.Count > 0) { var item = tempQueue.Dequeue(); if (!item.IsSearched) { item.IsSearched = true; if (item.Y < MinY) { ladderNetwork.ErrorModels.Clear(); ladderNetwork.ErrorModels.Add(item); return(true); } foreach (var ele in item.NextElements) { tempQueue.Enqueue(ele); } } } return(false); }
private static bool IsLadderGraphShort(LadderNetworkViewModel ladderNetwork) { ladderNetwork.ClearSearchedFlag(); var rootElements = ladderNetwork.LadderElements.Where(x => { return(x.Type == ElementType.Output); }); Queue <BaseViewModel> tempQueue = new Queue <BaseViewModel>(rootElements); while (tempQueue.Count > 0) { var ele = tempQueue.Dequeue(); if (!ele.IsSearched) { ele.IsSearched = true; if (ele.Type != ElementType.Null && (!CheckLadderGraphShort(ladderNetwork, ele))) { return(true); } } foreach (var item in ele.NextElements) { tempQueue.Enqueue(item); } } return(false); }