private void UpdateViewShapePipe() { //ShowOrHideParameterInParameterViewer("CHSType", false); switch (CHSType) { case "CHS": IsShapeCircularHSS = true; FetchList("CHS_Shapes", CHSShapeGroup.ToString()); break; case "Pipe": IsShapePipe = true; FetchList("PipeShapes", PipeGroup.ToString()); break; } }
public static IEnumerable <PipeGroup> GroupByZone(this IEnumerable <DBM_PIPE> source) { var zones = source .Where(x => !string.IsNullOrWhiteSpace(x.ZONE)) .Select(x => x.ZONE) .Distinct() .OrderBy(x => x) .ToArray(); var groups = new List <PipeGroup>(); foreach (var zone in zones) { var minPressure = source.Where(x => x.ZONE == zone).Where(x => x.PRESSURE_MIN.HasValue).Select(x => x.PRESSURE_MIN.Value).Min(); var maxPressure = source.Where(x => x.ZONE == zone).Where(x => x.PRESSURE_MAX.HasValue).Select(x => x.PRESSURE_MAX.Value).Max(); var avgPressure = source.Where(x => x.ZONE == zone).Where(x => x.PRESSURE_AVG.HasValue).Select(x => x.PRESSURE_AVG.Value).Average(); var rangePressure = maxPressure - minPressure; var minVelocity = source.Where(x => x.ZONE == zone).Where(x => x.VELOCITY_MIN.HasValue).Select(x => x.VELOCITY_MIN.Value).Min(); var maxVelocity = source.Where(x => x.ZONE == zone).Where(x => x.VELOCITY_MAX.HasValue).Select(x => x.VELOCITY_MAX.Value).Max(); var avgVelocity = source.Where(x => x.ZONE == zone).Where(x => x.VELOCITY_AVG.HasValue).Select(x => x.VELOCITY_AVG.Value).Average(); var rangeVelocity = maxVelocity - minVelocity; var group = new PipeGroup(); var pipes = source.Where(x => x.ZONE == zone).Select(ToPipe).ToArray(); group.Zone = zone; group.MinPressure = minPressure; group.MaxPressure = maxPressure; group.AvgPressure = avgPressure; group.StDevPressure = rangePressure; group.MinVelocity = minVelocity; group.MaxVelocity = maxVelocity; group.AvgVelocity = avgVelocity; group.StDevVelocity = rangeVelocity; group.Pipes = pipes; groups.Add(group); } return(groups); }
public PipeGroup CreatePipeGroup() { var pipeGroup = pipeGroupPool.FirstOrDefault(p => p.Idle); if (pipeGroup == null) { //如果没有闲置的,就加载预制创建 PipeGroup newPipeGroup = new PipeGroup(); pipeGroupPool.Add(newPipeGroup); Debug.Log("池中没有闲置管子,去创建管子"); newPipeGroup.GenratePipeGroup(RandomAdjustPipeGroupPos()); count++; return(newPipeGroup); } else { Debug.Log("池中有闲置管子,初始化位置即可"); pipeGroup.GenratePipeGroup(RandomAdjustPipeGroupPos()); return(pipeGroup); } }
public bool Contains(PipeGroup anotherGroup) { var longOne = this; var shortOne = anotherGroup; int j = 0; for (int i = 0; i < shortOne.Count(); i++) { var cur = shortOne[i]; for (; j < longOne.Count(); j++) { if (longOne[j] == cur) { break; } } if (j == longOne.Count()) { return(false); } } return(true); }