Exemplo n.º 1
0
        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;
            }
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
    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);
        }
    }
Exemplo n.º 4
0
            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);
            }